膨大なデータから欲しい情報を得るのが検索です。検索するときは生のデータをそのまま表示するのではなく、抽出条件を指定して絞り込んだり加工します。
検索には「SELECT文」を使い、抽出条件は「WHERE句」で指定します。データベースの検索に関する機能はとても強力ですが複雑ですので、初級では最も基本的な機能に専念して解説します。
今回MySQLに接続するユーザーは「pgtop」ですので、間違えないように気を付けてください。
【1】以下の図を参考にMySQLを開始・接続します。
1.コマンドプロンプトを起動します。
2.「net start mysql」と入力し、「Enterキー」を押します。
3.「mysql -u pgtop -p -b」と入力し、「Enterキー」を押します。
4.パスワードを求められるので「12345」入力し、「Enterキー」を押します。
*「-b」オプションを付けて起動するとビープ音が出なくなります。
【2】以下のSQL文を入力し、使用するデータベースを選択します。
USE SampleDB040;
【3】以下のSQL文を入力して実行してみましょう。これが最も基本的な SELECT 文です。テーブルが持つ全てのフィールドを指定しています。
SELECT PREF_CD,PREF_NAME FROM T01Prefecture;
テーブルのデータを検索するSQL文の基本形
SELECT フィールド名 FROM テーブル名;
*フィールド名の部分は「,」(半角カンマ)で区切って複数指定することができます。
【4】以下のSQL文でもまったく同じ結果が表示されます。
SELECT * FROM T01Prefecture;
*フィールド名に「*」(半角アスタリスク)を指定すると、すべてのフィールドを定義順に表示します。
【5】次は大文字と小文字の区別について確認します。以下の3つのSQL文をそれぞれ実行してみましょう。まったく同じ結果が表示されます。
SELECT * FROM T01Prefecture;
SELECT * FROM T01PREFECTURE;
select * from t01prefecture;
*WindowsではSQL文の大文字小文字は区別されません。ただしOSやコマンドの種類によっては区別されることもあります。
【6】フィールド名の順番を入れ替えると、表示も変わります。
SELECT PREF_NAME,PREF_CD FROM T01Prefecture;
【7】検索結果はフィールドを指定して、昇順(ASC)や降順(DESC)で並べ替えることができます。以下は PREF_CD の降順で並べ替えた例です。沖縄県が最初に表示されています。
SELECT PREF_NAME,PREF_CD FROM T01Prefecture ORDER BY PREF_CD DESC;
昇順の場合は省略できますが、正式にはASCと書きます。
SELECT PREF_NAME,PREF_CD FROM T01Prefecture ORDER BY PREF_CD ASC;
【8】次は WHERE 句で抽出条件を指定して、特定のレコードだけ表示します。以下の例では「東京都」が表示されます。
SELECT PREF_NAME,PREF_CD FROM T01Prefecture WHERE PREF_CD = 8;
【9】SQL文は途中で改行することができます。「;」セミコロンまでが1つのSQL文です。
SELECT PREF_NAME,PREF_CD
FROM T01Prefecture
WHERE PREF_CD = 8;
*単語の途中で改行することはできません。
【10】改行している部分は半角スペースを空けなくても実行できます。
SELECT PREF_NAME,PREF_CD
FROM T01Prefecture
WHERE PREF_CD = 8;
*ただしプログラミング言語で文字列としてSQL文を作成する場合は、この半角スペースを入れていないために起こるエラーに悩まされることがよくあります。
SQL文がこのようにつながってしまうことが原因です。
SELECT PREF_NAME,PREF_CDFROM T01PrefectureWHERE PREF_CD = 8;
【11】次は抽出する範囲を指定してみましょう。
関東(東京、神奈川、埼玉、千葉、茨城、栃木、群馬、山梨)だけ抽出します。関東の PREF_CD を調べると 8~15 の範囲です。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD >= 8 and PREF_CD <= 15;
*論理演算子の「and」を使うと複数の抽出条件を指定できます。
【12】「BETWEEN」を使っても同じ結果になります。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD BETWEEN 8 AND 15;
【13】「IN」を使うとカンマで区切ったリストと一致するレコードが抽出されます。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD IN (1, 8, 25);
【14】文字列を抽出条件に使うときは「'」(シングルクォーテーション)で囲みます。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME = '東京都';
【15】文字列を「"」(ダブルクォーテーション)で囲んでも同じ結果になります。。
SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME = "東京都";
【16】以下の図を参考にMySQLを終了・停止します。
1.「exit」と入力し、「Enterキー」を押します。
2.「net stop mysql」と入力し、「Enterキー」を押します。
【17】コマンドプロンプトは閉じてください。
実は WHERE句は SELECT文だけでなく、UPDATE文や DELETE文でも使われます。特定のレコードを一度に更新したり、削除するときには欠かすことができません。
また文字を使った抽出は少し複雑ですので、「あいまい検索」を使った例は次回に詳しく解説します。