NULL 例

In document 講義資料 DBMS講義 08 09 SQL (Page 34-50)

   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)

テーブルのロック

トランザクションの完了 / 失敗

 基本形

In document 講義資料 DBMS講義 08 09 SQL (Page 34-50)