MySQLのtable,view等を作成するDDL文のサンプルです。
DDLとは、Data Definition Languageの略でデータを定義する言語です。
データーベース | データベースの一覧 / データベースを作成 / データベースを削除 |
データベースの属性を変更 | |
データベースを選択 / 選択中のデータベースを確認 | |
テーブル | テーブルの一覧 / テーブルを作成 / テーブル定義を表示 |
テーブル定義を表示(Collationあり) / テーブルを削除 | |
テーブルのcreate table文を表示 | |
alter table | テーブルの列の属性を変更 / テーブルに列を追加 / テーブルの列を削除 |
テーブルの列名を変更 / テーブルの列をNOT NULLにする | |
テーブルの列をNULL可にする / テーブル名を変更 | |
ビュー | ビューを作成 / ビューを変更 / ビューを削除 |
シーケンス | シーケンスを作成 / シーケンスの採番 / シーケンスを削除 |
※シノニムはありません。
データベースの一覧
SHOW databases;
データベースの一覧を表示します。
データベースを作成
create database testdb;
create database if not exists testdb;
testdbというデータベースを作成しています。
if not existsを付けると作成対象のデータベースが既に存在していてもエラーになりません。
文字コードと照合順序を指定してデータベースを作成
create database testdb
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
デフォルトの文字コード(utf8mb4)と照合順序(utf8mb4_general_ci)の指定です。
テーブル作成時に指定しない場合にセットされます。
データベースの文字コードと照合順序を確認するSQL
select DEFAULT_CHARACTER_SET_NAME,DEFAULT_COLLATION_NAME
from information_schema.schemata
where schema_name = 'testdb'
3行目のデータベースの文字コードと照合順序を表示します。
データベースを削除
drop database testdb;
drop database if exists testdb;
testdbというデータベースを削除しています。
if existsを付けると作成対象のデータベースが存在していなくてもエラーになりません。
データベースの属性を変更
alter DATABASE testdb
CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;
データベースのデフォルトの文字コードと照合順序を変更しています。
既存のテーブルの設定は変更されません。
テーブルを作成する場合、先にデータベースを選択します。
データベースを選択
use testdb;
選択中のデータベースを確認
select database();
テーブルの一覧
show tables FROM testdb;
testdbというデータベースにあるテーブルの一覧を表示します。
テーブルを作成
CREATE TABLE employee(
id INT,
name VARCHAR(20) not null,
romaji VARCHAR(20),
created_at DATETIME,
updated_at DATETIME,
primary key(id)
);
1行目を「CREATE TABLE if not exists employee(」とif not existsを付けるとテーブルが存在していてもエラーになりません。
3行目は、not null制約をつけています。
7行目は、プライマリーキーを指定しています。2行目のidを指しています。
以下は、登録するサンプルのDMLです。
INSERT INTO employee VALUES (1,'鈴木','suzuki','2022/01/21 12:16:05.337','2022/01/21 12:16:05.337');
INSERT INTO employee VALUES (2,'田中','tanaka','2022/01/21 12:16:05.337','2022/01/21 12:16:05.337');
INSERT INTO employee VALUES (3,'佐藤','sato','2022/01/21 12:16:05.337','2022/01/21 12:16:05.337');
テーブル定義を表示
desc syain;
テーブル定義を表示(Collationあり)
show full columns from syain;
テーブルのcreate table文を表示
show create table syain;
テーブルを削除
drop table syain;
drop table if exists syain;
if existsを付けると作成対象のテーブルが存在していなくてもエラーになりません。
テーブルの列の属性を変更
ALTER TABLE syain MODIFY
id VARCHAR(20)
;
syainテーブルの項目idをvarchar型に変更しています。
テーブルに列を追加
ALTER TABLE syain ADD
mail VARCHAR(30)
;
テーブルの最後尾に項目mailが追加されます。
テーブルの列を削除
ALTER TABLE syain DROP
mail
;
テーブルの項目mailを削除しています。桁数の指定は不要です。
テーブルの列名を変更
ALTER TABLE syain
CHANGE COLUMN name Namae VARCHAR(20);
テーブルの項目名のnameをNamaeに変更しています。
最後に項目名変更後のデータ型を記述する必要があります。
テーブルの列をNOT NULLにする
テーブルの項目名のnameをNOT NULLに変更しています。
ALTER TABLE syain MODIFY
name VARCHAR(20) NOT NULL
;
テーブルの項目名のnameをNOT NULLに変更しています。
データ型を記述する必要があります。
テーブルの列をNULL可にする
ALTER TABLE syain MODIFY
name VARCHAR(20) NULL
;
テーブルの項目名のnameをNULLに変更しています。
データ型を記述する必要があります。
テーブル名を変更
ALTER TABLE syain
RENAME TO syain2;
テーブル名のsyainをsyain2に変更しています。
ビュー
ビューは、sqlで仮想の表を作成します。
ビューを作成
CREATE VIEW v_syain AS
select
id,
name
from
syain;
2~6行目は、select文でsyainテーブルからビューを作成しています。
select文なので複数のテーブルを結合したsqlも作成できます。
ビューを変更
CREATE OR REPLACE VIEW v_syain AS
select
id,
name,
romaji
from
syain;
1行目は、OR REPLACEを追加しています。
5行目は、viewに項目romajiを追加しています。
ビューを削除
DROP VIEW v_syain;
drop viewを使用します。項目の指定は不要です。
シーケンス
シーケンスは、順序とも呼ばれます。指定した値の増分を取得できます。
シーケンスを作成
CREATE SEQUENCE syain_id
START WITH 1
INCREMENT BY 1;
2行目は、最初は1から始まると指定しています。
3行目は、増分です。1ずつ増えます。
シーケンスの採番
select nextval(syain_id) --1
select nextval(syain_id) --2
1行目は、nextvalで次の値を取得します。再度、nextvalを使用すると設定した増分で2になります。
シーケンスを削除
DROP SEQUENCE syain_id;
DROP SEQUENCEを使用します。
関連の記事