必須の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 NULL、UNIQUE、PRIMARY KEY、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を使用する方法はいくつかあります。
すべての列に値を指定する:
INSERT INTO table_name VALUES (value1, value2, value3, ...);値の順序は、テーブル定義の列の順序と一致する必要があります。
特定の列に値を指定する:
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を使用するとデータの構造を定義でき、INSERT、SELECT、UPDATE、DELETEを使用すると、データを入力、クエリ、変更、管理できます。
特にUPDATEとDELETEでは明確なWHERE句を使用してこれらのコマンドを練習することで、MySQLデータベースを操作するための強固な基盤を構築し、データの整合性と正確性を確保できます。破壊的な操作を実行する前に、必ずデータをバックアップすることを忘れないでください。