業務でほぼ週に1度は使用SQL文を叩いているのでまとめようと思い、メモ代わりに共有できたらなと思います。
データベース管理ソフト
データベースの管理はこれらの管理ソフトを使用するといいかと思います。
MacOSとWindowsで異なるので注意してください。
MacOSの方
Windowsの方
コマンド集
カラムの合計値
SUM
SUM関数を使用することで、列の値の合計値を求めることができます。
mysql> SELECT * FROM test_table2;
+------+-------+
| name | score |
+------+-------+
| 太郎 | 80 |
| 次郎 | 70 |
| 三郎 | 92 |
| 四郎 | 88 |
| 五郎 | 76 |
| 太郎 | 75 |
| 次郎 | 98 |
| 三郎 | 100 |
| 四郎 | 80 |
| 五郎 | 60 |
+------+-------+
10 rows in set (0.00 sec)
mysql> SELECT SUM( score ) FROM test_table2;
+--------------+
| SUM( score ) |
+--------------+
| 819 |
+--------------+
1 row in set (0.01 sec)
条件検索の設定
WHERE
SELECT文では指定したテーブル(FROM句)に対して、検索条件(WHERE句)にマッチするレコード(行)の指定フィールド(列)を表示します。SELECTに続くのは列名、と覚えましょう。
mysql> SELECT title, price FROM book_list
-> WHERE
-> author = 'auth_A';
+--------+-------+
| title | price |
+--------+-------+
| book_A | 1500 |
| book_G | 400 |
+--------+-------+
テーブル結合
DBからデータを取り出す際、複数テーブルからデータを検索して取得するといったケースも多々あるかと思います。
内部結合と外部結合
まず、2つのテーブルを結合する方法として、大きく内部結合と外部結合というものが存在しています。
内部結合は、それぞれのテーブルの指定したカラムの値が一致するものだけを結合します。
外部結合は、内部結合のようにそれぞれのテーブルの指定したカラムの値が一致するものを結合するのに加え、どちらかのテーブルにしか存在しないものに関しても取得します。
INNER JOIN(内部結合)
JOINした2つのテーブルを比較し、結合条件に一致した行だけを返すことができます。
mysql> SELECT purchase.id_g, name FROM goods
-> INNER JOIN purchase ON purchase.id_g=goods.id_g;
+------+--------------------+
| id_g | name |
+------+--------------------+
| 1 | 饅頭 |
| 1 | 饅頭 |
| 1 | 饅頭 |
| 2 | みたらし団子 |
| 2 | みたらし団子 |
| 4 | 抹茶団子 |
+------+--------------------+
LEFT JOIN(外部結合)
JOINの左側のテーブルが結合条件に一致しなくてもレコードを返すことができます。
mysql> SELECT purchase.id_g,name FROM goods
-> LEFT OUTER JOIN purchase ON purchase.id_g=goods.id_g;
+------+--------------------+
| id_g | name |
+------+--------------------+
| 1 | 饅頭 |
| 1 | 饅頭 |
| 4 | 抹茶団子 |
| 2 | みたらし団子 |
| 1 | 饅頭 |
| 2 | みたらし団子 |
| NULL | 八つ橋 |
+------+--------------------+
RIGHT JOIN(外部結合)
JOINの右側のテーブルが結合条件に一致しなくてもレコードを返すことができます。
mysql> SELECT purchase.id_g,name FROM goods
-> RIGHT JOIN purchase ON purchase.id_g=goods.id_g;
+------+--------------------+
| id_g | name |
+------+--------------------+
| 1 | 饅頭 |
| 1 | 饅頭 |
| 1 | 饅頭 |
| 2 | みたらし団子 |
| 2 | みたらし団子 |
| 4 | 抹茶団子 |
+------+--------------------+
データ結合
UNION
複数のSELECT文をまとめることが出来ます。
mysql> SELECT 1 AS NUM
-> UNION
-> SELECT 2 AS NUM;
+-----+
| NUM |
+-----+
| 1 |
| 2 |
+-----+