SQL Serverのtable,view等を作成するDDL文のサンプルです。
DDLとは、Data Definition Languageの略でデータを定義する言語です。
テーブル | テーブルを作成 / テーブル名を変更 / テーブルを削除 |
alter table | テーブルの列の属性を変更 / テーブルに列を追加 / テーブルの列を削除 |
テーブルの列名を変更 / テーブルの列をNOT NULLにする | |
テーブルの列をNULL可にする | |
ビュー | ビューを作成 / ビューを変更 / ビューを削除 |
シーケンス | シーケンスを作成 / シーケンスの採番 / シーケンスを削除 |
列の文字コードを確認 |
テーブルを作成
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制約をつけています。
5,6行目は、作成日時と更新日時でdatetime型です。YYYY-MM-DD hh:mm:ss[.nnn]を指定できます。
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');
テーブル名を変更
EXEC sp_rename 'employee','employee2';
テーブル名のemployeeをemployee2に変更しています。
テーブルを削除
drop table employee;
drop tableを使用します。
テーブルの列の属性を変更
ALTER TABLE employee ALTER COLUMN
name VARCHAR(40)
;
employeeテーブルの項目nameの桁数を40に変更しています。
テーブルに列を追加
ALTER TABLE employee ADD
mail VARCHAR(30)
;
テーブルの最後尾に項目mailが追加されます。
テーブルの列を削除
ALTER TABLE employee DROP COLUMN
mail
;
テーブルの項目mailを削除しています。桁数の指定は不要です。
テーブルの列名を変更
EXEC sp_rename 'employee.name','Namae';
テーブルの項目名のnameをNamaeに変更しています。
alter tableではなく、T-SQLで実行します。
テーブルの列をNOT NULLにする
ALTER TABLE employee
ALTER COLUMN name VARCHAR(20) NOT NULL;
テーブルの項目名のnameをNOT NULLに変更しています。
データ型を記述する必要があります。
テーブルの列をNULL可にする
ALTER TABLE employee
ALTER COLUMN name VARCHAR(20) NULL;
テーブルの項目名のnameをNULLに変更しています。
データ型を記述する必要があります。
ビュー
ビューは、sqlで仮想の表を作成します。
ビューを作成
CREATE VIEW v_employee AS
select
id,
name
from
employee;
select文でemployeeテーブルからビューを作成しています。
複数のテーブルを結合したsqlも作成できます。
ビューを変更
ALTER VIEW v_employee AS
select
id,
name,
romaji
from
employee;
1行目は、ALTER VIEWにします。
5行目は、元々のviewに存在しなかった項目のromajiを追加しています。
ビューを削除
DROP VIEW v_employee;
drop viewを使用します。項目の指定は不要です。
シーケンス
シーケンスは、順序とも呼ばれます。指定した値の増分を取得できます。
シーケンスを作成
CREATE SEQUENCE employee_id
START WITH 1
INCREMENT BY 1;
2行目は、最初は1から始まると指定しています。
3行目は、増分です。1ずつ増えます。
シーケンスの採番
select NEXT VALUE FOR employee_id --1
select NEXT VALUE FOR employee_id --2
1行目は、NEXT VALUE FORで次の値を取得します。再度、NEXT VALUE FORを使用すると設定した増分で2になります。
シーケンスを削除
DROP SEQUENCE employee_id;
DROP SEQUENCEを使用します。
列の文字コードを確認
select TABLE_CATALOG,TABLE_NAME,
COLUMN_NAME,DATA_TYPE,CHARACTER_SET_NAME,COLLATION_NAME
from INFORMATION_SCHEMA.COLUMNS
where TABLE_NAME = 'employee'
CHARACTER_SET_NAMEに文字コードが表示されます。
4行目に確認したいテーブルを指定します。
TABLE_CATALOGはDB名、TABLE_NAMEはテーブル名、COLUMN_NAMEは列名、DATA_TYPEはデータ型、COLLATION_NAMEは照合順序です。
関連の記事