必須のDDLおよびDMLコマンド:作成、選択、更新、削除

この実用的なDDLおよびDMLコマンドのガイドで、必須のMySQLデータベース操作を習得しましょう。`CREATE TABLE`を使用したテーブル構造の定義方法と、`INSERT`、`SELECT`、`UPDATE`、`DELETE`を使用したデータの操作方法を学びます。この記事では、明確な構文、実例、およびMySQLでの効果的なデータ管理のための重要なヒントを提供します。

43 ビュー

必須のDDLおよびDMLコマンド: CREATE、SELECT、UPDATE、DELETE

データベース、特にMySQLのようなリレーショナルデータベースを扱う上で、データの構造を定義し、そのデータと対話することは根本的に重要です。このプロセスは、通常、SQLコマンドの2つの主要なカテゴリ、すなわちデータ定義言語(DDL)とデータ操作言語(DML)に分けられます。DDLコマンドは、テーブルのようなデータベースオブジェクトを定義および管理するために使用され、DMLコマンドは、それらのテーブル内のレコードを挿入、取得、変更、および削除するために使用されます。

このガイドでは、最も必須のMySQL DDLおよびDMLコマンドを紹介します。データの構造を定義するためのCREATE TABLE、およびデータ自体を操作するためのINSERTSELECTUPDATEDELETEです。これらのコマンドを習得することは、MySQLデータベースを効果的に管理および活用したい人にとって、重要なステップとなります。

データ定義言語(DDL):テーブルの作成

DDLコマンドは、データベースオブジェクトのスキーマと構造に関するものです。データストレージの最も基本的なDDLコマンドはCREATE TABLEで、データのブループリントを定義できます。

CREATE TABLE構文

テーブルを作成する基本的な構文は、テーブル名を指定し、その列(データ型や制約を含む)を定義することです。

CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    column3 datatype constraints,
    ...
);
  • table_name: テーブルに付けたい名前です。データベース内で一意である必要があります。
  • column_name: テーブル内の各フィールドの名前です。
  • datatype: 列が保持するデータの種類を指定します(例:整数にはINT、可変長文字列にはVARCHAR(255)、日付にはDATE、正確な小数点数にはDECIMAL(10, 2))。
  • constraints: データ整合性を保証するために列に適用されるルールです。一般的な制約には以下のようなものがあります。
    • NOT NULL: 列にNULL値を含めることができないようにします。
    • UNIQUE: 列内のすべての値が一意であることを保証します。
    • PRIMARY KEY: NOT NULLUNIQUEの組み合わせです。各テーブルには、各行を一意に識別するための主キーが必要です。
    • FOREIGN KEY: 参照整合性を強制し、あるテーブルの列を別のテーブルの主キーにリンクします。
    • DEFAULT value: 挿入中に値が指定されなかった場合に、列にデフォルト値を設定します。

CREATE TABLEの例

在庫品目に関する情報を格納するために、簡単なproductsテーブルを作成してみましょう。

CREATE TABLE products (
    product_id INT AUTO_INCREMENT PRIMARY KEY,
    product_name VARCHAR(100) NOT NULL UNIQUE,
    category VARCHAR(50),
    price DECIMAL(10, 2) NOT NULL,
    stock_quantity INT DEFAULT 0,
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

この例では:
* product_idは自動的にインクリメントされる整数で、主キーとして機能します。
* product_nameは必須の文字列で、一意である必要があります。
* priceは必須の小数点数です。
* stock_quantityは、指定されない場合はデフォルトで0になります。
* created_atは、行が作成されたタイムスタンプを記録します。

データ操作言語(DML):データ操作

DMLコマンドは、データベーステーブル内のレコード(行)を管理するために使用されます。これらは、日常的なデータベース操作で最も頻繁に使用されるコマンドです。

INSERTコマンド:新しいデータの追加

INSERTコマンドは、テーブルに新しいデータ行を追加するために使用されます。

INSERT構文

INSERTの使用方法にはいくつかあります。

  1. すべての列に値を指定する:
    sql INSERT INTO table_name VALUES (value1, value2, value3, ...);
    値の順序は、テーブル定義の列の順序と一致する必要があります。

  2. 特定の列に値を指定する:
    sql INSERT INTO table_name (column1, column2, column3, ...) VALUES (value1, value2, value3, ...);
    これは一般的に推奨されます。読みやすく、テーブル構造が変更された場合のエラー発生率が低いためです。

INSERTの例

productsテーブルを使用します。

-- すべての列に値を挿入(product_idのAUTO_INCREMENTを想定)
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES ('Laptop Pro', 'Electronics', 1200.50, 50);

-- 特定の列に値を挿入
INSERT INTO products (product_name, price)
VALUES ('Mechanical Keyboard', 75.99);

-- 複数の行を一度に挿入
INSERT INTO products (product_name, category, price, stock_quantity)
VALUES 
('Ergonomic Mouse', 'Electronics', 25.00, 120),
('Desk Lamp', 'Home Goods', 45.00, 75);

SELECTコマンド:データの取得

SELECTコマンドは、データ取得の要です。さまざまな条件に基づいて、データベースにクエリを実行し、特定のデータを取得できます。

SELECT構文
SELECT column1, column2, ...
FROM table_name
WHERE condition
ORDER BY column_name [ASC|DESC]
LIMIT number;
  • column1, column2, ...: 取得したい列です。すべての列を選択するには*を使用します。
  • FROM table_name: クエリを実行するテーブルです。
  • WHERE condition: (オプション)指定された条件に基づいて行をフィルタリングします。条件には、比較演算子(=, !=, >, <, >=, <=)、論理演算子(AND, OR, NOT)、パターンマッチング(LIKE)が含まれる場合があります。
  • ORDER BY column_name [ASC|DESC]: (オプション)1つ以上の列で結果セットを並べ替えます。昇順(デフォルト)はASC、降順はDESCです。
  • LIMIT number: (オプション)返される行数を制限します。
SELECTの例
-- すべての製品のすべての列を選択
SELECT *
FROM products;

-- 製品の名前と価格のみを選択
SELECT product_name, price
FROM products;

-- 'Electronics'カテゴリの製品を選択
SELECT *
FROM products
WHERE category = 'Electronics';

-- 価格が100より大きい製品を、価格の降順で選択
SELECT product_name, price
FROM products
WHERE price > 100
ORDER BY price DESC;

-- 最も高価な上位5つの製品を選択
SELECT product_name, price
FROM products
ORDER BY price DESC
LIMIT 5;

-- 名前が'L'で始まる製品を選択
SELECT *
FROM products
WHERE product_name LIKE 'L%';

UPDATEコマンド:既存データの変更

UPDATEコマンドは、テーブル内の既存のレコードを変更することを可能にします。

UPDATE構文
UPDATE table_name
SET column1 = value1, column2 = value2, ...
WHERE condition;
  • table_name: 更新するレコードが含まれるテーブルです。
  • SET column1 = value1, ...: 更新する列とその新しい値を指定します。
  • WHERE condition: 重要! この句は、どの行が更新されるかを決定します。省略すると、テーブル内のすべての行が更新されます。
UPDATEの例
-- 'Laptop Pro'の価格を50ドル増やす
UPDATE products
SET price = price + 50.00
WHERE product_name = 'Laptop Pro';

-- 'Mechanical Keyboard'のカテゴリと在庫数を更新
UPDATE products
SET category = 'Accessories', stock_quantity = 100
WHERE product_name = 'Mechanical Keyboard';

-- **警告**: これはすべての製品の価格を10.00に更新します
-- UPDATE products
-- SET price = 10.00;

ヒント: 意図したレコードのみを変更することを確実にするために、更新時には常にWHERE句を使用してください。意図した行を正しくターゲットしていることを確認するために、まずSELECTステートメントでWHERE句をテストしてください。

DELETEコマンド:データの削除

DELETEコマンドは、テーブルから行を削除するために使用されます。

DELETE構文
DELETE FROM table_name
WHERE condition;
  • table_name: 行を削除するテーブルです。
  • WHERE condition: 重要! この句は、削除する行を指定します。省略すると、テーブル内のすべての行が削除されます。
DELETEの例
-- 'Desk Lamp'という名前の製品を削除
DELETE FROM products
WHERE product_name = 'Desk Lamp';

-- 在庫切れのすべての製品(stock_quantityが0)を削除
DELETE FROM products
WHERE stock_quantity = 0;

-- **警告**: これは'products'テーブルからすべてのレコードを削除します!
-- DELETE FROM products;

警告: UPDATEと同様に、DELETEステートメントでWHERE句を省略すると、テーブルからすべてのデータを削除する破壊的な操作になります。細心の注意を払って使用してください。

まとめ

DDLおよびDMLコマンドの理解と効果的な使用は、データベース管理の基本です。CREATE TABLEはデータの構造を定義することを可能にし、INSERTSELECTUPDATEDELETEは、そのデータを投入、クエリ、変更、および管理することを可能にします。

特にUPDATEおよびDELETEで明確なWHERE句を使用してこれらのコマンドを練習することで、MySQLデータベースでの作業の強固な基盤を築き、データの整合性と正確性を確保できます。潜在的に破壊的な操作を実行する前に、必ずデータのバックアップを取ってください。