社内se × プログラマ × ビッグデータ

プログラミングなどITに興味があります。

MySQL select 文いろいろ

基本的な select

mysql> select * from city limit 10;
+----+----------------+-------------+---------------+------------+
| ID | Name           | CountryCode | District      | Population |
+----+----------------+-------------+---------------+------------+
|  1 | Kabul          | AFG         | Kabol         |    1780000 |
|  2 | Qandahar       | AFG         | Qandahar      |     237500 |
|  3 | Herat          | AFG         | Herat         |     186800 |
|  4 | Mazar-e-Sharif | AFG         | Balkh         |     127800 |
|  5 | Amsterdam      | NLD         | Noord-Holland |     731200 |
|  6 | Rotterdam      | NLD         | Zuid-Holland  |     593321 |
|  7 | Haag           | NLD         | Zuid-Holland  |     440900 |
|  8 | Utrecht        | NLD         | Utrecht       |     234323 |
|  9 | Eindhoven      | NLD         | Noord-Brabant |     201843 |
| 10 | Tilburg        | NLD         | Noord-Brabant |     193238 |
+----+----------------+-------------+---------------+------------+
10 rows in set (0.00 sec)

select (リテラル、ビルトイン関数)

mysql> select ID, 'Hello', Population * 2, LOWER(District) from city limit 10;
+----+-------+----------------+-----------------+
| ID | Hello | Population * 2 | LOWER(District) |
+----+-------+----------------+-----------------+
|  1 | Hello |        3560000 | kabol           |
|  2 | Hello |         475000 | qandahar        |
|  3 | Hello |         373600 | herat           |
|  4 | Hello |         255600 | balkh           |
|  5 | Hello |        1462400 | noord-holland   |
|  6 | Hello |        1186642 | zuid-holland    |
|  7 | Hello |         881800 | zuid-holland    |
|  8 | Hello |         468646 | utrecht         |
|  9 | Hello |         403686 | noord-brabant   |
| 10 | Hello |         386476 | noord-brabant   |
+----+-------+----------------+-----------------+
10 rows in set (0.00 sec)

テーブルからデータを取得しない select

mysql> select version(), user(), database();
+-----------+----------------+------------+
| version() | user()         | database() |
+-----------+----------------+------------+
| 5.7.34    | root@localhost | world      |
+-----------+----------------+------------+
1 row in set (0.00 sec)

エイリアスをつける

mysql> select ID, 'Hello' greet, Population * 2 double_population, LOWER(District) district_lower from city limit 10;
+----+-------+-------------------+----------------+
| ID | greet | double_population | district_lower |
+----+-------+-------------------+----------------+
|  1 | Hello |           3560000 | kabol          |
|  2 | Hello |            475000 | qandahar       |
|  3 | Hello |            373600 | herat          |
|  4 | Hello |            255600 | balkh          |
|  5 | Hello |           1462400 | noord-holland  |
|  6 | Hello |           1186642 | zuid-holland   |
|  7 | Hello |            881800 | zuid-holland   |
|  8 | Hello |            468646 | utrecht        |
|  9 | Hello |            403686 | noord-brabant  |
| 10 | Hello |            386476 | noord-brabant  |
+----+-------+-------------------+----------------+
10 rows in set (0.00 sec)

重複の削除
いくつか重複しているcountryCodeに対して

mysql> select countryCode from city limit 10;
+-------------+
| countryCode |
+-------------+
| ABW         |
| AFG         |
| AFG         |
| AFG         |
| AFG         |
| AGO         |
| AGO         |
| AGO         |
| AGO         |
| AGO         |
+-------------+
10 rows in set (0.00 sec)


distinct で重複を削除

mysql> select distinct countryCode from city limit 10;
+-------------+
| countryCode |
+-------------+
| ABW         |
| AFG         |
| AGO         |
| AIA         |
| ALB         |
| AND         |
| ANT         |
| ARE         |
| ARG         |
| ARM         |
+-------------+
10 rows in set (0.00 sec)