MySQL DDL文でtable,view等を作成するサンプル

データーベース データベースの一覧 / データベースを選択 / 選択中のデータベース
データベースを作成 / 文字コードと照合順序を指定してデータベースを作成
データベースの文字コードと照合順序 / データベースを削除
データベースの属性を変更
テーブル テーブルの一覧を表示 / テーブル定義を表示
テーブル定義を表示(Collation(照合)あり) / テーブルのcreate table文を表示
テーブルを作成 / テーブルを削除
alter table テーブル名を変更 / テーブルの列の属性を変更
  テーブルに列を追加 / テーブルの列を削除
  テーブルの列名を変更 / テーブルの列をNOT NULLにする
  テーブルの列をNULL可にする
ビュー ビューを作成 / ビューを変更 / ビューを削除
シーケンス シーケンスを作成 / シーケンスの採番 / シーケンスを削除
バージョン MySQLのバージョンを確認する

DDLとは、Data Definition Languageの略でデータを定義する言語です。

データベース

データベースの一覧を表示する

SHOW databases;

 

データベースを選択する

use testdb;

 

選択中のデータベースを確認する

select database();

 

データベースを作成する

create database testdb;
create database if not exists testdb;

if not existsを付けると作成対象のデータベースが既に存在していてもエラーになりません。

 

文字コードと照合順序を指定してデータベースを作成

create database testdb
CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

文字コードはutf8mb4で、照合順序はutf8mb4_general_ciです。

 

データベースの文字コードと照合順序を確認する

select DEFAULT_CHARACTER_SET_NAME,DEFAULT_COLLATION_NAME
from information_schema.schemata
where schema_name = 'testdb'

 

データベースを削除

drop database testdb;
drop database if exists testdb;

if existsを付けると作成対象のデータベースが存在していなくてもエラーになりません。

 

データベースの属性を変更

alter DATABASE testdb
CHARACTER SET utf8mb4 COLLATE utf8mb4_bin;

データベースのデフォルトの文字コードと照合順序を変更しています。
既存のテーブルの設定は変更されません。

 

テーブル

テーブルを作成する場合、先にデータベースを選択します。

テーブルの一覧を表示する

show tables FROM testdb;

 

テーブル定義を表示

desc employee;

 

テーブル定義を表示(Collation(照合)あり)

show full columns from employee;

 

テーブルのcreate table文を表示

show create table employee;

 

テーブルを作成する

CREATE TABLE employee(
	id INT,
	name VARCHAR(20) not null,
	romaji VARCHAR(20),
	created_at DATETIME,
	updated_at DATETIME,
	primary key(id)
);

2行目は、整数型のINT型を指定しています。
3行目は、not null制約をつけています。
7行目は、プライマリーキーを指定しています。2行目のidを指しています。

 

create tableの後にif not existsを付けるとテーブルが存在しない場合のみテーブルを作成します。

CREATE TABLE if not exists employee(
	id INT,
	name VARCHAR(20) not null,
	romaji VARCHAR(20),
	created_at DATETIME,
	updated_at DATETIME,
	primary key(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');

 

テーブルを削除

drop table employee;
drop table if exists employee;

if existsを付けると作成対象のテーブルが存在していなくてもエラーになりません。

 

alter table

テーブル名を変更

ALTER TABLE employee 
RENAME TO employee2;

テーブル名のemployeeをemployee2に変更しています。

 

テーブルの列の属性を変更

ALTER TABLE employee MODIFY
	id VARCHAR(20)
;

employeeテーブルの項目idをvarchar型に変更しています。

 

テーブルに列を追加

ALTER TABLE employee ADD
	mail VARCHAR(30)
;

テーブルの最後尾に項目mailが追加されます。

 

テーブルの列を削除

ALTER TABLE employee DROP
	mail
;

テーブルの項目mailを削除しています。桁数の指定は不要です。

 

テーブルの列名を変更

ALTER TABLE employee 
CHANGE COLUMN name Namae VARCHAR(20);

テーブルの項目名のnameをNamaeに変更しています。
最後に項目名変更後のデータ型を記述する必要があります。

 

テーブルの列をNOT NULLにする

ALTER TABLE employee MODIFY
	name VARCHAR(20) NOT NULL
;

テーブルの項目名のnameをNOT NULLに変更しています。
データ型を記述する必要があります。

 

テーブルの列をNULL可にする

ALTER TABLE employee MODIFY
	name VARCHAR(20) NULL
;

テーブルの項目名のnameをNULLに変更しています。
データ型を記述する必要があります。

 

ビュー

ビューは、sqlで仮想の表を作成します。

ビューを作成

CREATE VIEW v_employee AS
	select
		id,
		name
	from
		employee;

2~6行目は、select文でemployeeテーブルからビューを作成しています。
select文なので複数のテーブルを結合したsqlも作成できます。

 

ビューを変更

CREATE OR REPLACE VIEW v_employee AS
	select
		id,
		name,
		romaji
	from
		employee;

1行目は、OR REPLACEを追加しています。
5行目は、viewに項目romajiを追加しています。

 

ビューを削除

DROP VIEW v_employee;

drop viewを使用します。項目の指定は不要です。

 

シーケンス

シーケンスは、順序とも呼ばれます。指定した値の増分を取得できます。

シーケンスを作成

CREATE SEQUENCE employee_id
	START WITH 1
	INCREMENT BY 1;

2行目は、最初は1から始まると指定しています。
3行目は、増分です。1ずつ増えます。

 

シーケンスの採番

select nextval(employee_id) --1

select nextval(employee_id) --2

1行目は、nextvalで次の値を取得します。再度、nextvalを使用すると設定した増分で2になります。

 

シーケンスを削除

DROP SEQUENCE employee_id;

 

MySQLのバージョンを確認する

SELECT version();

関連の記事

MySQL コマンドの一覧

△上に戻る