SQLクエリとは、データベースに対して発行するSQL文を指します。この記事ではSQLクエリのサンプルコードについてまとめています。
SQLクエリのサンプルコード集
代表的なSQLクエリのコードを見て行きましょう。
MySQLのサンプルデータベースEmployeesを使用しています。
SQL標準として定義された代表的なSQLは主要データベースエンジンで共通して使えますが、一部機能はデータベースエンジンごとに機能拡張されていて仕様がことなるケースがあります。
【関連記事】
▶SQLとはどういうもの? 独自拡張と標準SQLの大きな違いって、何?
create tableのサンプルコード
テーブルを作成するにはcreate tableを使います。下記の例は、create tableでemployees_copyテーブルを作成し、show columnsで作成したテーブルのカラム情報を確認しています。
※MySQLで実行
CREATE TABLE `employees_copy` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` varchar(16) NOT NULL, `gender` enum('M','F') NOT NULL, `hire_date` date NOT NULL, PRIMARY KEY (emp_no) ); Query OK, 0 rows affected, 1 warning (0.04 sec) mysql> show columns from employees_copy; +------------+---------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +------------+---------------+------+-----+---------+-------+ | emp_no | int | NO | PRI | NULL | | | birth_date | date | NO | | NULL | | | first_name | varchar(14) | NO | | NULL | | | last_name | varchar(16) | NO | | NULL | | | gender | enum('M','F') | NO | | NULL | | | hire_date | date | NO | | NULL | | +------------+---------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
【関連記事】
▶MySQLのcreate tableサンプルコード集 カラム定義を自動出力する方法は?
selectでデータベースから情報を抽出するサンプルコード
employees(社員)テーブルから条件付きで10件のデータを抽出するサンプルコードです。条件指定には等号、不等号による指定、ワイルドカード文字「%」を使ったあいまい指定が可能です。
select * from employees where emp_no < 20000 and first_name like 'A%' and gender = 'F' limit 10; +--------+------------+------------+--------------+--------+------------+ | emp_no | birth_date | first_name | last_name | gender | hire_date | +--------+------------+------------+--------------+--------+------------+ | 10006 | 1953-04-20 | Anneke | Preusig | F | 1989-06-02 | | 10059 | 1953-09-19 | Alejandro | McAlpine | F | 1991-06-26 | | 10094 | 1957-05-25 | Arumugam | Ossenbruggen | F | 1987-04-18 | | 10120 | 1960-03-26 | Armond | Fairtlough | F | 1996-07-06 | | 10145 | 1956-03-30 | Akemi | Esposito | F | 1987-08-01 | | 10154 | 1957-01-17 | Abdulah | Thibadeau | F | 1990-12-12 | | 10175 | 1960-01-11 | Aleksandar | Ananiadou | F | 1988-01-11 | | 10190 | 1964-12-11 | Arve | Fairtlough | F | 1986-06-23 | | 10206 | 1960-09-19 | Alassane | Iwayama | F | 1988-04-19 | | 10260 | 1961-07-14 | Alper | Suomi | F | 1991-04-13 | +--------+------------+------------+--------------+--------+------------+ 10 rows in set (0.00 sec)
【関連記事】
▶SQL select文のサンプル集 結合、ソート、別テーブル生成の記述方法は?
insertでテーブルにデータを挿入するサンプルコード
insertで新規にデータを挿入することが可能です。
以下の例では、以下をおこなっています。
- employeesテーブルと同じ構造のテーブルを作成
- employees_copyテーブルの件数を確認
- employees_copyテーブルに4件のデータを挿入
- employees_copyテーブルをselectして、挿入されたデータを確認
mysql> create table employees_copy like employees; Query OK, 0 rows affected (0.04 sec) mysql> select count(*) from employees_copy; +----------+ | count(*) | +----------+ | 0 | +----------+ 1 row in set (0.00 sec) INSERT `employees_copy`( `emp_no`, `birth_date`, `first_name`, `last_name`, `gender`, `hire_date` ) VALUES ( 4, '1982-01-01', 'Siro', 'Takahashi', 'M', '2003-07-01' ), ( 5, '1979-08-12', 'Yuji', 'Satoh', 'M', '2003-04-05' ), ( 6, '1981-12-05', 'Kyoko', 'Shimada', 'F', '2005-09-01' ), ( 7, '1975-03-15', 'Yuri', 'Ooishi', 'F', '2004-04-15' ); Query OK, 4 rows affected (0.10 sec) Records: 4 Duplicates: 0 Warnings: 0 mysql> select * from employees_copy; +--------+------------+------------+-----------+--------+------------+ | emp_no | birth_date | first_name | last_name | gender | hire_date | +--------+------------+------------+-----------+--------+------------+ | 4 | 1982-01-01 | Siro | Takahashi | M | 2003-07-01 | | 5 | 1979-08-12 | Yuji | Satoh | M | 2003-04-05 | | 6 | 1981-12-05 | Kyoko | Shimada | F | 2005-09-01 | | 7 | 1975-03-15 | Yuri | Ooishi | F | 2004-04-15 | +--------+------------+------------+-----------+--------+------------+ 4 rows in set (0.00 sec)
【関連記事】
▶MySQL Insert サンプルコード集 一文で一括挿入する方法とは?
まとめ
- SQLのクエリとは、データベースに対して発行するSQLコード
- クエリには例えば、create table、select、insertなどがある
- クエリの文法は、SQL標準として規定され、主要DBMSではある程度共通して使える