テーブルの作成とデータ型
データベースにおいてテーブルを新規作成するには、CREATE TABLE 文を使用します。列の定義と同時に、制約条件や文字コードを指定することが可能です。
CREATE TABLE employees (
emp_id INT UNSIGNED AUTO_INCREMENT PRIMARY KEY,
full_name VARCHAR(50) NOT NULL,
department VARCHAR(30) DEFAULT 'General',
hire_date DATE NOT NULL
) DEFAULT CHARSET=utf8mb4;
主な列制約には以下のようなものがあります。
AUTO_INCREMENT: 値を自動的に増分させます。PRIMARY KEY: 主鍵索引を設定し、重複を許しません。NOT NULL: NULL 値の代入を禁止します。DEFAULT: 値が指定されていない場合の初期値を設定します。
主要なデータ型
用途に応じて適切なデータ型を選択する必要があります。
- 数値型:
TINYINT,INT,BIGINTなど。UNSIGNEDを付与すると負の値を取れなくなります。 - 浮動小数点型:
FLOAT,DOUBLEは近似値、DECIMAL(M,D)は厳密な値を扱います。 - 文字列型:
CHARは固定長、VARCHARは可変長です。 - 日時型:
DATETIME(YYYY-MM-DD HH:MM:SS) やTIMESTAMPが一般的です。
データの登録と取得
作成したテーブルに対してデータの挿入および検索を行います。
データの挿入 (INSERT)
特定の列を指定して値を投入します。
INSERT INTO employees (full_name, department, hire_date)
VALUES ('Tanaka', 'Sales', '2023-04-01');
-- 默认値を利用する場合
INSERT INTO employees (full_name, hire_date)
VALUES ('Suzuki', '2023-05-15');
データの検索 (SELECT)
条件を指定してレコードを取得します。
-- 全列の取得
SELECT * FROM employees;
-- 条件付き検索
SELECT emp_id, full_name FROM employees WHERE emp_id BETWEEN 10 AND 20;
-- 重複の排除
SELECT DISTINCT department FROM employees;
-- 部分一致検索
SELECT * FROM employees WHERE full_name LIKE 'T%';
データの更新と削除
データの更新 (UPDATE)
WHERE 句で対象を絞り込み、値を変更します。
UPDATE employees
SET department = 'Marketing', hire_date = '2023-06-01'
WHERE emp_id = 5;
データの削除 (DELETE / TRUNCATE)
レコードを削除するには主に 2 つの方法があります。
-- 条件に一致する行を削除
DELETE FROM employees WHERE emp_id = 5;
-- テーブル内の全データを削除
TRUNCATE TABLE employees;
DELETE は行単位で削除され、AUTO_INCREMENT のカウンタはリセットされません。一方、TRUNCATE はテーブルを初期状態に戻すため処理が高速で、カウンタも 1 から再開されます。
テーブル構造の変更
既存のテーブル定義を変更するには ALTER TABLE を使用します。
- 表名の変更:
ALTER TABLE employees RENAME TO staff; - 列の追加:
ALTER TABLE staff ADD COLUMN email VARCHAR(100); - 列の削除:
ALTER TABLE staff DROP COLUMN email; - 列の変更:
ALTER TABLE staff MODIFY COLUMN full_name VARCHAR(100) NOT NULL; - 列の名前変更:
ALTER TABLE staff CHANGE COLUMN full_name name VARCHAR(100);
テーブルの削除と複製
不要になったテーブルは削除し、構造のみをコピーすることも可能です。
-- テーブルの削除
DROP TABLE staff;
-- 構造のみを複製 (データはコピーされない)
CREATE TABLE staff_backup LIKE staff;
-- 構造確認
SHOW CREATE TABLE staff;