データベース初心者必見!入門編その2〜データ検索のためのSQL文〜
2015/06/29
はじめに
今回は、入門編その1の続きでSQLを使用してデータベースの操作を行います。SQLの中でも、データベースに対して行うデータの検索について紹介いたします。
SQLについて
SQL(Structured Query Language)とは、リレーショナルデータベースにおいて、データの操作や定義を行うためのデータベース言語(問い合わせ言語)です。
SQL文は、英語の文法とよく似ています。英語では人に命令するときに動詞を先頭に持ってきて、その後に具体的な内容を述べます。SQL文も英語と同様に、まず目的となる操作に応じたキーワードを記述します。そのキーワードがSQLです。
データの検索(SELECT文)
テーブルのすべての列を問い合せる
データベースに対する操作の中で最も頻繁に行われるものがデータの検索です。データを検索する操作のことを問い合わせやクエリーと呼ぶこともあります。問い合わせとは、ひとつまたは複数のテーブルから条件に一致するデータを抽出することです。
ひとつのテーブルから全列を検索する構文は以下の通りです。
[text]SELECT * FROM テーブル名[/text]
テーブル名には、存在する任意のテーブルを指定することができます。 試しにデータベース入門その1で使用したemployeeテーブルから全列検索してみます。
[text]SELECT * FROM employee[/text]
実行結果
今回は、employeeテーブルのすべての列が表示されました。
英単語「Select」は日本語だと「選ぶ」です。そして、「*」は「すべての列」を意味しています。
すると、今回のSQLは「employeeテーブルから全ての列を選ぶ」と訳すとこができます。
列を指定して問い合わせる
今度は、目的の列のみが表示された結果を取得します。
[text]SELECT name FROM employee[/text]
実行結果
employeeテーブルの中から、「name」列だけを検索することができました。 SQLの詳細を説明します。
[text]SELECT 列名 FROM テーブル名[/text]
SELECTの後に任意の列名を指定することで、検索する列を指定します。全ての列名を検索するときには「*」を記述していた部分を変えるだけです。SELECTの後には列を指定するのですが、全列を指定するのは手間がかかるので「*」が全列を指定するという役割を果たしています。
では、複数列を指定するにはどうしたらいいのでしょうか。 複数列を指定して検索するには。列名をカンマ「,」で区切って記述します。 次のSQLを実行して下さい。
[text]SELECT name,age FROM employee[/text]
実行結果
employeeテーブルの中から2つの列を指定して検索することができました。 列名を「,」で区切ることで、さらに多くの列も任意に指定することができます。
DISTINCT演算子
先ほどのemployeeテーブルを下記のように少し変更します。
そして次のSQLを実行して下さい。
[text]SELECT depertment_number FROM employee[/text]
実行結果
empolyeeテーブルからdepertment_number列のみ指定して検索しました。 depertment_number列はデータの部署を登録するための列です。同じカテゴリに分類されるデータもありますので、結果では、オレンジ部のように値が重複しています。 このようなデータの重複を取り除いて問い合わせを行うためにはDISTINCT演算子があります。
[text]SELECT DISTINCT depertment_number FROM employee[/text]
実行結果
depertment_number列の値の重複を覗いて検索することができました。 DISTINCT演算子は列名のリスト全体に対する演算子なので。必ずSELECTの後に記述する必要があります。 また、DISTINCTの代わりにALL演算子を使うと、重複しに関係なく全てのデータが検索されます。(明示的にALLを記述しなくても全てのデータが検索されます。
最後に
今回は、データの検索について紹介いたしました。他にも、もっと条件を加え、さらにデータを絞るための操作もあります。 次回は、それについて紹介したいと思います。