データベース操作をマスターしよう!DDLとDML

2024-04-02

SQLにおけるDDLとDMLとは?

DDL は、データベースの構造を定義するために使用されます。具体的には、以下の操作に使用されます。

  • テーブルの作成 (CREATE TABLE)
  • インデックスの作成 (CREATE INDEX)
  • データの挿入 (INSERT INTO)
  • データの更新 (UPDATE)
  • データの削除 (DELETE)

DDLとDMLの比較

項目DDLDML
目的データベースの構造を定義するデータベース内のデータを操作する
主なコマンドCREATE TABLE, ALTER TABLE, DROP TABLE, CREATE INDEX, DROP INDEXINSERT INTO, UPDATE, DELETE
コミット自動的にコミットされる明示的にコミットする必要がある

DDLの例

-- テーブルの作成
CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);

-- テーブルの変更
ALTER TABLE users ADD COLUMN age INT;

-- テーブルの削除
DROP TABLE users;
-- データの挿入
INSERT INTO users (name, email) VALUES ('John Doe', '[email protected]');

-- データの更新
UPDATE users SET name = 'Jane Doe' WHERE id = 1;

-- データの削除
DELETE FROM users WHERE email = '[email protected]';

DDLとDMLは、データベースを操作するために使用されるSQLの重要な2つの言語サブセットです。DDLはデータベースの構造を定義するために使用され、DMLはデータベース内のデータを操作するために使用されます。それぞれの役割を理解することで、データベースを効率的に管理することができます。




-- データベースの作成
CREATE DATABASE my_database;

-- テーブルの作成
CREATE TABLE users (
  id INT NOT NULL AUTO_INCREMENT,
  name VARCHAR(255) NOT NULL,
  email VARCHAR(255) NOT NULL,
  PRIMARY KEY (id)
);

-- インデックスの作成
CREATE INDEX idx_name ON users (name);

-- テーブルの変更
ALTER TABLE users ADD COLUMN age INT;

-- テーブルの削除
DROP TABLE users;

-- データベースの削除
DROP DATABASE my_database;
-- データの挿入
INSERT INTO users (name, email, age) VALUES ('John Doe', '[email protected]', 30);
INSERT INTO users (name, email, age) VALUES ('Jane Doe', '[email protected]', 25);

-- データの更新
UPDATE users SET name = 'John Smith' WHERE id = 1;

-- データの削除
DELETE FROM users WHERE email = '[email protected]';

-- データの取得
SELECT * FROM users;
SELECT id, name FROM users WHERE age > 25;

-- 集計
SELECT COUNT(*) FROM users;
SELECT AVG(age) FROM users;

上記のサンプルコードは、MySQLデータベースを使用しています。他のデータベースを使用する場合は、構文が多少異なる場合があります。

上記のサンプルコードは、基本的な操作のみを示しています。SQLには、他にも様々な機能があります。詳細については、以下の参考資料を参照してください。




DDLとDMLを使用するその他の方法

データベースのスキーマの変更

DDLを使用して、データベースのスキーマを変更することができます。例えば、以下の操作を行うことができます。

  • 新しいテーブルを追加する
  • 列のデータ型を変更する
  • テーブルを削除する

データのインポートとエクスポート

  • CSVファイルからデータをインポートする
  • データベースのデータをCSVファイルにエクスポートする
  • 別のデータベースにデータをコピーする

データのバックアップと復元

  • データベース全体をバックアップする
  • 特定のテーブルをバックアップする
  • バックアップからデータベースを復元する

データベースの管理

  • ユーザーを作成および削除する
  • ユーザーの権限を設定する
  • データベースのパフォーマンスを監視する

DDLとDMLは、データベースを操作するために使用されるSQLの重要な2つの言語サブセットです。これらの言語サブセットを使用して、さまざまな操作を行うことができます。


sql ddl dml


SQL Server で INSERT と UPDATE を行うストアドプロシージャの作成 - サンプルコード

このチュートリアルでは、SQL Server で INSERT と UPDATE を行うストアドプロシージャの作成方法を説明します。ストアドプロシージャを使用すると、コードを再利用し、データベース操作を効率化できます。前提条件SQL Server Management Studio (SSMS) がインストールされていること...


MySQLでパスエンコーディングを使ってツリー構造テーブルをクエリする方法

再帰クエリは、自身を呼び出すことで、ツリー構造を階層的に処理するクエリです。MySQLでは、WITH句を使って再帰クエリを記述できます。例:このクエリは、categoriesテーブルを再帰的に処理し、すべてのノードを1つのクエリで取得します。...


SQL Serverテーブルにおける主キーのベストプラクティス

SQL Serverテーブルにおける主キーのベストプラクティスは以下のとおりです。一意性:主キーは、テーブル内のすべての行を一意に識別する必要があります。重複する値は許可されません。複合主キーを使用する場合は、各列の組み合わせがユニークであることを確認する必要があります。...


SQL Server でのデータ整合性の維持:重複なしで INSERT INTO SELECT を実行する方法

ここでは、SQL ServerでINSERT INTO SELECTクエリで重複を回避する3つの主要な方法について説明します。NOT EXISTS句を使用して、挿入しようとしているレコードがターゲットテーブルに既に存在するかどうかを確認できます。以下のクエリはこの方法を示しています。...


SQLとPostgreSQL:information_schemaを使用してカスタム型を効率的にリストする

PostgreSQLクライアントに接続します。以下のSQLクエリを実行します。このクエリは、information_schema. typesテーブルからすべての行を返し、typetype列の値がcである行のみをフィルタリングします。 typetype列の値がcである行は、すべてカスタム型を表します。...


SQL SQL SQL SQL Amazon で見る



SQL: データ削除の落とし穴!TRUNCATEとDELETEで失敗しないための注意点

処理速度TRUNCATEはDELETEよりも処理速度が速くなります。これは、TRUNCATEがテーブルのデータを直接上書きするのに対し、DELETEは各レコードを個別に削除するためです。ロールバックTRUNCATEはロールバックできません。つまり、TRUNCATEを実行してデータを削除すると、そのデータを元に戻すことはできません。一方、DELETEはロールバック可能なので、誤ってデータを削除してしまった場合でも、元に戻すことができます。