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

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

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 syain;

 

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

show full columns from syain;

 

テーブルのcreate table文を表示

show create table syain;

 

テーブルを作成する

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を付けるとテーブルが存在していてもエラーになりません。

以下は、登録するサンプルの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');

create table  2つめ

CREATE TABLE product(
	id INT,
	name VARCHAR(20),
	price1 INT,
	price2 INT,
	price3 INT,
	primary key(id)
);

insert文

INSERT INTO product VALUES (1,'type1',100,200,300);
INSERT INTO product VALUES (2,'type2',100,200,300);
INSERT INTO product VALUES (3,'type3',100,200,300);

 

テーブルを削除

drop table syain;
drop table if exists syain;

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

 

alter table

テーブル名を変更

ALTER TABLE syain 
RENAME TO syain2;

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

 

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

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にする

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

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

 

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

ALTER TABLE syain MODIFY
	name VARCHAR(20) NULL
;

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

 

ビュー

ビューは、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;

関連の記事

MySQL コマンドの一覧

△上に戻る