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

MySQLの主要なDDLおよびDMLコマンド(CREATE TABLE、INSERT、SELECT、UPDATE、DELETE)を学びます。

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

MySQLを使用する際は、通常、テーブルの定義とその中の行の操作という2つの作業から始まります。必須のDDLおよびDMLコマンドは、それを安全に行う方法です。

DDLコマンドはテーブルなどのデータベースオブジェクトを定義します。DMLコマンドはテーブルデータの挿入、読み取り、更新、削除を行います。以下の例では、小さなproductsテーブルを使用して、コマンドをコンテキスト内で確認できます。

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

DDLコマンドは、データベースオブジェクトのスキーマと構造に関係します。データストレージのための最も基本的なDDLコマンドはCREATE TABLEであり、データの設計図を定義できます。

CREATE TABLEの構文

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

CREATE TABLE table_name (
    column1 datatype constraints,
    column2 datatype constraints,
    column3 datatype constraints,
    ...
);

table_nameは現在のデータベース内で一意である必要があります。各列には名前、データ型、およびNOT NULLUNIQUEPRIMARY KEYFOREIGN KEYDEFAULT 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. すべての列に値を指定する:

    INSERT INTO table_name
    VALUES (value1, value2, value3, ...);
    

    値の順序は、テーブル定義の列の順序と一致する必要があります。

  2. 特定の列に値を指定する:

    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: (オプション)指定された条件に基づいて行をフィルタリングします。条件には比較演算子(=!=><>=<=)、論理演算子(ANDORNOT)、パターンマッチング(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を使用すると、データを入力、クエリ、変更、管理できます。

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