スポンサードリンク



MySQL SELECT文でレコードを検索する。

データベースはデータを蓄積するだけでは意味がありません。本来MySQLのようなデータベースを使う目的は、日々膨大に蓄積されていくデータからいろいろな情報を得るためです。

膨大なデータから欲しい情報を得るのが検索です。検索するときは生のデータをそのまま表示するのではなく、抽出条件を指定して絞り込んだり加工します。

検索には「SELECT文」を使い、抽出条件は「WHERE句」で指定します。データベースの検索に関する機能はとても強力ですが複雑ですので、初級では最も基本的な機能に専念して解説します。


今回MySQLに接続するユーザーは「pgtop」ですので、間違えないように気を付けてください。


【1】以下の図を参考にMySQLを開始・接続します。

1.コマンドプロンプトを起動します。
2.「net start mysql」と入力し、「Enterキー」を押します。
3.「mysql -u pgtop -p -b」と入力し、「Enterキー」を押します。
4.パスワードを求められるので「12345」入力し、「Enterキー」を押します。

mysql-114.gif

*「-b」オプションを付けて起動するとビープ音が出なくなります。


【2】以下のSQL文を入力し、使用するデータベースを選択します。

USE SampleDB040;
mysql-116.gif


【3】以下のSQL文を入力して実行してみましょう。これが最も基本的な SELECT 文です。テーブルが持つ全てのフィールドを指定しています。

SELECT PREF_CD,PREF_NAME FROM T01Prefecture;

mysql-193.gif

テーブルのデータを検索するSQL文の基本形
SELECT フィールド名 FROM テーブル名;

*フィールド名の部分は「,」(半角カンマ)で区切って複数指定することができます。


【4】以下のSQL文でもまったく同じ結果が表示されます。

SELECT * FROM T01Prefecture;

mysql-192.gif

*フィールド名に「*」(半角アスタリスク)を指定すると、すべてのフィールドを定義順に表示します。


【5】次は大文字と小文字の区別について確認します。以下の3つのSQL文をそれぞれ実行してみましょう。まったく同じ結果が表示されます。

SELECT * FROM T01Prefecture;
SELECT * FROM T01PREFECTURE;
select * from t01prefecture;

*WindowsではSQL文の大文字小文字は区別されません。ただしOSやコマンドの種類によっては区別されることもあります。


【6】フィールド名の順番を入れ替えると、表示も変わります。

SELECT PREF_NAME,PREF_CD FROM T01Prefecture;

mysql-182.gif


【7】検索結果はフィールドを指定して、昇順(ASC)や降順(DESC)で並べ替えることができます。以下は PREF_CD の降順で並べ替えた例です。沖縄県が最初に表示されています。

SELECT PREF_NAME,PREF_CD FROM T01Prefecture ORDER BY PREF_CD DESC;

mysql-195.gif

昇順の場合は省略できますが、正式には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;

mysql-183.gif


【9】SQL文は途中で改行することができます。「;」セミコロンまでが1つのSQL文です。

SELECT PREF_NAME,PREF_CD
FROM T01Prefecture
WHERE PREF_CD = 8;

mysql-184.gif

*単語の途中で改行することはできません。


【10】改行している部分は半角スペースを空けなくても実行できます。

SELECT PREF_NAME,PREF_CD
FROM T01Prefecture
WHERE PREF_CD = 8;

mysql-185.gif

*ただしプログラミング言語で文字列としてSQL文を作成する場合は、この半角スペースを入れていないために起こるエラーに悩まされることがよくあります。

SQL文がこのようにつながってしまうことが原因です。
SELECT PREF_NAME,PREF_CDFROM T01PrefectureWHERE PREF_CD = 8;


【11】次は抽出する範囲を指定してみましょう。

関東(東京、神奈川、埼玉、千葉、茨城、栃木、群馬、山梨)だけ抽出します。関東の PREF_CD を調べると 8~15 の範囲です。

mysql-186.gif

SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD >= 8 and PREF_CD <= 15;

mysql-187.gif

*論理演算子の「and」を使うと複数の抽出条件を指定できます。


【12】「BETWEEN」を使っても同じ結果になります。

SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD BETWEEN 8 AND 15;

mysql-188.gif


【13】「IN」を使うとカンマで区切ったリストと一致するレコードが抽出されます。

SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_CD IN (1, 8, 25);

mysql-194.gif


【14】文字列を抽出条件に使うときは「'」(シングルクォーテーション)で囲みます。

SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME = '東京都';

mysql-189.gif


【15】文字列を「"」(ダブルクォーテーション)で囲んでも同じ結果になります。。

SELECT PREF_CD,PREF_NAME
FROM T01Prefecture
WHERE PREF_NAME = "東京都";

mysql-191.gif


【16】以下の図を参考にMySQLを終了・停止します。

1.「exit」と入力し、「Enterキー」を押します。
2.「net stop mysql」と入力し、「Enterキー」を押します。

mysql-87.gif


【17】コマンドプロンプトは閉じてください。


実は WHERE句は SELECT文だけでなく、UPDATE文や DELETE文でも使われます。特定のレコードを一度に更新したり、削除するときには欠かすことができません。

また文字を使った抽出は少し複雑ですので、「あいまい検索」を使った例は次回に詳しく解説します。


スポンサードリンク






MySQL初心者入門講座TOPへ