2 SQL入門(解説)
この章では、SQLの初歩的な事項について説明します。
2.1 リレーショナルデータベースとSQL
2.2 表の定義と削除
2.3 データの入力、検索、更新、削除
なお、SQLの詳しい使用方法については第3章で改めて説明することにします。
2.3 データの入力、検索、更新、削除
前節で作成したemployee表に対して、クラッド(CRUD: Create, Retrieve, Update, Delete)と呼ばれるデータの基本操作を行います。以下のSQL文がクラッドに対応します。
- INSERT文: 表にデータを追加する(行単位で追加する)
- SELECT文: 表のデータを検索する(列と行を指定できる)
- UPDATE文: 表のデータを更新する(列と行を指定できる)
- DELETE文: 表のデータを削除する(行単位で削除する)
INSERT文
INSERT文は、表に行単位でデータを追加します。基本的な形式は以下の通りです。
INSERT
INTO 表名 [(列リスト)]
VALUES (値リスト)[, ...]
- INTO句は、データを追加する表名と列名のリスト(列リスト)を指定します。列リストを省略した場合は、表に定義されているすべての列を指定したものとみなされます。
- VALUES句は、表に追加する1行分のデータのリスト(値リスト)を指定します。値リストと列リスト1対1対応である必要があります。すなわち、値リストの n 番目の値は、列リストの n 番目の列に格納されます。また、値リストは複数指定可能であり、1つのINSERT文で複数行をまとめて追加できます。
具体例として、employee表に1行追加するINSERT文を以下に示します。
INSERT INTO employee VALUES
(1, '佐藤未来', '総務部', '1960-07-08')
以下は、employee表に8行追加するINSERT文です。
INSERT INTO employee(id, name, section, birth) VALUES
(2, '鈴木薫', '技術本部', '1970-05-05'),
(3, '高橋光', '営業本部', '1980-03-02'),
(4, '田中飛鳥', '技術本部', '1985-01-29'),
(5, '伊藤歩', '営業本部', '1985-11-26'),
(6, '渡辺碧', '技術本部', '1987-09-23'),
(7, '山本涼', '営業本部', '1989-07-20'),
(8, '中村薫', '総務部', '1990-05-17'),
(9, '小林瑞樹', '技術本部', '1991-03-14')
SELECT文
SELECT文は、表からデータを検索します。基本的な形式は以下の通りです。
SELECT { 列リスト | * }
FROM 表名
[WHERE 検索条件]
- SELECT句は、検索結果として出力する列名等のリスト(列リスト)を指定します。列リストの代わりにアスタリスク(*)を書くと表中のすべての列を指定したものとみなされます。
- FROM句は、検索対象とする表名を指定します。
- WHERE句は、検索条件を指定します。検索条件は、列名、演算子(=, <, <=, >, >=, <>)、定数の組み合わせにより指定します。なお、演算子=は一致、<>は不一致を表します。複数の検索条件をAND, ORで連結することもできます。WHERE句を省略すると、すべての行が検索結果になります。
具体例として、employee表のすべてのデータを出力するSELECT文を以下に示します。
SELECT *
FROM employee
以下は、employee表から社員番号が 1 の社員の氏名と所属を出力するSELECT文です。
SELECT name, section
FROM employee
WHERE id = 1
以下は、employee表から所属が技術本部で社員番号が 5 以下の社員の社員番号、氏名、生年月日を出力するSELECT文です。
SELECT id, name, birth
FROM employee
WHERE section = '技術本部' AND id <= 5
UPDATE文
UPDATE文は、表のデータを更新します。基本的な形式は以下の通りです。
UPDATE 表名
SET 列名 = 値リスト[, ...]
[WHERE 検索条件]
- UPDATE句は、更新対象とする表名を指定します。
- SET句は、更新する列名と更新後の値に等号(=)を挟んで指定します。列名と値は複数指定可能です。SET句で指定されなかった列の値は更新されません。
- WHERE句は、更新条件を指定します。更新条件の指定方法はSELECT文の検索条件と同じで、条件に合致したすべての行が更新対象になります。また、WHERE句を省略するとすべての行が更新されます。
具体例として、employee表の所属が営業本部の社員を営業統括部所属に変更するUPDATE文を以下に示します。
UPDATE employee
SET section = '営業統括部'
WHERE section = '営業本部'
以下は、employee表の社員番号が 8 の社員の氏名を加藤薫に、生年月日を1990-05-24に変更するUPDATE文です。
UPDATE employee
SET name = '加藤薫', birth = '1990-05-24'
WHERE id = 8
DELETE文
DELETE文は、表のデータを削除します。基本的な形式は以下の通りです。
DELETE
FROM 表名
[WHERE 削除条件]
- FROM句は、削除対象とするテーブル名を指定します。
- WHERE句は、削除条件を指定します。条件の指定方法はSELECT文の検索条件と同じで、条件に合致したすべての行が削除対象になります。また、WHERE句を省略するとすべての行が削除されます。
具体例として、employee表の社員番号が 8 の社員を削除するDELETE文を以下に示します。
DELETE
FROM employee
WHERE id = 8
以下は、employee表からすべての社員の所属を削除するDELETE文です。
DELETE
FROM employee
特にDELETE文は、WHERE句を書き忘れると表の中のすべての行が削除されてしまうので注意が必要です。