【MYSQL】テーブルからデータを取得するselect文の構文一覧

MySQL

テーブルからデータを取得する様々なselect文の構文を一覧にしました

詳細については各ページを参照してください

select文の基本構文

select文の基本構文を紹介していきます。

構文

select カラム名 from テーブル名 where 条件;
  • カラム名・・・取得したいテーブルのカラム名を指定する。
  • テーブル名・・・データを取得したいテーブルを指定する
  • 条件・・・どのレコードを取得するかを指定する

select * from users where id = 1;

解説

usersテーブルからidが1のユーザー情報をすべて取得する。

詳細の記事は以下を参照

【SQL】データベースから情報を取得するselect文の使い方①~select~

【SQL】比較演算子で条件を指定して値を取得する~select where~

select文の構文まとめ

select文の一覧と詳細記事へのリンクを記載していきます。

演算子を利用してデータを取得する

構文

select カラム名 * 1.10 from テーブル名;
  • カラム名・・・演算したいカラム名を指定する。
  • テーブル名・・・データを取得したいテーブルを指定する

select 
name,
price,
price * 1.10
from products;

詳細の記事は以下を参照

【SQL】select文でカラム(列)を演算してデータを取得する

別名を付けてデータを取得する(select as)

構文

select カラム名1 as 別名1, カラム名2 as 別名2 from users;
  • 別名・・・取得するカラムの別名を指定する

select name as 名前, age as 年齢 from users;

詳細の記事は以下を参照

カラム(列)やテーブル(表)に別名を付けてデータを取得する~select as~

ワイルドカードを使ってあいまい検索をする(Likeなど)

構文

文字数の制限なし(%)

select カラム名 from テーブル名 where 検索するカラム名 like '%文字列';

1文字のみ(_)

select カラム名 from テーブル名 where 検索するカラム名 like '_文字列';
  • 検索するカラム名・・・あいまい検索をするカラム名を指定する
  • 文字列・・・検索する文字列を指定する

select カラム名 from テーブル名 where 検索するカラム名 like '%犬';

詳細の記事は以下を参照

ワイルドカードを使ってあいまい検索をする~パターンマッチング Like~

取得するデータの件数を指定する(Limit)

構文

select カラム名 from テーブル名 Limit 取得したい件数;
  • カラム名・・・取得するカラム名を指定
  • 取得したい件数・・・取得するレコード数を指定する

select * from users Limit 10;

詳細の記事は以下を参照

【SQL】データの取得件数を指定する方法~Limit~

取得したデータをグループ化する(group by)

構文

select グループ化するカラム名,
count(*) from users 
group by グループ化するカラム名;

select prefecture_id,
count(*) from users 
group by prefecture_id;

詳細の記事は以下を参照

SQLで取得したデータをグループ化する方法~select group by~

取得するデータを並び替える(order by)

構文

select カラム名 from テーブル名 order by 基準とするカラム名 asc(昇順)/desc(降順);
  • 基準とするカラム名・・・並び替えるの基準となるカラム名を指定する
  • asc/desc・・・昇順または降順を指定する

select * from products order by price desc;

詳細の記事は以下を参照

select文で取得するデータを並び替える方法~order by~

テーブルを内部結合する(inner join)

構文

select 取得するカラム名 from 
メインのテーブル名 
inner join 結合させるテーブル名 on 
メインテーブル名.外部キーとなるカラム名 = 結合テーブル名.主キーとなるカラム名;
  • 外部キーとなるカラム名・・・結合するテーブルと紐づくカラム名を指定
  • 主キーとなるカラム名・・・メインテーブルと紐づくカラム名を指定

usersテーブルとprefectureテーブルをidで紐づける

select users.id,last_name,name from 
users 
inner join prefecture on 
users.prefecture_id = prefecture.id;

詳細の記事は以下を参照

テーブルを内部結合してデータを取得する方法~inner join~

テーブルを外部結合する(outer join)

構文

select 取得するカラム名 from 
メインのテーブル名 
outer join 結合させるテーブル名 on 
メインテーブル名.外部キーとなるカラム名 = 結合テーブル名.主キーとなるカラム名;
  • 外部キーとなるカラム名・・・結合するテーブルと紐づくカラム名を指定
  • 主キーとなるカラム名・・・メインテーブルと紐づくカラム名を指定

usersテーブルとordersテーブルをidで紐づける

select * from users 
left outer join orders 
on users.id = orders.user_id;

詳細の記事は以下を参照

【SQL】内部結合と外部結合の違い~inner join outer join~

サブクエリ(副問合せ)で複雑な条件を指定する

構文

select カラム名 from テーブル名 
where カラム名 演算子 (
  select カラム名 from テーブル名 where 条件
);
  • 演算子・・・()内のselect文に一致(in)または不一致(not in)を指定する

2030年12月に購入履歴のないユーザーを取得する

select id,last_name from users
where id not in(
  select user_id from orders where extract(year_month from order_time)=203012
);

詳細の記事は以下を参照

【SQL】複雑な条件を指定ができるサブクエリの書き方~select where~

条件分岐でデータを取得する(case)

構文

case
  when 条件式 then 
  値
  when 条件式 then 
  値
else
  値
end

ユーザーの年齢が10歳以上なら’お年寄り’,5歳以上なら’中年’,それ以外は若者

分類したらそのカラム名を『 classification 』とする。

select id,last_name,age,
case 
when age>=10 then 'お年寄り' 
when age> 5 then '中年' 
else '若者' 
end  classification  
from users  order by age;

詳細の記事は以下を参照

条件分岐でデータを取得するSQLの書き方~select case~

条件分岐でNullを0に置き換える(case left outer join)

構文

case
  when 条件式 then 
  値
  when 条件式 then 
  値
else
  値
end

productsテーブルとorder_detailsテーブルを結合してNullとなっている行に0を代入する

select p.id,p.name,case 
   when 
     sum(od.quantity) is null then 0 
   else 
     sum(od.quantity) 
   end as quantity  
from products p 
   left outer join 
     order_details od 
   on 
     p.id = od.order_id 
   group by p.id;

詳細の記事は以下を参照

条件分岐でNullを0に置き換える方法~case left join~

MySQL構文一覧のまとめ

【MYSQL】集約関数を使用したselect文の構文一覧

【MYSQL】テーブル構造を変更する構文一覧~ALTER TABLE~

タイトルとURLをコピーしました