MySQL

【MySQL】 初心者向け・基本構文まとめ Part.2 【職業訓練校 / Webプログラマー養成科】

構文まとめ(初心者向け)

職業訓練校(Webプログラマー養成科)の授業で習ったMySQLの構文をまとめPart2です。

▽ 前回のPart1はこちらです。

【MySQL】 初心者向け・基本構文まとめ Part.1 【職業訓練校 / Webプログラマー養成科】 構文まとめ(初心者向け) 職業訓練校(Webプログラマー養成科)の授業で習ったMySQLの構文をまとめました。 「構文...


「構文」と「その後に表示される文章」を分けて、2つのボックスに書いています。

mysql> ここに構文を記入します。
ポイントとなるワードは大文字にしていますが、小文字でもOKです。

ここには、記入後に表示される文章が入ります
※現在レイアウトがズレているため、後日画像に変えます(たぶん)




1.使用するメンバー表(テーブル名:nogizaka)


nonamebirthaddress
1 白石 麻衣 1992-08-20 maiyan@passport.com
2 齋藤 飛鳥 1998-08-10 ashu@myanmar.com
3 秋元 真夏 1993-08-20 manattan@zukkyun.com
4 生田 絵梨花 1997-01-22 ikuta-gian@piano.com
5 橋本 奈々未 1993-02-20 773@yahho.com
6 西野 七瀬 1994-05-25 na-chan@doiya.com
7 堀 未央奈 1996-10-15 miona@valletta.com
8 山崎 怜奈 1997-05-21 renachi@quiz.com
9 北野 日奈子 1996-07-17 kii@hina.com
10 佐々木 琴子 1998-08-28 kotoko@gundam.com
11 与田 祐希 2000-05-05 yoda-chan@gonzo.com
12 山下 美月 1999-07-26 mizuki@xxx.com
13 田村 真佑 1999-01-12 mayu@xxx.com
14 嘉喜 遥香 2001-08-08 kakki@xxx.com
15 矢久保 美緒 2002-08-14 yakubo@yakisoba.pan


前回の記事で、database「idol」の中に、table「nogizaka」を作成しています。
「nogizaka」のフィールドには、「no」「name」「birth」「address」があります。



2.条件を指定して抽出する

2000年以降に生まれたメンバーを抽出する

mysql> SELECT * FROM nogizaka where birth >= ‘2000’;

メンバー表から、2000年以降に生まれたメンバーのみを抽出しています。

「2000」年も含まれるので、「>」ではなく「>=」になっています。


mysql> SELECT * FROM nogizaka where birth >= ‘1900-01-01’ and birth <= '1999/12/31';

1900年代生まれのメンバーを出したいときはこういう書き方もできます。
(または where < '2000'でもOK)




複数条件を指定する

mysql> SELECT * FROM nogizaka WHERE no IN (2,4,6);

番号が偶数(2,4,6)のメンバーを抽出しています。


mysql> SELECT * FROM nogizaka WHERE no NOT IN (2,4,6);

逆に「not in」にすると、番号が偶数(2,4,6)ではないメンバーを抽出されます。




betweenの使い方

mysql> SELECT * FROM nogizaka WHERE no BETWEEN 1 AND 5;;

no(ナンバー)が1以上5以下のメンバーを抽出しています。

betweenは「以上」「以下」の意味で使っているので、未満の場合には使用できません。




3.ワイルドカードを使う


部分一致

mysql> SELECT * FROM nogizaka WHERE name LIKE ‘%田%’;

名前に「田」のつくメンバーを抽出しています。

%はワイルドカードになります。
「田」の前後には文字が入っても入らなくてもOKでなので、「田村 真佑」も抽出されます。




前方一致

mysql> SELECT * FROM nogizaka WHERE birth LIKE ‘19%’;

フィールド名「birth」で、「19」から始まるデータを抽出しています。
ここでは1900年代生まれのメンバーを抽出できます。




後方一致

mysql> SELECT * FROM nogizaka WHERE name LIKE ‘%子’;

名前の最後に「子」の付くのメンバーを抽出しています。
メンバー表の「name」から「北野 日奈子」、「佐々木琴子」が抽出されます。




ワイルドカードについて

% 任意の0文字以上の文字列
_ 任意の1文字

▽ 【MySQL】ワイルドカードを使って あいまい検索する




4.いろいろな関数


Substring関数

mysql> SELECT * FROM nogizaka WHERE SUBSTRING(name, 2, 1) = ‘石’;

文字列の「指定した位置」から、「指定した文字数分」だけ取得する関数です。

この場合は、name(名前)の「2文字目」から「1文字分」が「石」のデータを抽出しています。
ここでは「白石麻衣」が抽出されます。


▽ SUBSTRING関数 (文字列の指定した位置から指定した文字数分だけ取得する)




Concat関数

mysql> SELECT CONCAT(“★”,name,”♪”) FROM nogizaka;

+――――――――――――――+
| CONCAT(“★”,name,”♪”)  |
+――――――――――――――+
| ★白石麻衣♪         |
| ★齋藤飛鳥♪         |
| ★秋元真夏♪         |
| ★生田絵梨花♪       |
| (以降省略)         |
+――――――――――――――+

複数の文字列を連結した文字列を取得する関数です。


▽ CONCAT関数 (複数の文字列を連結した文字列を取得する)




5.集約関数(sum,avg,min,max)


合計(SUM)

mysql> SELECT SUM(no) FROM nogizaka;

「no」の数値の合計を出しています。
SUMを使うとフィールドの合計値を計算することができます。




平均値(AVG)

mysql> SELECT AVG(no) FROM nogizaka;

noの平均値を求めています。
「GROUP BY」句と組み合わせると、グループ単位での平均値を取得することができます。

▽ AVG関数 (指定のカラムに格納されている値の平均値を取得する)




最小値(MIN) / 最大値(MAX)

mysql> SELECT MIN(no) FROM nogizaka;

noの最小値を求めています。


mysql> SELECT MAX(no) FROM nogizaka;

noの最大値を求めています。


▽ MAX関数 / MIN関数 (指定したカラムに格納されている値の最大値または最小値を取得する)