1. 程式人生 > >mysql的學習筆記(三)

mysql的學習筆記(三)

更新行 ons rem 引擎 修改列 reference 增加 cascade 有符號

1.外鍵約束(保持數據一致,完整。實現一對多或一對一)

父表(參照的表)和子表(有外鍵列的表)必須使用相同的存儲引擎InnoDB,禁止使用臨時表。

外鍵列和參照列必須具有相似的數據類型。其中數字的長度或有符號位必須相同,而字符長度可以不同。

外鍵列和參照列必須創建索引。外鍵列不存在索引,mysql將自動創建。

CREATE TABLE t6(
     id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
     pname VARCHAR(20) NOT NULL
  );
CREATE TABLE t7( 
    id SMALLINT UNSIGNED PRIMARY KEY AUTO_INCREMENT,
     username VARCHAR(20) NOT NULL,
    pid SMALLINT UNSIGNED, 
    FOREIGN KEY(pid) REFERENCES provinces(id)
 );

可查看索引

SHOW INDEXES FROM t6

1.CASCADE:從父表刪除或更新且自動刪除或更新子表與之匹配的行

2.SET NULL:從父表刪除或更新行,並設置子表中的外鍵列

3.RESTRICT:拒絕對父表的刪除或更新操作

4:NO ACTION:sql關鍵字,在mysql中與RESTRICT相同

註:一般開發過程中,使用邏輯外鍵,不使用FOREIGN KEY因為具又局限性。

表級約束與列級約束

對一個數據列建立的約束,稱為列級約束

對多個數據列建立的約束,稱為表級約束

2.修改數據表,增加字段

ALTER TABLE t7 ADD age TINYINT UNSIGNED NOT NULL DEFAULT 10

刪除列

ALTER TABLE t7 DROP age

添加約束

ALTER TABLE user2 ADD id SMALLINT NOT NULL

添加主鍵約束

ALTER TABLE user2 ADD CONSTRAINT PK_user2_id PRIMARY KEY(pid)

添加唯一約束

ALTER TABLE user2 ADD UNIQUE(username);

添加外鍵約束

ALTER TABLE user2 ADD FOREIGN KEY (pid) REFERENCES provinces(id); 

添加默認約束

ALTER TABLE user2 ALTER age SET DEFAULT 15;

刪除約束

ALTER TABLE user2 DROP PRIMARY KEY;
ALTER TABLE user2 DROP INDEX username;
ALTER TABLE user2 DROP FOREIGN KEY user2

修改列定義

ALTER TABLE user2 MODIFY id SMALLINT UNSIGNED NOT NULL;

mysql的學習筆記(三)