MariaDBかMySQLでSELECTステートメント色々 - その1
この記事で使用しているソフトウェア環境は、OSとしてDebian GNU/Linux 10を使用し、その公式リポジトリからMariaDBというデータベースをインストールしてある。
$ cat /etc/os-release
PRETTY_NAME="Debian GNU/Linux 10 (buster)"
...
$ mariadb --version
mariadb Ver 15.1 Distrib 10.3.27-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2
しかし、記事内容のほとんどはSQLに関するものであり、オペレーティング・システムの環境には依存しないはず。
データを選び出すSELECT構文
SELECT構文はその名のとおり、1つまたは2つ以上のデータベース・テーブルからデータを選択して取得するために用いることができる。FROM句ではその対象とするテーブル名を1つまたは2つ以上指定することができる。
SELECT構文のもっとも単純な形式は次のようになる。
SELECT レコード名1,レコード名2,...
FROM テーブル名1,テーブル名2,...;
SELECT構文はSQLなので構文の終わりに文末を示す;(セミコロン)が必要。
多くの場合、テーブル全体を選択するためにレコード名の代わりに*(アスタリスク)が用いられている。
SELECT * FROM テーブル名;
レコードを絞り込んで選ぶにはWHERE句に条件式を指定する。
SELECT レコード名1,レコード名2,...
FROM テーブル名1,テーブル名2,...
WHERE 条件式;
等価演算子
もっとも単純な条件式は「レコード名 = 値」のようなものになる。*(アスタリスク)は全てを意味する。SELECT *は全ての列(レコード)。
SELECT *
FROM テーブル名
WHERE レコード名 = 値;
=(イコール)は等価演算子と呼ばれている。値が数値型以外では'(一重引用符)で挟む必要がある。
MariaDB [mydatabase]> SELECT * FROM persons;
+----+-----------+-----------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+-----------+-----------+--------+------------+--------+--------+
| 1 | 足利 | 直美 | 女 | 1997-10-11 | 164.7 | 55 |
| 2 | 大岩 | 舞 | 女 | 2002-03-23 | 158.4 | 43.5 |
| 3 | 木下 | 誠一 | 男 | 1995-07-15 | 168.5 | 65.5 |
| 4 | 伊藤 | エリナ | 女 | 1996-09-29 | 162 | 50.5 |
| 5 | 野村 | 一樹 | 男 | 1999-05-20 | 172.5 | 68.7 |
| 6 | 山本 | 花梨 | 女 | 2005-12-03 | 158.8 | 42.5 |
| 7 | 小野田 | 真司 | 男 | 1988-11-12 | 165.5 | 64 |
| 8 | 的山 | 美麗 | 女 | 1985-07-02 | 164.5 | 50.5 |
| 9 | 桑村 | 涼 | 男 | 1993-03-18 | 165 | 60.3 |
| 10 | 新見 | 康隆 | 男 | 1989-06-30 | 177.6 | 70.6 |
| 11 | 山田 | 真理子 | 女 | 1991-01-03 | 155.8 | 40.8 |
| 12 | 田辺 | 春 | 男 | 2000-03-15 | 182 | 78.5 |
+----+-----------+-----------+--------+------------+--------+--------+
12 rows in set (0.000 sec)
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 性別 = '女';
+----+--------+-----------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+--------+-----------+--------+------------+--------+--------+
| 1 | 足利 | 直美 | 女 | 1997-10-11 | 164.7 | 55 |
| 2 | 大岩 | 舞 | 女 | 2002-03-23 | 158.4 | 43.5 |
| 4 | 伊藤 | エリナ | 女 | 1996-09-29 | 162 | 50.5 |
| 6 | 山本 | 花梨 | 女 | 2005-12-03 | 158.8 | 42.5 |
| 8 | 的山 | 美麗 | 女 | 1985-07-02 | 164.5 | 50.5 |
| 11 | 山田 | 真理子 | 女 | 1991-01-03 | 155.8 | 40.8 |
+----+--------+-----------+--------+------------+--------+--------+
6 rows in set (0.000 sec)
不等価演算子
WHERE句の条件式のところで=という演算子の代わりに!=もしくは<>という演算子を用いると、その値を除くという意味になる。これらは不等価演算子と呼ばれている。下の例では「性別が女に等しくない」という条件を表している。
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 性別 != '女';
+----+-----------+--------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+-----------+--------+--------+------------+--------+--------+
| 3 | 木下 | 誠一 | 男 | 1995-07-15 | 168.5 | 65.5 |
| 5 | 野村 | 一樹 | 男 | 1999-05-20 | 172.5 | 68.7 |
| 7 | 小野田 | 真司 | 男 | 1988-11-12 | 165.5 | 64 |
| 9 | 桑村 | 涼 | 男 | 1993-03-18 | 165 | 60.3 |
| 10 | 新見 | 康隆 | 男 | 1989-06-30 | 177.6 | 70.6 |
| 12 | 田辺 | 春 | 男 | 2000-03-15 | 182 | 78.5 |
+----+-----------+--------+--------+------------+--------+--------+
6 rows in set (0.000 sec)
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 性別 <> '男';
+----+--------+-----------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+--------+-----------+--------+------------+--------+--------+
| 1 | 足利 | 直美 | 女 | 1997-10-11 | 164.7 | 55 |
| 2 | 大岩 | 舞 | 女 | 2002-03-23 | 158.4 | 43.5 |
| 4 | 伊藤 | エリナ | 女 | 1996-09-29 | 162 | 50.5 |
| 6 | 山本 | 花梨 | 女 | 2005-12-03 | 158.8 | 42.5 |
| 8 | 的山 | 美麗 | 女 | 1985-07-02 | 164.5 | 50.5 |
| 11 | 山田 | 真理子 | 女 | 1991-01-03 | 155.8 | 40.8 |
+----+--------+-----------+--------+------------+--------+--------+
6 rows in set (0.000 sec)
IN()函数とNOT IN()函数
等価演算子の=(イコール)の右辺を複数の値にしたい場合、等価演算子の代わりにIN()函数を用いることができる。下の例では、「名」として「舞」「エリナ」「真司」「春」を指定しているので、そのいずれかと一致する名を持つ列(レコード)が全て選び出されている。
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 名 IN('舞','エリナ','真司','春');
+----+-----------+-----------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+-----------+-----------+--------+------------+--------+--------+
| 2 | 大岩 | 舞 | 女 | 2002-03-23 | 158.4 | 43.5 |
| 4 | 伊藤 | エリナ | 女 | 1996-09-29 | 162 | 50.5 |
| 7 | 小野田 | 真司 | 男 | 1988-11-12 | 165.5 | 64 |
| 12 | 田辺 | 春 | 男 | 2000-03-15 | 182 | 78.5 |
+----+-----------+-----------+--------+------------+--------+--------+
4 rows in set (0.000 sec)
IN()函数の代わりにNOT IN()函数を用いるとその引数に指定した値を除くという条件になる。
MariaDB [mydatabase]> SELECT * FROM persons;
+----+-----------+-----------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+-----------+-----------+--------+------------+--------+--------+
| 1 | 足利 | 直美 | 女 | 1997-10-11 | 164.7 | 55 |
| 2 | 大岩 | 舞 | 女 | 2002-03-23 | 158.4 | 43.5 |
| 3 | 木下 | 誠一 | 男 | 1995-07-15 | 168.5 | 65.5 |
| 4 | 伊藤 | エリナ | 女 | 1996-09-29 | 162 | 50.5 |
| 5 | 野村 | 一樹 | 男 | 1999-05-20 | 172.5 | 68.7 |
| 6 | 山本 | 花梨 | 女 | 2005-12-03 | 158.8 | 42.5 |
| 7 | 小野田 | 真司 | 男 | 1988-11-12 | 165.5 | 64 |
| 8 | 的山 | 美麗 | 女 | 1985-07-02 | 164.5 | 50.5 |
| 9 | 桑村 | 涼 | 男 | 1993-03-18 | 165 | 60.3 |
| 10 | 新見 | 康隆 | 男 | 1989-06-30 | 177.6 | 70.6 |
| 11 | 山田 | 真理子 | 女 | 1991-01-03 | 155.8 | 40.8 |
| 12 | 田辺 | 春 | 男 | 2000-03-15 | 182 | 78.5 |
+----+-----------+-----------+--------+------------+--------+--------+
12 rows in set (0.000 sec)
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 姓 NOT IN('大岩','伊藤','山本','桑村','田辺');
+----+-----------+-----------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+-----------+-----------+--------+------------+--------+--------+
| 1 | 足利 | 直美 | 女 | 1997-10-11 | 164.7 | 55 |
| 3 | 木下 | 誠一 | 男 | 1995-07-15 | 168.5 | 65.5 |
| 5 | 野村 | 一樹 | 男 | 1999-05-20 | 172.5 | 68.7 |
| 7 | 小野田 | 真司 | 男 | 1988-11-12 | 165.5 | 64 |
| 8 | 的山 | 美麗 | 女 | 1985-07-02 | 164.5 | 50.5 |
| 10 | 新見 | 康隆 | 男 | 1989-06-30 | 177.6 | 70.6 |
| 11 | 山田 | 真理子 | 女 | 1991-01-03 | 155.8 | 40.8 |
+----+-----------+-----------+--------+------------+--------+--------+
7 rows in set (0.000 sec)
左不等価演算子と右不等価演算子
次の例ではWHERE句の条件式に小なり(<)/大なり(>)を利用している。<は左不等価演算子と呼ばれ、>は右不等価演算子と呼ばれている。
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 身長 < 165;
+----+--------+-----------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+--------+-----------+--------+------------+--------+--------+
| 1 | 足利 | 直美 | 女 | 1997-10-11 | 164.7 | 55 |
| 2 | 大岩 | 舞 | 女 | 2002-03-23 | 158.4 | 43.5 |
| 4 | 伊藤 | エリナ | 女 | 1996-09-29 | 162 | 50.5 |
| 6 | 山本 | 花梨 | 女 | 2005-12-03 | 158.8 | 42.5 |
| 8 | 的山 | 美麗 | 女 | 1985-07-02 | 164.5 | 50.5 |
| 11 | 山田 | 真理子 | 女 | 1991-01-03 | 155.8 | 40.8 |
+----+--------+-----------+--------+------------+--------+--------+
6 rows in set (0.000 sec)
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 生年月日 > '1999-12-31';
+----+--------+--------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+--------+--------+--------+------------+--------+--------+
| 2 | 大岩 | 舞 | 女 | 2002-03-23 | 158.4 | 43.5 |
| 6 | 山本 | 花梨 | 女 | 2005-12-03 | 158.8 | 42.5 |
| 12 | 田辺 | 春 | 男 | 2000-03-15 | 182 | 78.5 |
+----+--------+--------+--------+------------+--------+--------+
3 rows in set (0.000 sec)
以上演算子と以下演算子
<=(以下)または>=(以上)もある。前者は以下演算子、後者は以上演算子。
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 体重 >= 55;
+----+-----------+--------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+-----------+--------+--------+------------+--------+--------+
| 1 | 足利 | 直美 | 女 | 1997-10-11 | 164.7 | 55 |
| 3 | 木下 | 誠一 | 男 | 1995-07-15 | 168.5 | 65.5 |
| 5 | 野村 | 一樹 | 男 | 1999-05-20 | 172.5 | 68.7 |
| 7 | 小野田 | 真司 | 男 | 1988-11-12 | 165.5 | 64 |
| 9 | 桑村 | 涼 | 男 | 1993-03-18 | 165 | 60.3 |
| 10 | 新見 | 康隆 | 男 | 1989-06-30 | 177.6 | 70.6 |
| 12 | 田辺 | 春 | 男 | 2000-03-15 | 182 | 78.5 |
+----+-----------+--------+--------+------------+--------+--------+
7 rows in set (0.000 sec)
>= 55は55を含むので体重が55であるIDが1の名簿も選ばれている。
論理演算子
論理演算子としてANDまたは&&、ORまたは||、そしてXORがある。
次の例では、女であることと生年月日が2000-01-01以降であることを共に満たすことを条件にしている。
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 性別 = '女' AND 生年月日 >= '2000-01-01';
+----+--------+--------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+--------+--------+--------+------------+--------+--------+
| 2 | 大岩 | 舞 | 女 | 2002-03-23 | 158.4 | 43.5 |
| 6 | 山本 | 花梨 | 女 | 2005-12-03 | 158.8 | 42.5 |
+----+--------+--------+--------+------------+--------+--------+
2 rows in set (0.001 sec)
次の例では、身長が150より低いか、生年月日が1989-12-31以前か、いずれかを満たせばよいことを条件にしている。
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 身長 < 150 OR 生年月日 <= '1989-12-31';
+----+-----------+--------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+-----------+--------+--------+------------+--------+--------+
| 7 | 小野田 | 真司 | 男 | 1988-11-12 | 165.5 | 64 |
| 8 | 的山 | 美麗 | 女 | 1985-07-02 | 164.5 | 50.5 |
| 10 | 新見 | 康隆 | 男 | 1989-06-30 | 177.6 | 70.6 |
+----+-----------+--------+--------+------------+--------+--------+
3 rows in set (0.000 sec)
次の例では、男でかつ生年月日が1990-01-01以前でないか、生年月日が1990-01-01以前でかつ男でないか、いずれかを満たすことを条件にしている。
MariaDB [mydatabase]> SELECT * FROM persons
-> WHERE 性別 = '男' XOR 生年月日 < '1990-01-01';
+----+--------+--------+--------+------------+--------+--------+
| id | 姓 | 名 | 性別 | 生年月日 | 身長 | 体重 |
+----+--------+--------+--------+------------+--------+--------+
| 3 | 木下 | 誠一 | 男 | 1995-07-15 | 168.5 | 65.5 |
| 5 | 野村 | 一樹 | 男 | 1999-05-20 | 172.5 | 68.7 |
| 8 | 的山 | 美麗 | 女 | 1985-07-02 | 164.5 | 50.5 |
| 9 | 桑村 | 涼 | 男 | 1993-03-18 | 165 | 60.3 |
| 12 | 田辺 | 春 | 男 | 2000-03-15 | 182 | 78.5 |
+----+--------+--------+--------+------------+--------+--------+
5 rows in set (0.000 sec)
XORとは「XOR部分 = OR部分 - AND部分」に相当する。
特定の列(カラム)だけを選び出す
SELECTの後を*(アスタリスク)でなく具体的な列名にすれば、特定の列名だけを選んで出力することができる。
MariaDB [mydatabase]> SELECT 姓,名,性別,生年月日
-> FROM persons
-> WHERE 生年月日 < '2000-01-01'
-> AND 性別 = '男';
+-----------+--------+--------+------------+
| 姓 | 名 | 性別 | 生年月日 |
+-----------+--------+--------+------------+
| 木下 | 誠一 | 男 | 1995-07-15 |
| 野村 | 一樹 | 男 | 1999-05-20 |
| 小野田 | 真司 | 男 | 1988-11-12 |
| 桑村 | 涼 | 男 | 1993-03-18 |
| 新見 | 康隆 | 男 | 1989-06-30 |
+-----------+--------+--------+------------+
5 rows in set (0.000 sec)
BETWEEN...AND...演算子
ある区間を条件にしたいときにはBETWEEN演算子を用いる。次の例では、WHERE句に身長が160から170までの間を条件に指定している。
MariaDB [mydatabase]> SELECT 姓,名,身長
-> FROM persons
-> WHERE 身長
-> BETWEEN 160 AND 170;
+-----------+-----------+--------+
| 姓 | 名 | 身長 |
+-----------+-----------+--------+
| 足利 | 直美 | 164.7 |
| 木下 | 誠一 | 168.5 |
| 伊藤 | エリナ | 162 |
| 小野田 | 真司 | 165.5 |
| 的山 | 美麗 | 164.5 |
| 桑村 | 涼 | 165 |
+-----------+-----------+--------+
6 rows in set (0.000 sec)
並べ替え(ソート)
SELECT構文にORDER BY句と特定の列名を追加することにより、その列(カラム)を基準に行(レコード)を並べ替えて出力することができる。通常はその列の昇順に並べ替えが行われる。
次の例では、生年月日が古い順(昇順)に名簿を並べ替えている。
MariaDB [mydatabase]> SELECT 姓,名,生年月日
-> FROM persons
-> ORDER BY 生年月日;
+-----------+-----------+------------+
| 姓 | 名 | 生年月日 |
+-----------+-----------+------------+
| 的山 | 美麗 | 1985-07-02 |
| 小野田 | 真司 | 1988-11-12 |
| 新見 | 康隆 | 1989-06-30 |
| 山田 | 真理子 | 1991-01-03 |
| 桑村 | 涼 | 1993-03-18 |
| 木下 | 誠一 | 1995-07-15 |
| 伊藤 | エリナ | 1996-09-29 |
| 足利 | 直美 | 1997-10-11 |
| 野村 | 一樹 | 1999-05-20 |
| 田辺 | 春 | 2000-03-15 |
| 大岩 | 舞 | 2002-03-23 |
| 山本 | 花梨 | 2005-12-03 |
+-----------+-----------+------------+
12 rows in set (0.000 sec)
降順に並べ替えるにはORDER BY句の列名にDESCというキーワードを添える。
MariaDB [mydatabase]> SELECT 姓,名,生年月日
-> FROM persons
-> ORDER BY 生年月日DESC;
+-----------+-----------+------------+
| 姓 | 名 | 生年月日 |
+-----------+-----------+------------+
| 山本 | 花梨 | 2005-12-03 |
| 大岩 | 舞 | 2002-03-23 |
| 田辺 | 春 | 2000-03-15 |
| 野村 | 一樹 | 1999-05-20 |
| 足利 | 直美 | 1997-10-11 |
| 伊藤 | エリナ | 1996-09-29 |
| 木下 | 誠一 | 1995-07-15 |
| 桑村 | 涼 | 1993-03-18 |
| 山田 | 真理子 | 1991-01-03 |
| 新見 | 康隆 | 1989-06-30 |
| 小野田 | 真司 | 1988-11-12 |
| 的山 | 美麗 | 1985-07-02 |
+-----------+-----------+------------+
12 rows in set (0.000 sec)
出力行数を制限する
SELECT構文にLIMIT句を設けることにより、出力される行数(レコード数)を制限することができる。
次の例では、出力行数を20行までとしている。ORDER BY句には総人口の値を指定しているので、昇順、つまり総人口が少ない順に20位まで都道府県が出力される。ただし2019年の時点の値。
MariaDB [mydatabase]> SELECT 男女別,人口,全国都道府県,
-> 時間軸(年),value
-> FROM popu_jp
-> WHERE 時間軸(年) = '2019年'
-> AND 人口 = '総人口'
-> AND 男女別 = '男女計'
-> ORDER BY value
-> LIMIT 20;
+-----------+-----------+--------------------+--------------------+-------+
| 男女別 | 人口 | 全国都道府県 | 時間軸(年) | value |
+-----------+-----------+--------------------+--------------------+-------+
| 男女計 | 総人口 | 鳥取県 | 2019年 | 556 |
| 男女計 | 総人口 | 島根県 | 2019年 | 674 |
| 男女計 | 総人口 | 高知県 | 2019年 | 698 |
| 男女計 | 総人口 | 徳島県 | 2019年 | 728 |
| 男女計 | 総人口 | 福井県 | 2019年 | 768 |
| 男女計 | 総人口 | 山梨県 | 2019年 | 811 |
| 男女計 | 総人口 | 佐賀県 | 2019年 | 815 |
| 男女計 | 総人口 | 和歌山県 | 2019年 | 925 |
| 男女計 | 総人口 | 香川県 | 2019年 | 956 |
| 男女計 | 総人口 | 秋田県 | 2019年 | 966 |
| 男女計 | 総人口 | 富山県 | 2019年 | 1044 |
| 男女計 | 総人口 | 宮崎県 | 2019年 | 1073 |
| 男女計 | 総人口 | 山形県 | 2019年 | 1078 |
| 男女計 | 総人口 | 大分県 | 2019年 | 1135 |
| 男女計 | 総人口 | 石川県 | 2019年 | 1138 |
| 男女計 | 総人口 | 岩手県 | 2019年 | 1227 |
| 男女計 | 総人口 | 青森県 | 2019年 | 1246 |
| 男女計 | 総人口 | 長崎県 | 2019年 | 1327 |
| 男女計 | 総人口 | 奈良県 | 2019年 | 1330 |
| 男女計 | 総人口 | 愛媛県 | 2019年 | 1339 |
+-----------+-----------+--------------------+--------------------+-------+
20 rows in set (0.016 sec)
都道府県の総人口のデータセットは、政府統計のポータルサイトe-Statから借りている。出典は「人口推計 / 2019年10月1日現在」の「都道府県,男女別人口-総人口,日本人人口」。
次の例では、総人口の多い都道府県の順(降順)に10位から30位までを出力している。LIMIT句に10,30と指定することによってそれを実現できる。
MariaDB [mydatabase]> SELECT 男女別,人口,全国都道府県,
-> 時間軸(年),value
-> FROM popu_jp
-> WHERE 時間軸(年) = '2019年'
-> AND 人口 = '総人口'
-> AND 男女別 = '男女計'
-> ORDER BY value DESC
-> LIMIT 10,30;
+-----------+-----------+--------------------+--------------------+-------+
| 男女別 | 人口 | 全国都道府県 | 時間軸(年) | value |
+-----------+-----------+--------------------+--------------------+-------+
| 男女計 | 総人口 | 静岡県 | 2019年 | 3644 |
| 男女計 | 総人口 | 茨城県 | 2019年 | 2860 |
| 男女計 | 総人口 | 広島県 | 2019年 | 2804 |
| 男女計 | 総人口 | 京都府 | 2019年 | 2583 |
| 男女計 | 総人口 | 宮城県 | 2019年 | 2306 |
| 男女計 | 総人口 | 新潟県 | 2019年 | 2223 |
| 男女計 | 総人口 | 長野県 | 2019年 | 2049 |
| 男女計 | 総人口 | 岐阜県 | 2019年 | 1987 |
| 男女計 | 総人口 | 群馬県 | 2019年 | 1942 |
| 男女計 | 総人口 | 栃木県 | 2019年 | 1934 |
| 男女計 | 総人口 | 岡山県 | 2019年 | 1890 |
| 男女計 | 総人口 | 福島県 | 2019年 | 1846 |
| 男女計 | 総人口 | 三重県 | 2019年 | 1781 |
| 男女計 | 総人口 | 熊本県 | 2019年 | 1748 |
| 男女計 | 総人口 | 鹿児島県 | 2019年 | 1602 |
| 男女計 | 総人口 | 沖縄県 | 2019年 | 1453 |
| 男女計 | 総人口 | 滋賀県 | 2019年 | 1414 |
| 男女計 | 総人口 | 山口県 | 2019年 | 1358 |
| 男女計 | 総人口 | 愛媛県 | 2019年 | 1339 |
| 男女計 | 総人口 | 奈良県 | 2019年 | 1330 |
| 男女計 | 総人口 | 長崎県 | 2019年 | 1327 |
| 男女計 | 総人口 | 青森県 | 2019年 | 1246 |
| 男女計 | 総人口 | 岩手県 | 2019年 | 1227 |
| 男女計 | 総人口 | 石川県 | 2019年 | 1138 |
| 男女計 | 総人口 | 大分県 | 2019年 | 1135 |
| 男女計 | 総人口 | 山形県 | 2019年 | 1078 |
| 男女計 | 総人口 | 宮崎県 | 2019年 | 1073 |
| 男女計 | 総人口 | 富山県 | 2019年 | 1044 |
| 男女計 | 総人口 | 秋田県 | 2019年 | 966 |
| 男女計 | 総人口 | 香川県 | 2019年 | 956 |
+-----------+-----------+--------------------+--------------------+-------+
30 rows in set (0.001 sec)
今回はここまで。
まとめ
- SELECT構文の基本
- SELECT 列名 FROM テーブル名;
- SELECT 列名1,列名2,... FROM テーブル名1,テーブル名2,...;
- 例えば列名にワイルドカードとして*(アスタリスク)を用いると、全ての列が選択される。この用法はもっとも多く用いられている。
- SELECT * FROM テーブル名;
- 条件句を設ける
- SELECT 列名 FROM テーブル名 WHERE 列名 = 値;
- 値が数値型以外の場合は'(一重引用符)で挟む必要がある。
- SELECT 列名 FROM テーブル名 WHERE 列名 = '値';
- !(感嘆符)によって等価演算子=を否定することができる。
- SELECT 列名 FROM テーブル名 WHERE 列名 != '値';
- 「列名 = 複数の値」を指定したいとき
- 等価演算子の代わりにIN()函数を使う。
- SELECT 列名 FROM テーブル名 WHERE 列名 IN(値1,値2,...);
- NOT IN()函数を用いると「それらを除く」という条件を指定できる。
- SELECT 列名 FROM テーブル名 WHERE 列名 NOT IN(値1,値2,...);
- 条件式に比較演算子を使うことができる
- SELECT 列名 FROM テーブル名 WHERE 列名 > 値;
- SELECT 列名 FROM テーブル名 WHERE 列名 < 値;
- >=は以上を意味し、<=は以下を意味する。
- SELECT 列名 FROM テーブル名 WHERE 列名 >= 値;
- SELECT 列名 FROM テーブル名 WHERE 列名 <= 値;
- 条件式は論理演算子を使って複数指定可能
- SELECT 列名 FROM テーブル名 WHERE 条件1 AND 条件2 AND ...;
- SELECT 列名 FROM テーブル名 WHERE 条件1 OR 条件2 OR ...;
- SELECT 列名 FROM テーブル名 WHERE 条件1 AND 条件2 OR ...;
- XOR演算子は排他的なOR演算子。ORの集合からANDの集合を差し引いた残りがXORの集合になる。XOR = OR - AND。
- SELECT 列名 FROM テーブル名 WHERE 条件1 XOR 条件2;
- ある値から別の値までを条件式にする
- SELECT 列名 FROM テーブル名 WHERE BETWEEN 値1 AND 値2;
- 特定の列に基づく行(レコード)の並べ替え(昇順)
- SELECT 列名 FROM テーブル名 ORDER BY 列名;
- 特定の列に基づく行(レコード)の並べ替え(降順)
- SELECT 列名 FROM テーブル名 ORDER BY 列名 DESC;
- 出力行数を制限する
- SELECT 列名 FROM テーブル名 LIMIT 最大行数;
- カンマで区切って2つ数値を並べると「何行目から何行目まで」という意味になる。
- SELECT 列名 FROM テーブル名 LIMIT 行目1, 行目2;
コメント
コメントを投稿