ブログの説明

学校に通わないで学んだことを記しています。間違っているところが何かありましたらご指摘下さると幸いです。コメントに対する返信が遅れる可能性があります。その場合は申し訳ありません。

このブログではサイドバーに広告を表示しています。このブログ内の投稿記事を検索するには右上の拡大鏡のアイコンを、アーカイブやラベル付けから投稿記事を閲覧するには左上の三重線のアイコンをクリックして下さい。

数式の表示にはMathJaxを利用させていただいています。数式の表示のためにJavaScriptが有効である必要があります。そうでない場合、訳の分からないLatexのコードが表示されます。幾何学図形やチャートの表示にはHTML5 CanvasやGoogle Chartを使用しています。その表示のためにもJavaScriptが有効である必要があります。

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;

関連記事

コメント

このブログの人気の投稿

Visual Studio 2019にはC++のためのフォームデザイナーがない件

10の補数と9の補数と2の補数と1の補数

LibreOffice 6 Calcでフォーム(ダイアログ)を作成してマクロで表示