1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

SQL命令の基本

1
Last updated at Posted at 2025-12-06

はじめに

本記事では、SQL命令を基本構文と具体例を挙げて説明します。
もし、間違っている内容があったり、改善点があればコメントいただけると幸いです。

追記・修正に伴い、それぞれの内容が独立した記事になる可能性があることをご了承ください。

SQL命令とは

SQL(Structured Query Language)を構成する、データベースを操作する具体的な処理を行うための命令(コマンド)群のことです。

SQL命令は、役割に応じて以下の3種類に分類されます。

  1. データ定義言語(DDL: Data Definition Language)
  2. データ操作言語(DML: Data Manipulation Language)
  3. データ制御言語(DCL: Data Control Language)

上記のSQL命令を順を追って説明していきます。

1. データ定義言語(DDL: Data Definition Language)

DDLは、データベースを構成するデータ構造(スキーマ)を定義、作成する言語です。
スキーマとは、データの論理的な構造の定義のことで、そこで定義されたテーブルやインデックス、ビューといった具体的なデータのことをオブジェクトと呼びます。

DDLには以下の4種類の命令があります。

  • CREATE(作成)
  • ALTER(変更)
  • DROP(削除)
  • TRUNCATE(テーブル内の全レコードを削除)

CREATE(作成)

基本構文
CREATE TABLE [テーブル名] ( [カラム定義], ... );
例 usersテーブルの作成
CREATE TABLE users (
    -- ユーザーID(主キー)
    id BIGINT UNSIGNED NOT_NULL PRIMARY KEY,

    -- ユーザー名
    name VARCHAR(255) NOT_NULL, 
    ...
);

ALTER(変更)

基本構文
ALTER TABLE [テーブル名] ADD [カラム定義]; 
usersテーブルにemailカラムを追加
ALTER TABLE users ADD COLUMN email VARCHAR(255) NOT_NULL UNIQUE;

DROP(削除)

基本構文
DROP TABLE [テーブル名];
usersテーブルの削除
DROP TABLE users;

TRUNCATE(テーブル内の全レコードを削除)

※truncate 切り詰める、切り捨てるという意味、DDLにおいてはテーブル内のデータを切り捨てる(一括削除)という意味になる

基本構文
TRUNCATE TABLE [テーブル名];
usersテーブルの全レコードを削除
TRUNCATE TABLE users;

2. データ操作言語(DML: Data Manipulation Language)

DDLで定義したデータに対して、操作を行うための言語です。
以下の4種類の命令があります。

  • SELECT(抽出)
  • INSERT(挿入)
  • UPDATE(更新)
  • DELETE(削除)

SELECTはSQL命令の中でも最も重要で複雑な命令です。SELECTについては個別に章を作成します。

SELECT(抽出)

基本構文
SELECT [カラム名] FROM [テーブル名] [条件句(WHERE句など)];
usersテーブルの全レコードを取得
SELECT * FROM users;

INSERT(挿入)

基本構文
INSERT INTO [テーブル名]([カラム1], ...) VALUES([1], ...);

カラムとカラムに対応する値の順番を一致させる(カラム1 = 値1)

usersテーブルに新しいレコードを挿入
INSERT INTO users(id, name, email, ...) VALUES(3, 'カズキ', test@example.com, ...);

UPDATE(更新)

基本構文
UPDATE [テーブル名] SET [カラム1 = 1], ... [条件句(WHERE句など)];
usersテーブルのidカラムの値が5のレコードを更新
UPDATE users SET name = 'タロウ', email = 'taro@taro.com', WHERE id = 5;

DELETE(削除)

基本構文
DELETE FROM [テーブル名] [条件句];
ユーザーIDが5のすべてのレコードを削除
DELETE FROM users WHERE id = 5;

user_idを外部キーに設定され「ON DELETE CASCADE」が定義されていると、指定のidを含むレコードがすべて削除される

3. データ制御言語(DCL: Data Control Language)

データベース内のデータへのアクセス権限を管理したり、一連のデータ変更処理を確定、破棄するための言語です。
SQLにおいて一連のデータ変更処理のことをトランザクションと呼びます。
以下はトランザクションの一例です。

Aさんの口座からBさんの口座に1万円を振り込む
-- Aさんの口座から1万円引き出す
UPDATE 口座 SET 残高 = 残高 - 10000 WHERE 口座番号 = Aさんの口座番号;

-- Bさんの口座に1万円入金する
UPDATE 口座 SET 残高 = 残高 + 10000 WHERE 口座番号 = Bさんの口座番号;

振込処理は「引き出し」と「入金」が必ずセットで行われなければ成立しません。
このように、トランザクションはそれ以上分割不可能な一連の処理という意味をもち、すべての命令が実行されるか、あるいは全く実行されないかのどちらかの結果となり、
途中で止まることはない性質(原子性)をもちます。

DCLの命令は以下の4種類です。

  • GRANT(ユーザーやロールへの権限の付与)
  • REVOKE(ユーザーやロールの権限の剥奪)
  • COMMIT(トランザクションの確定)
  • ROLLBACK(トランザクションの破棄)

GRANT(ユーザーやロールへの権限の付与)

基本構文
GRANT [権限1], ... ON [オブジェクト名] TO [ユーザー名1], ...;
usersテーブルの参照権限をユーザー1に付与
GRANT SELECT ON users TO user_1;

REVOKE(ユーザーやロールの権限の剥奪)

基本構文
REVOKE [権限1], ... ON [オブジェクト名] FROM [ユーザー名1],  ...;
ユーザー1からusersテーブルの参照権限を剥奪
REVOKE SELECT ON employees FROM user_1;

COMMIT(トランザクションの確定)

基本構文
COMMIT;

※COMMITは基本的にオプションはつけないが、DBMS(MySQLなど)ごとにオプションが用意されていることがある。

トランザクションの確定
-- データの更新(成功)

COMMIT;

ROLLBACK(トランザクションの破棄)

基本構文
ROLLBACK;
トランザクションの破棄
-- データの更新(失敗)

ROLLBACK;

参考文献

「これだけは押さえておきたい最短SQL入門」 松田達也 インプレス 2021年

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?