アウトプット
増える可能性あり
MySQLを使用しているので、一部内容が異なる可能性あります。
DDLとは
データベースやテーブル定義を作成したり、削除や追加、変更したりする命令文
作成
データベースの作成
CREATE DATABASE データベース名;
例)
CREATE DATABASE test;
作成したデータベースを使うには
USE 使いたいデータベース名;
例)
USE test;
テーブル作成
CREATE TABLE テーブル名(
列名 データ型(桁数) この列の制約,
列名 データ型(桁数) この列の制約,
.....
);
例)
CREATE TABLE user(
user_id int PRIMARY KEY,
name VARCHAR(20) NOT NULL,
pass int NOT NULL
);
削除
データベース削除
DROP DATABASE データベース名;
例)
DROP DATABASE test;
テーブル削除
DROP TABLE テーブル名;
例)
DROP TABLE user;
列の削除
ALTER TABLE テーブル名
DROP COLUMN 列名;
例)
ALTER TABLE user;
DROP COLUMN pass;
条件削除
DELETE FROM テーブル名
WHERE 条件式;
例)
DELETE FROM user
WHERE user_id > 20;
テーブル全レコードの削除
全レコードを高速に削除されるが、テーブルの構造やインデックスは保持される。
削除後のレコードは復元できない
TRUNCATE TABLE テーブル名;
例)
TRUNCATE TABLE user;
追加
データの追加
INSERT INTO テーブル名(列名1,列名2,...)
VALUES(値1,値2,...);
例)
INSERT INTO user(name, pass)
VALUES('タロウ', 1234)
('ハナコ', 5678);
変更
列の追加
既存のテーブルに新しい列を追加する
ALTER TABLE テーブル名
ADD COLUMN 列名 データ型(桁数) 制約;
例)
ALTER TABLE user
ADD COLUMN emali VARCHAR(50);
列の変更
既存のテーブル内にある列(カラム)のデータ型や制約を変更する操作。
列の名前やデータ型、桁数、制約の変更。
ALTER TABLE テーブル名
MODIFY COLUMN データ型(桁数) 制約;
例) 列のデータ型の変更(CHAR(20)→VARCHAR(50))
ALTER TABLE user
MODIFY COLUMN pass VARCHAR(50);
例) 列に制約を追加
ALTER TABLE user
MODIFY COLUMN email VARCHAR(50) NOT NULL;
列名の変更(MySQL)
CHANGE COLUMN
を使用する際は、新しい列名とデータ型を指定する。データ型や制約も同時に変更するので、変更がない場合でも元の情報を際入力が必要。
ALTER TABLE テーブル名
CHANGE COLUMN 旧列名 新列名 データ型(桁数) 制約;
例) name→user_name
ALTER TABLE user
CHANGE COLUMN name username VARCHAR(50) NOT NULL;
更新
データの更新
UPDATE テーブル名
SET 列名1 = 新しい値1, 列名2 = 新しい値2, ...
WHERE 条件;
例)
UPDATE user
SET name = 'ジロウ', pass = 9876
WHERE user_id = 1;
選択
どのテーブルか、そのテーブルの表示したい列名を選択するときに使う
全データの選択
SELECT * FROM テーブル名;
例)
SELECT * FROM user;
データの選択
SELECT 列名1, 列名2, ...
FROM テーブル名;
例)
SELECT user_id,name
FROM user;
条件選択
SELECT 列名1, 列名2, ...
FROM テーブル名
WHERE 条件
例)
SELECT user_id,name
FROM user
WHERE user_id > 50;
データの並び替え
昇順(値が小さい順)
ひらがな(カタカナ)は50音順
SELECT 列名1, 列名2, ...
FROM テーブル名
ORDER BY 列名 ABC;
例) IDの値が小さい順に並べられる
SELECT name, pass
FROM user
ORDER BY user_id ABC;
降順(値が大きい順)
ひらがな(カタカナ)は50音順の逆
SELECT 列名1, 列名2, ...
FROM テーブル名
ORDER BY 列名 DESC;
例) IDの値が大きい順に並べられる
SELECT name, pass
FROM user
ORDER BY user_id DESC;
命令文
比較演算子
//等しい
SELECT * FROM テーブル名 WHERE 列名 = 値;
例)
SELECT * FROM users WHERE age = 25;
//等しくない(!= または <>)
SELECT * FROM テーブル名 WHERE 列名 != 値;
または
SELECT * FROM テーブル名 WHERE 列名 <> 値;
例)
SELECT * FROM users WHERE age != 25;
//よりおおきい
SELECT * FROM テーブル名 WHERE 列名 > 値;
例)
SELECT * FROM users WHERE age > 25;
//以上
SELECT * FROM テーブル名 WHERE 列名 >= 値;
例)
SELECT * FROM users WHERE age >= 25;
//より小さい
SELECT * FROM テーブル名 WHERE 列名 < 値;
例)
SELECT * FROM users WHERE age < 25;
//以下
SELECT * FROM テーブル名 WHERE 列名 <= 値;
例)
SELECT * FROM users WHERE age <= 25;
BETWEEN
指定した範囲内のレコードを選択する
SELECT * FROM テーブル名 WHERE 列名 BETWEEN 値1 AND 値2;
例) 年齢が20以上30以下を選択
SELECT * FROM users WHERE age BETWEEN 20 AND 30;
IN
指定したリスト内のいずれかの値と一致するレコードを選択
SELECT * FROM テーブル名 WHERE 列名 IN (値1, 値2, ...);
例) 年齢が25.30.35を選択
SELECT * FROM users WHERE age IN (25, 30, 35);
LIKE
パターンに一致するレコードを選択(ワイルドカードを使用)
SELECT * FROM テーブル名 WHERE 列名 LIKE パターン;
例) 名前がAで始めるレコードを選択
SELECT * FROM users WHERE name LIKE 'A%';
例) 末尾がAで終わるレコードを選択
SELECT * FROM users WHERE name LIKE '%A';
例) 文字列の一部にタロウが含まれる
SELECT * FROM users WHERE name LIKE '%タロウ%';
例) 特定の文字数に一致(タロウ)
SELECT * FROM users WHERE name LIKE 'タ_ウ
';
例)特定の文字以外に一致(あ以外で始まる)
SELECT * FROM users WHERE name LIKE '[^あ]%';
例)ちょうど3文字の名前に一致
SELECT * FROM users WHERE name LIKE '___';
IS NULL
NULL値をもつレコードを選択する
SELECT * FROM テーブル名 WHERE 列名 IS NULL;
例)
SELECT * FROM users WHERE email IS NULL;
IS NOT NULL
NULL値でないレコードを選択
SELECT * FROM テーブル名 WHERE 列名 IS NOT NULL;
例)
SELECT * FROM users WHERE email IS NOT NULL;