【試して覚える】SQLite で Select 文入門

当ページのリンクには広告が含まれています。

前回の記事では、SQLiteでSQLを覚えるために利用するツールについて解説しました。

いよいこ、今回から実際のSQL入門記事です。

SQLiteは簡易データベースですが、一般的なデータベースで使われているSQLと同じ記述が行えます。

今回ここで紹介するSelect文は、OracleやSQLServer、ProstgreSQL、MySQLにも使えますので、是非覚えて活用して下さい。

ちなみに、この記事ではこちらで公開しているツールの利用を前提としていますので、あらかじめダウンロードをお願いします。

Select文は奥が深く、数多くのオプションがあります。Selectについてもっと極めたい方は、是非次の記事も参考にしてください。

【試して覚える】SQLite で Select 文入門(副問い合わせ)
【試して覚える】SQLite で Select 文入門(Groupと集計関数)
【試して覚える】SQLite で Select 文入門(Oder by 並べ替え)
【試して覚える】SQLite で Select 文入門(テーブル結合)
目次

Select文とは

Select文はデータベースに対してデータを要求するための命令文で、基本中の基本です。
極めれば相当複雑なこともできますが、まずは第一歩として単純なものから覚えていきましょう。

Select文の基本構造は次の通りです。

Select カラム名1,カラム名2,・・・ from テーブル名 where 抽出条件

抽出したいカラムはカンマで区切りで列挙しますが、全てのカラムを抽出したい場合は、アスタリスク ‘*’ 文字を使って次の様に記述します。

Select * from テーブル名 where 条件式

実際に試していく前に1点だけ注意があります。これから入力して頂くSQL文は、各単語を半角スペースで区切っています。もし間違って全角スペースで区切るとエラーになるのでご注意ください。

実際にSelectしてみる

では、データベースにあらかじめ登録されている「商品マスタ」を全件検索してみましょう。

Select * from 商品マスタ

と入力し、実行ボタンをクリックして下さい。

実行したら、以下の内容が表示されたと思います。

ここまでは簡単ですね。では、「商品仕様」や「売上データ」についても、Select してみてみましょう。

抽出条件を指定する

次は抽出条件を指定してみます。抽出条件は select * from ~ の後に where 区を付けて、必要な条件を記述していきます。

select * from テーブル名 where 条件式1 論理演算子 条件式2 論理演算子 条件式3 ・・・

条件式は、「価格 > 1000」 や 「都道府県=’大阪府’」 などのように、カラム名と比較対象を比較演算子(不等号記号)で結びます。この時、比較対象が数値の場合はそのまま記述しますが、文字列の場合はシングルクォートで囲む必要があることを覚えておいて下さい。

論理演算子は、「価格 > 1000 and 都道府県= ‘大阪府’」や「都道府県= ’東京都’ or 都道府県= ‘大阪府’」などの様に、条件式の全てが満たされる必要があるか、いづれか1つだけ満たされれば良いかを指定するためのもので、and やor などのキーワードを使います。

条件が1つだけの場合

メーカーがSONYのものだけを抽出する場合、次のように記述します。

select * from 商品マスタ where メーカー = ‘SONY’

では、さっそく試してみましょう。

結果は次の様になると思います。

では、単価が4万円以下のものを抽出してみましょう。

select * from 商品マスタ where 単価 < 40000

答えは次の様になります。

条件が2つ以上(複数)の場合

では、2つの条件を満たすデータを抽出するには、どうすればいいでしょう?

例えば、メーカーが SONY で、単価が 4000未満のものを抽出する場合は次の様になります。

select * from 商品マスタ where メーカー = ‘SONY’ and 単価 < 4000

実際に実行すると、次の結果になります。

範囲を指定する場合

では、例えば単価が40,000円~80,000円(正確には、40,000円以上、80,000円以下)の範囲にあるデータのみ抽出する場合はどう書けばよいでしょう?

答えは次の様になります。

select * from 商品マスタ where 単価 >= 40000 and 単価 <= 80000

実行結果は次の通りです。

範囲を指定する記述は >、>=、<、<= という大なり小なり記号以外に

カラム名 between 開始値 and 終了値 
(⇒開始値 <=カラム名 and カラム名 <= 終了値 と同じ)

という記述が出来ます。

select * from 商品マスタ where 単価 between 40000 and 80000

と記述しても全く同じ答えになります。

良ければ試してみて下さい。

前方一致、後方一致、曖昧検索を行う場合

前方一致、後方一致、曖昧検索もよく使う検索方法です。いづれも like につづけて「検索パターン」を記述するのですが、この時ワイルドカードとして%文字を指定します。

前方一致、後方一致、曖昧検索は%の位置が異なるだけで、それ以外は全く同じ記述方法となります。

前方一致: select * from テーブル名 where カラム名 like ‘%文字列’
後方一致: select * from テーブル名 where カラム名 like ‘文字列’%’
曖昧検索: select * from テーブル名 where カラム名 like ‘%文字列’%’

では、メーカー名に “ON” という文字列が含まれているものだけを抽出してみます。

select * from 商品マスタ where メーカー like ‘%ON%’

答えは次の通りですが、実行結果にSONYとCANONの2つが含まれるようになりました。

では、試しに 製品名が Power から始まるものを抽出してみましょう。

select * from 商品マスタ where 製品名 like ‘Power%’

like は曖昧検索だけではありません。%を省略することでイコールで結んだ時と同じ完全一致の検索が行なえます。

カラム名 like ‘文字列’
(⇒カラム名 = ‘文字列’  と同じ)

抽出条件で使える演算子

ここまで簡単に説明してきましたが、抽出条件で使える演算子(比較演算子、論理演算子)を整理しておきましょう。

比較演算子意味記述例
大きいa > b
小さいa < b
等しいa = b
<>等しくないa <> b
like曖昧検索a like ‘あ%’ ⇒ 前方一致
a like ‘%あ’ ⇒ 後方一致
a like ‘%あ%’ ⇒ 部分一致
in羅列した値のいずれかと一致a in (b,c,d,e)
文字列の場合は (‘b’,’c’,’d’,’e’)
between 範囲指定a between b and c
is null値がNULLであるa is null

複数の条件式を指定したい場合は、条件式の間に and や or を記述します。

論理演算子意味記述例
and且つa and b
or又はa or b
not否定not a

NULLって何?

今は特に覚える必要はありませんので、読み飛ばして頂いて構いませんが、補足として説明しておきます。

データベースの世界では NULLという特別な値が存在します。
これは、値が何も入っていないという意味になります。

たとえば、次の実行結果を見てください。
工学ズームのカラムのところどころが空白になってますね。
タッチパネルに至っては全て空白です。

この様に何も入っていない状態のことをNULLと言います。

しかし、画面上が空白になっているからと言って、必ずそれがNULLとは言い切れません。
ややこしい話ですが、NULLはデータが何も入っていない状態です。

しかし、長さがゼロの文字列が入っていたとしても、やはり画面には表示されません

つまり、画面上空白に見えても、実際にデータがNULLなのか、長さゼロの文字列なのかが識別できません。

従って、一般的なデータ(長さゼロの文字列も含めて)と NULL を区別しており、NULLを抽出条件に指定する場合は、 is null とか is not null の様に記述するルールになっています。

この様に、NULLというデータはデータを扱う上で厄介なことが多いので、検索対象のカラムに対してNULLが入らないように工夫することが多いです。

まとめ

今回はSelect 文の基本について解説しました。

Select 文はかなり複雑な条件を記述できますが、それは応用編として別に記述したいと思います。

ここでは基本を十分理解できるように、色々とツールで試して頂ければと思います。

特に抽出条件の書き方は、select に限らず、データの更新(update) や削除(delete) でも使いますので、ここを押さえて頂ければ、update や delete はごくごく簡単に感じると思います。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次