CREATE TABLE 部署
( 部署名 VARCHAR(20) UNIQUE NOT NULL, 部署 ID NUMERIC UNIQUE NOT NULL,
責任者 ID NUMERIC NOT NULL);
部署名への制約: UNIQUE と NOT NULL
同じ名前の部署はない
名前のない部署はない
部署 ID への制約: UNIQUE と NOT NULL
すべての部署は IDで区別する
IDのない部署はない
責任者 ID への制約: NOT NULL のみ
責任者のない部署はない
一人の人が複数の部署の責任者を兼ねている場合がある
だから、UNIQUE制約はつかない
制約をつける (2) : REFERENCES
例
CREATE TABLE 従業員 ( ... ,
所属 ID NUMERIC REFERENCES 部 署 ( 部署 ID),
...);
「所属 ID 」は「部署」の「部署 ID 」カラムを参照し ている
「所属 ID 」カラムの値は、同じ値が「部署」テーブルの
「部署 ID 」カラムのどこかの行になければならない。
「外部キー」を定義する方法
SQL の分類
SQL
は次のように分類できる
DDL (Data Definition Language: データ定義言語 )
テーブルを作る (CREATE TABLE)
テーブル定義を変更する (ALTER TABLE)
テーブルを消去する (DROP TABLE)
インデックスを作る /変更する /消去する
CREATE/ALTER/DROP INDEX
ビューを作る /変更する /消去する
CREATE/ALTER/DROP VIEW
等々
DML (Data Manipulation Language :データ操作言語 )
行を追加する (INSERT)
行を変更する (UPDATE)
行を消去する (DELETE)
行を読む (SELECT)
DCL (Data Control Language: データ操作言語 )
トランザクションの完了あるいは破棄の指示 (COMMIT/ABORT)
テーブルのロック
テーブルを削除する : DROP TABLE
CREATE TABLE の逆
例
DROP TABLE 部署 ;
SQL では、 DROP でテーブル以外のもの も削除できる。
例
DROP INDEX, DROP SCHEMA 等々
SQL の分類
SQL
は次のように分類できる
DDL (Data Definition Language: データ定義言語 )
テーブルを作る (CREATE TABLE)
テーブル定義を変更する (ALTER TABLE)
テーブルを消去する (DROP TABLE)
インデックスを作る /変更する /消去する
CREATE/ALTER/DROP INDEX
ビューを作る /変更する /消去する
CREATE/ALTER/DROP VIEW
等々
DML (Data Manipulation Language :データ操作言語 )
行を追加する (INSERT)
行を変更する (UPDATE)
行を消去する (DELETE)
行を読む (SELECT)
DCL (Data Control Language: データ操作言語 )
トランザクションの完了あるいは破棄の指示 (COMMIT/ABORT)
テーブルのロック
テーブル定義の変更: ALTER TABLE
テーブルに次のような変更を加える
カラムを追加 / 削除 /名前変更
制約を追加 / 削除
例
ALTER TABLE 従業員
ADD COLUMN 住所 VARCHAR(50);
ALTER TABLE 従業員
ALTER COLUMN 住所 ADD NOT NULL;
ALTER TABLE 部署
DROP COLUMN 所在地 ;
ALTER TABLE 部署
RENAME COLUMN 責任者 ID TO 所属長 ;
SQL の分類
SQL
は次のように分類できる
DDL (Data Definition Language: データ定義言語 )
テーブルを作る (CREATE TABLE)
テーブル定義を変更する (ALTER TABLE)
テーブルを消去する (DROP TABLE)
インデックスを作る /変更する /消去する
CREATE/ALTER/DROP INDEX
ビューを作る /変更する /消去する
CREATE/ALTER/DROP VIEW
等々
DML (Data Manipulation Language :データ操作言語 )
行を追加する (INSERT)
行を変更する (UPDATE)
行を消去する (DELETE)
行を読む (SELECT)
DCL (Data Control Language: データ操作言語 )
トランザクションの完了あるいは破棄の指示 (COMMIT/ABORT)
テーブルのロック
インデックスを作る: CREATE INDEX
基本形
CREATE INDEX インデックス名
ON テーブル名 (カラム名 );
インデックス名: 作るインデックスにつける名前
テーブル名: どのテーブルにインデックを作るか
カラム名: どのカラムの値を使ってインデックスを作るか
WHERE 句にインデックスを作ったカラム名が出てくると
、動作が早くなることが多い
複数のカラムを合成してインデックスを作ることもできる
例
CREATE INDEX 従業員 IDidx
ON 従業員 ( 従業員 ID) ;
CREATE INDEX 従業員名 IDX
ON 従業員 ( 姓ふりがな , 名ふりがな );
テーブル同様 DROP コマンドでインデッ クスを削除
例
DROP INDEX 従業員 IDidx;
SQL の分類
SQL
は次のように分類できる
DDL (Data Definition Language: データ定義言語 )
テーブルを作る (CREATE TABLE)
テーブル定義を変更する (ALTER TABLE)
テーブルを消去する (DROP TABLE)
インデックスを作る /変更する /消去する
CREATE/ALTER/DROP INDEX
ビューを作る /変更する /消去する
CREATE/ALTER/DROP VIEW
等々
DML (Data Manipulation Language :データ操作言語 )
行を追加する (INSERT)
行を変更する (UPDATE)
行を消去する (DELETE)
行を読む (SELECT)
DCL (Data Control Language: データ操作言語 )
トランザクションの完了あるいは破棄の指示 (COMMIT/ABORT)
テーブルのロック
テーブルに行を追加する: INSERT
基本形
INSERT INTO テーブル名 [( カラム名 , ....)]
VALUES ( 値 , ....) [, ( 値 , …) …] ;
テーブル名: 行を追加するテーブル名
(カラム名 , ...): 値を入力する先のカラム名の並び
省略可能。この場合はシステムで定義されたカラムの順に値を 指定していく
SELECT * ....; で表示されるカラムの順序
VALUES ( 値 , ...) : 各カラムの値。
例
INSERT INTO 部署
VALUES (' 社長室 ', 1, 10);
INSERT INTO 部署 (部署名 , 部署 ID, 責任者 ID) VALUES (' 社長室 ', 1, 10), (' 企画部 ', 2, 11);
複数の行の値を一度に入力できる
SQL の分類
SQL
は次のように分類できる
DDL (Data Definition Language: データ定義言語 )
テーブルを作る (CREATE TABLE)
テーブル定義を変更する (ALTER TABLE)
テーブルを消去する (DROP TABLE)
インデックスを作る /変更する /消去する
CREATE/ALTER/DROP INDEX
ビューを作る /変更する /消去する
CREATE/ALTER/DROP VIEW
等々
DML (Data Manipulation Language :データ操作言語 )
行を追加する (INSERT)
行を変更する (UPDATE)
行を消去する (DELETE)
行を読む (SELECT)
DCL (Data Control Language: データ操作言語 )
トランザクションの完了あるいは破棄の指示 (COMMIT/ABORT)
テーブルのロック
行の消去: DELETE
基本形
DELETE FROM テーブル名
WHERE 条件;
テーブル名: 削除する行が入っているテーブル名
条件: この条件に一致した行が削除される
SELECT
と同じ
WHERE
句がないと、すべての行が削除される
それでもテーブルは残っている
データがないファイルがあるのと同じ
削除する行を読み込まなくともよい
DROP と混同しないこと
SQL の分類
SQL は次のように分類できる
DDL
(
Data Definition Language:データ定義言語
) テーブルを作る ( CREATE TABLE)
テーブル定義を変更する (ALTER TABLE)
テーブルを消去する (DROP TABLE)
インデックスを作る /変更する /消去する
CREATE/ALTER/DROP INDEX
ビューを作る /変更する /消去する
CREATE/ALTER/DROP VIEW
等々
DML (Data Manipulation Language
:データ操作言語
) 行を追加する (INSERT)
行を変更する (UPDATE)
行を消去する (DELETE)
行を読む (SELECT)
DCL (Data Control Language:
データ操作言語
) トランザクションの完了あるいは破棄の指示 (COMMIT/ABORT)
テーブルのロック
行の変更: UPDATE
基本形
UPDATE
テーブル名
SET
カラム名 = 値 /式
[,カラム名 = 値 /式 … ] WEHERE 条件
;
テーブル名: 変更する行が入っているテーブル名
カラム名= 値
/
式 :値を変更するカラム名と設定する値 値は式でもいい
給与 = 給与*2 とすると、その行の給与の値が2 倍になる
条件: 条件を満たす行だけを変更する。 SELECT
と同じ。
更新する行を読む必要がない
例
UPDATE
従業員
SET給与 = 給与
*1.1;
全従業員の給与を
10%アップ
UPDATE
従業員
SET住所
='xxxx' WHERE社員
ID=200;社員番号
200の社員の住所を変更
SQL の分類
SQL は次のように分類できる
DDL
(
Data Definition Language:データ定義言語
) テーブルを作る ( CREATE TABLE)
テーブル定義を変更する (ALTER TABLE)
テーブルを消去する (DROP TABLE)
インデックスを作る /変更する /消去する
CREATE/ALTER/DROP INDEX
ビューを作る /変更する /消去する
CREATE/ALTER/DROP VIEW
等々
DML (Data Manipulation Language
:データ操作言語
) 行を追加する (INSERT)
行を変更する (UPDATE)
行を消去する (DELETE)
行を読む (SELECT)
DCL (Data Control Language:
データ操作言語
) トランザクションの完了あるいは破棄の指示 (COMMIT/ABORT)
テーブルのロック