SQL SELECT文でテーブルを検索するサンプル

目次

SQLのコメントの書き方

select * from employee -- コメント 
where id = '1'
/*
 コメント
*/
select * from employee 
where id = '1'

--は1行のコメントを書けます。
/* ~ */は、複数行のコメントが可能です。

 

全項目の全件を抽出(*)

select * from employee

アスタリスク(*)は全項目を意味します。
whereの条件がない場合は、全件が対象になります。

 

列を指定して抽出(射影)

select id,name from employee

列(id,name)を指定して列の値を抽出することを射影といいます。

 

列を指定して抽出(選択)

select * from employee
where id = '1'

行(id = '1')を指定して抽出することを選択といいます。

 

データの件数を取得(count) 

select count(*) from employee

データの件数を取得する場合はcountを使用します。

 

取得する列名に別名をつける(AS)

select id,name as "test-name" from employee
select id,name "test-name" from employee

別名を付ける場合は「as 名称」または「名称」(※asはつけない)を指定します。

id test-name
1 suzuki
2 tanaka
3 sato

 

文字列を結果として表示

select id, '12345' as "test-id" from employee

検索結果に固定の文字列(12345)がある列を追加することも可能です。

id test-id
1 12345
2 12345
3 12345

 

列の結果を結合する(||) 連結演算子

select id || name as test1 from employee
select 'test' || id || name as test2 from employee

列の結果を結合する場合はパイプ2つ(||)を付けます。文字列('test')の結合もできます。

※MySQLの場合は、set sql_mode='PIPES_AS_CONCAT' ;の指定が必要。

test1
1suzuki
2tanaka
3sato
test2
test1suzuki
test2tanaka
test3sato

 

条件の否定(<> / !=)

select * from employee
where id <> '2'

<>は否定です。

 

select * from employee
where id != '1'

Oracleの否定は!=です。

 

nullを検索する (IS NULL)

select * from employee
where romaji IS NULL

nullが対象になります。空文字,空白は対象になりません。

 

nullではない値を検索する(IS NOT NULL)

select * from employee
where romaji IS NOT NULL

nullでない値が対象になります。

 

重複行は表示しない(distinct)

select distinct name from employee

重複行は表示しません。nullの場合は、nullとして表示されます。
複数のnullがあった場合はnullでまとめられます。

 

複数の条件をORで指定する(IN演算子)

select * from employee
where romaji in ('suzuki','tanaka')

それぞれの条件を確認し、条件を満たした行が対象になります。OR演算子と同じ働きです。

 

IN演算子の否定 (not in)

select * from employee
where romaji not in ('suzuki','tanaka')

inの前にnotを指定します。

 

部分一致の検索をを行う(LIKE演算子)

select * from employee
where romaji like 'suzu%'

先頭がsuzuで始まる値を検索します。前方一致検索と呼ばれます。%は0文字以上の任意の文字列を表します。
like '%suzu%'とした場合、文字列にsuzuがあれば対象になります。あいまい検索または部分一致検索と呼ばれます。

 

LIKE演算子の否定 (not like)

select * from employee
where romaji not like 'suzu%'

likeの前にnotを指定します。

 

範囲検索を行う(BETWEEN演算子)

select * from employee
where id between 2 and 4;

idが2から4までを指定しています。IDの2,3,4を検索します。

 

BETWEEN演算子の否定 (not between)

select * from employee
where id not between 2 and 4;

betweenの前にnotを指定します。

 

AかつB 論理積(AND演算子)

select * from employee
where name='田中' and romaji = 'tanaka'

両方とも条件を満たした行が対象になります。

 

AまたはB 論理和(OR演算子)

select * from employee
where romaji = 'suzuki' or romaji = 'tanaka'

それぞれの条件を確認し、条件を満たした行が対象になります。

 

Aでない 否定(NOT演算子)

select * from employee
where not romaji = 'suzuki'

条件を満たした行以外の行が対象になります。

 

列の値を計算する(四則演算)

select price + 10, price - 10, price * 10 , price / 10 from sales

四則演算(足し算、引き算、掛け算、割り算)ができます。
nullを足すと結果はnullになります。例:1 + null = null

 

選択された行をまとめて列の値を算出する(集約関数)

SELECT SUM(price),AVG(price),MAX(price),MIN(price) 
FROM syouhin;

以下は集約関数です。

SUM(合計を返す),AVG(平均を返す),MAX(最大値を返す),MIN(最小値を返す)

関連の記事

SQL in句 複数の値を条件にする
SQL like 前方一致、あいまい検索、エスケープ

△上に戻る