テーブルからデータを取得する様々な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;
詳細の記事は以下を参照
取得したデータをグループ化する(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~