SQLの4大命令
はじめに
こんにちは。
プログラミング初心者wakinozaと申します。
勉強中に調べたことを記事にまとめています。
十分気をつけて執筆していますが、なにぶん初心者が書いた記事なので、理解が浅い点などあるかと思います。
間違い等あれば、指摘いただけると助かります。
記事を参考にされる方は、初心者の記事であることを念頭において、お読みいただけると幸いです。
記事のテーマ
- SQLを学習中で、学んだことをアウトプットしています
- この記事ではSQLの4大命令についてまとめていきます
目次
1. SQLとは
2. SELECT
3. UPDATE
4. DELETE
5. INSERT
1. SQLとは
検索や書き換え、分析などのデータ管理を目的として蓄積された情報を「データベース」と呼びます。
データベースの情報は、データベース管理システム(DBMS : database management system)と呼ばれるプログラムで管理されています。
実際にデータベースの情報を検索・書き換え・分析する場合は、DBMSに命令文を送信します。
この命令文の「SQL」といいます。
DBMSのうち、複数の表のデータを取り扱うものを特にRDMS(relational database management system)といいます。
RDMSは、商用のものから、オープンソースソフトウェアとしてインターネット上で無償で公開されているものまで、さまざまな製品を利用することができます。
製品によって、仕様やSQLの記述方法に違いはありますが、 基本的な構造や考え方は同じです。
この記事では、基本的にANSI(米国国家規格協会:
American National Standard Institute)とISO(国際標準化機構 : Organization for Standardization)で定められたSQLの標準構文に基づいて説明していきます。
各RDMSでの具体的な仕様やSQLの記述方法は、各製品のマニュアルを参照してください。
2. SELECT
SQLでよく使われるのが、SELECT, UPDATE, DELETE, INSERTの4大命令です。
この記事では、SELECTについて説明していきます。
SELECTの役割は、データベースに保存されている情報の表(テーブル)から 目的のデータを指定して取得することです。
基本構造は、以下の通りです。
SELECT 取得したい列名
FROM テーブル名
-- (WHERE修飾)
-- (その他の修飾)
「SELECT」という命令の後に取得したい列名を指定します。
「FROM」という命令の後に、取得したいデータが格納されているテーブル名を指定します。
SELECT文は、基本的に列単位の取得になります。より細やかにデータを取得したい場合は、WHERE修飾句で条件を追加します。
では、具体例で見ていきましょう。
テーブル名:商品テーブル
| 商品名 | 個数 | 価格 |
|---|---|---|
| 商品A | 10 | 500 |
| 商品B | 5 | 300 |
| 商品C | 15 | 2000 |
| 商品D | 20 | 1500 |
上のようなテーブルがデータベースに格納されているとします。
この商品テーブルから、商品名だけを取得したい場合は、SQLは以下になります。
SELECT 商品名
FROM 商品テーブル
上のSQL文を実行すると、以下の結果が取得できます。
| 商品名 |
|---|
| 商品A |
| 商品B |
| 商品C |
| 商品D |
SELECT文では複数の列名を指定することもできます。
この商品テーブルから、商品名と価格を取得したい場合は、SQLは以下になります。
SELECT 商品名, 価格
FROM 商品テーブル
上のSQL文を実行すると、以下の結果が取得できます。
| 商品名 | 価格 |
|---|---|
| 商品A | 500 |
| 商品B | 300 |
| 商品C | 2000 |
| 商品D | 1500 |
SELECT文で全てのデータを取得したい場合は、SELECT命令の後に「*(アスタリスク)」を指定します。
SELECT *
FROM 商品テーブル
上のSQLは、以下のSQLと同じ結果を取得します。
SELECT 商品名, 個数, 価格
FROM 商品テーブル
*(アスタリスク)による全列検索は、テーブルの全情報を取得したい場合に非常に便利です。
しかし、*とWHEREなど修飾句を併用した取得は、実際の開発環境では推奨されません。
その理由は、主に3つあります。
- DBサーバからクライアントに転送するデータが、不必要に大きくなってしまう
- データ量が大きくなるため、メモリやディスクが無駄遣いされる
- 後から列を追加した場合に、*での全列検索で取得される情報が知れず知らずに変更されてしまう
そのため、実際の開発では極力使用を避けるか、使う場合でも十分に検討した上で利用する必要があります。
3. UPDATE
UPDATE分の役割は、すでにテーブルに存在するデータを書き換えることです。
基本構造は、以下の通りです。
UPDATE テーブル名
SET 列名1 = 値1, 列名2 = 値2, 列名3 = 値3・・・
-- (WHERE修飾)
1行目のUPDATEの直後に、更新したいデータが格納されたテーブル名を記述します。
2行目のSET句に、更新したい列名とその列に書き込む値をイコール記号(=)で対応させて記述します。
この2行だけの命令分では、テーブルの全件が更新されます。
UPDATE 商品テーブル
SET 価格= 9999
例えば、上記のSQLを実行すると、結果は以下になります。
| 商品名 | 個数 | 価格 |
|---|---|---|
| 商品A | 10 | 9999 |
| 商品B | 5 | 9999 |
| 商品C | 15 | 9999 |
| 商品D | 20 | 9999 |
もし、特定の行だけを更新したい場合は、WHERE修飾句で更新したい行を指定します。
UPDATE 商品テーブル
SET 価格= 9999
WHERE 商品名 = '商品A'
変更したい行をWHERE修飾句で指定すると、結果は以下になります。
| 商品名 | 個数 | 価格 |
|---|---|---|
| 商品A | 10 | 9999 |
| 商品B | 5 | 300 |
| 商品C | 15 | 2000 |
| 商品D | 20 | 1500 |
4. DELETE
DELETE文の役割は、すでにテーブルに存在する行を削除することです。
基本構造は、以下の通りです。
DELETE
FROM テーブル名
-- (WHERE修飾句)
DELETE文では、列名を指定する必要がないため、1行目のDELETEの後ろには何も記述しません。
FROM句の後に、テーブル名を指定します。
DELETE FROM 商品テーブル
もし、上記のSQLを実行すると、テーブルの前データが消去されてしまいます。
特定の行だけを削除したい場合は、WHERE修飾句で更新したい行を指定します。
DELETE FROM 商品テーブル
WHERE 商品名 = '商品A'
5. INSERT
最後にINSERT文です。
INSERT文の役割は、テーブルに新しいデータを追加することです。
基本構造は、以下の通りです。
INSERT INTO テーブル名
(列名1, 列名2, 列名3・・・)
VALUES (値1, 値2, 値3・・・)
1行目のINSERT文には、INTOのキーワードに続けて、データを追加するテーブル名を記述します。
さらにテーブル名の後に、カッコで括ってデータを追加する列名を指定します。だたし、すべての列に値を追加する場合には、この列名指定は省略可能です。
3行目はVALUES句といい、前の行で指定した列名に対応する値を指定します。
INSERT INTO 商品テーブル
(商品名, 個数, 価格)
VALUES ('商品E', 2, 1000)
例えば、上記のSQLを実行すると、結果は以下になります。
| 商品名 | 個数 | 価格 |
|---|---|---|
| 商品A | 10 | 500 |
| 商品B | 5 | 300 |
| 商品C | 15 | 2000 |
| 商品D | 20 | 1500 |
| 商品E | 2 | 1000 |
テーブルの一番下に、INSERT文で追加したデータが格納されています。
記事は以上です。
最後までお読みいただき、ありがとうございました。
参考情報一覧
この記事は以下の情報を参考にして執筆しました。
- [スッキリわかるSQL入門 第3版]
- 【SQL】SQLの基本を覚える (最終更新 2021-02-14) (参照 2025-10-22)
- SQLのデータ型まとめ (最終更新 2019-06-16) (参照 2025-10-22)
- SELECT * の全取得は本当に遅いのか? (最終更新 2023-02-20) (参照 2025-10-22)
Discussion