MySQLデータベース:制約基本操作の作成

4787 ワード

制約は、データの整合性と一貫性を保証するためです.
--           ,      
--           ,      
--              ,          ,
--             

--  !
--NOT NUll DEFAULT      

制約のタイプは次のとおりです.
NOT NULL(NULL以外の制約)PRIMARY KEY(プライマリ・キー制約)UNIQUE KEY(一意の制約)DEFAULT(デフォルトの制約)FOREIGN KEY(外部キー制約)
CREATE TABLE users(id SMALLINT UNSIGNED PRIMARY KEY);
--  :PRIMARY KEY
--    ,             ,
--          ,     NOT NULL

CREATE TABLE users(name VARCHAR(20) NOT NULL UNIQUE KEY);
--    :UNIQUE KEY
--              ,           
--                

CREATE TABLE users(sex ENUM('1','2','3') DEFAULT '3');
--    :DEFAULT
--   ,      ,           ,        
--ENUM   ,       3           ,         
CREATE TABLE provinces(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
pname VARCHAR(20) NOT NULL
);
--  ,    
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY (pid) REFERENCES provinces (id)
);
--  ,    ,  pid      id

--    :FOREIGN KEY

--      :
--1.                ,         
--2.           InnoDB
/*
3.                  。
                      
    ,       ,     
*/
--4.             ,          。!MySQL       !

外部キー制約の参照操作と機能:
1.CASCDE:親テーブルから一致する行を削除または更新し、サブテーブルから一致する行を自動的に削除または更新します.SET NULL:親テーブルから行を削除または更新し、サブテーブルの外部キー列をNULLに設定(ps.このオプションを使用する場合は、サブテーブル列にNOT NULLが指定されていないことを保証する必要があります).RESTRICT:親テーブルの削除または更新操作を拒否する.NO ACTION:標準SQLのキーワード、MySQLではRESTRICTと同じ
--  
CREATE TABLE users(
id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
uname VARCHAR(10) NOT NULL,
pid SMALLINT UNSIGNED,
FOREIGN KEY (pid) REFERENCES provinces (id) ON DELETE CASCADE
);
--ON DELETE