SQLコマンド:DQL、DDL、DML、DCL、TCL(例付き)
⚡ スマートサマリー
SQLコマンドは、リレーショナルデータベースを管理する5つのサブ言語に分類されます。DDLは構造を定義し、DMLはデータを変更し、DCLはアクセスを制御し、TCLはトランザクションを管理し、DQLはデータを取得します。それぞれに独自のステートメントと構文があります。

SQLとは何ですか?
SQL は、リレーショナル データベース内のデータの取得と管理のために設計されたデータベース言語です。
SQL はデータベース管理の標準言語です。すべての RDBMS システムは次のようなものです MySQL、MSアクセス、 OracleSybase、Postgres、SQL Serverは、標準データベース言語としてSQLを使用しています。SQLプログラミング言語は、さまざまな操作に多様なコマンドを使用します。ここでは、SQLのDCL、TCL、DQL、DDL、DMLコマンドについて、例を交えながら解説します。
SQLを使用する理由
SQLを使用する重要な理由を以下に示します。
- ユーザーがデータにアクセスするのに役立ちます RDBMSシステム.
- それはデータの説明に役立ちます。
- これにより、データベース内のデータを定義し、その特定のデータを操作できるようになります。
- SQLコマンドを使用すると、データベースやテーブルを作成および削除できます。
- SQLを使うと、データベース内の関数を利用したり、ビューやストアドプロシージャを作成したりできます。
- テーブル、プロシージャ、ビューに権限を設定できます。
SQL の簡単な歴史
ここに重要なランドマークがあります SQLの歴史:
- 1970 – エドガー F. “テッド” コッド博士がデータベースのリレーショナル モデルについて説明しました。
- 1974年 – 構造化クエリ言語が登場。当初はSEQUELという名前だった。 IBM.
- 1979 年 Oracle 初の商用利用可能なSQLベースのデータベースをリリースした。 IBMSystem Rの研究プロトタイプ。
- 1986年 – ANSIは最初のSQL標準規格であるSQL-86を公表した。
- 1989年 – SQL-89が標準規格の最初の改訂版として登場した。
- 1992年 – SQL-92(SQL2)が主要なベースラインとなり、今日でもほとんどのデータベースで参照されている。
- 1999年 – SQL:1999(SQL3)がリリースされ、トリガー、再帰クエリ、オブジェクト指向などの機能が導入された。
- 2003年 – SQL:2003では、ウィンドウ関数、シーケンスジェネレータ、およびXML関連機能が追加されました。
- 2006年 – SQL:2006では、XMLクエリ言語(XQuery)のサポートが追加されました。
- 2008 – SQL:2008では、TRUNCATE文とINSTEAD OFトリガーが導入されました。
- 2011年 – SQL:2011では、テンポラルデータベースのサポートが改善されました。
- 2016 – SQL:2016 では JSON のサポートと行パターンマッチング (MATCH_RECOGNIZE) が追加されました。
- 2019年 – SQL/MDA(パート15)は、標準規格に多次元配列のサポートを追加しました。
- 2023 – SQL:2023では、ネイティブJSONデータ型とプロパティグラフクエリ(SQL/PGQ)が追加されました。
- 2024年 – SQL以来初の新しいISOデータベース言語であるGQLが、グラフクエリの関連標準として公開された。
- 2026年 – SQL:2023は現在の標準規格であり、次期改訂版はISO/IECで開発中です。
SQLコマンドの種類
広く使われているSQLコマンドの5つの種類を以下に示します。
- データ定義言語(DDL)
- データ操作言語(DML)
- データ制御言語(DCL)
- トランザクション制御言語 (TCL)
- データクエリ言語(DQL)

以下の表は、各カテゴリーを詳細に説明する前に、5つのカテゴリーの概要を示しています。
| カテゴリー | 目的 | 主なコマンド |
|---|---|---|
| DDL | 構造を定義する | 作成、削除、変更、切り捨て |
| DML | データを変更する | 挿入、更新、削除 |
| DCL | アクセス制御 | 許可、取り消し |
| TCL | トランザクションを管理する | コミット、ロールバック、セーブポイント |
| DQL | データを取得する | SELECT |
DDLとは何ですか?
データ定義言語(DDL)は、データベースの構造(スキーマ)を定義するのに役立ちます。ここでは、DDLコマンドとその構文について見ていきましょう。SQLの主なDDLコマンドは、CREATE、DROP、ALTER、TRUNCATEです。
CREATE
CREATE文は、データベースの構造またはスキーマを定義するために使用されます。
構文:
CREATE TABLE TABLE_NAME (COLUMN_NAME DATATYPES[,....]);
具体的な例を挙げますと、以下の通りです。
Create database university; Create table students; Create view for_students;
DROP
DROPコマンドは、RDBMSからテーブルとデータベースを削除します。
構文:
DROP TABLE ;
具体的な例を挙げますと、以下の通りです。
Drop object_type object_name; Drop database university; Drop table student;
変更する
ALTERコマンドを使用すると、データベースの構造を変更できます。
構文: テーブルに新しい列を追加するには:
ALTER TABLE table_name ADD column_name COLUMN-definition;
テーブル内の既存の列を変更するには:
ALTER TABLE MODIFY(COLUMN DEFINITION....);
具体的な例を挙げますと、以下の通りです。
Alter table guru99 add subject varchar;
切り捨てる
このコマンドは、テーブルからすべての行を削除し、テーブルを含むスペースを解放するために使用されます。
構文:
TRUNCATE TABLE table_name;
例:
TRUNCATE table students;
データ操作言語とは何ですか?
データ操作言語(DML)を使用すると、データベースインスタンスにデータを挿入、変更、削除することでデータベースインスタンスを変更できます。データベース内のあらゆる種類のデータ変更を実行する役割を担っています。SQLにおける重要なDMLコマンドは次のとおりです。
- INSERT
- UPDATE
- DELETE
INSERT
このステートメントは、テーブルの行にデータを挿入するために使用されます。
構文:
INSERT INTO TABLE_NAME (col1, col2, col3,.... col N) VALUES (value1, value2, value3, .... valueN); Or INSERT INTO TABLE_NAME VALUES (value1, value2, value3, .... valueN);
具体的な例を挙げますと、以下の通りです。
INSERT INTO students (RollNo, FIrstName, LastName) VALUES ('60', 'Tom', Erichsen');
UPDATE
このコマンドは、テーブル内の列の値を更新または変更するために使用されます。
構文:
UPDATE table_name SET [column_name1= value1,...column_nameN = valueN] [WHERE CONDITION]
具体的な例を挙げますと、以下の通りです。
UPDATE students SET FirstName = 'Jhon', LastName= 'Wick' WHERE StudID = 3;
DELETE
このコマンドは、テーブルから XNUMX つ以上の行を削除するために使用されます。
構文:
DELETE FROM table_name [WHERE condition];
具体的な例を挙げますと、以下の通りです。
DELETE FROM students WHERE FirstName = 'Jhon';
DCLとは何ですか?
DCL(データ制御言語)には、GRANTやREVOKEといった、権限やアクセス許可を付与する際に役立つコマンドが含まれています。その他のコマンドは、データベースシステムのパラメータを制御します。
グラント
このコマンドは、ユーザーにデータベースへのアクセス権限を付与するために使用されます。
構文:
GRANT SELECT, UPDATE ON MY_TABLE TO SOME_USER, ANOTHER_USER;
具体的な例を挙げますと、以下の通りです。
GRANT SELECT ON Users TO'Tom'@'localhost;
Revオーケー
このコマンドは、ユーザーから権限を取り戻すのに役立ちます。
構文:
REVOKE privilege_nameON object_nameFROM {user_name |PUBLIC |role_name}
具体的な例を挙げますと、以下の通りです。
REVOKE SELECT, UPDATE ON student FROM BCA, MCA;
TCLとは何ですか?
トランザクション制御言語(TCL)コマンドは、データベース内のトランザクションを処理します。これらは、以下で説明する状態と直接連携します。 トランザクション管理.
コミット
このコマンドは、すべてのトランザクションをデータベースに保存するために使用されます。
構文:
Commit;
具体的な例を挙げますと、以下の通りです。
DELETE FROM Students WHERE RollNo =25; COMMIT;
ロールバック
ロールバックコマンドを使用すると、データベースにまだ保存されていないトランザクションを取り消すことができます。
構文:
ROLLBACK;
例:
DELETE FROM Students WHERE RollNo =25;
セーブポイント
このコマンドは、トランザクション内にセーブポイントを設定するのに役立ちます。
構文:
SAVEPOINT SAVEPOINT_NAME;
例:
SAVEPOINT RollNo;
DQLとは何ですか?
データクエリ言語(DQL)は、データベースからデータを取得するために使用されます。使用するコマンドはSELECTのみです。
SELECT
このコマンドは、WHERE句で指定された条件に基づいて属性を選択するのに役立ちます。
構文:
SELECT expressions FROM TABLES WHERE conditions;
具体的な例を挙げますと、以下の通りです。
SELECT FirstName FROM Student WHERE RollNo > 15;
DELETE、TRUNCATE、DROPの比較
これら3つのコマンドはいずれもデータを削除しますが、削除するデータの内容や、操作を元に戻せるかどうかが異なります。これらを混同するのは、初心者によくある間違いです。
| 側面 | DELETE | 切り捨てる | DROP |
|---|---|---|---|
| カテゴリー | DML | DDL | DDL |
| 削除 | 選択された行 | すべての行 | テーブル全体 |
| WHERE句 | 許可 | 許可されていない | 適用されない |
| ロールバック | 可能 | 通常はそうではありません | ありえない |
| 構造は維持された | はい | はい | いいえ |
要するに、特定の行を削除するにはDELETE、テーブルを素早く空にするにはTRUNCATE、テーブル全体を破棄するにはDROPを使用します。
