SQL 約束

      對數據庫表添加約束,能夠對錶中的數據進行限制。保證數據的正確性、有效性和完整性。不正確的數據將無法插入表中。

一、主鍵約束

      一般將與業務無關的字段作爲主鍵,主鍵一般沒有任何含義。將表中的某個字段添加主鍵約束,該字段的值不能重複且非空。可以在創建表時給字段添加主鍵約束,也可以對已有表的字段添加主鍵約束,一個表中只能有一個主鍵。

      1.創建表時添加主鍵約束

關鍵字:PRIMARY KEY
示例:CREATE TABLE user (id INT PRIMARY KEY, name VARCHAR(20), age INT);

      2.對已有表的字段添加主鍵約束

關鍵字:ADD PRIMARY KEY
示例:ALTER TABLE user ADD PRIMARY KEY (id);

      3.刪除表字段的主鍵約束

關鍵字:DROP PRIMARY KEY
示例:ALTER TABLE user DROP PRIMARY KEY;

二、主鍵自增約束

      手動維護主鍵的值容易造成主鍵值重複,主鍵添加自增約束,主鍵值能夠由數據庫採用自增的方式自動生成。默認起始值爲 1,也可以對已有表修改起始值。

      1.創建表時添加主鍵自增約束,並指定起始值

關鍵字:KEY AUTO_INCREMENT
示例:
CREATE TABLE user (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(20),
      age INT
) KEY AUTO_INCREMENT = 2;

      2.對已有表修改主鍵自增起始值

語法:ALTER TABLE 表名 AUTO_INCREMENT = 起始值;
示例:ALTER TABLE user AUTO_INCREMENT = 3;

三、唯一約束

      給表中的字段添加唯一約束,使該字段的值不能重複

關鍵字:UNIQUE
示例:
CREATE TABLE user(
      id INT;
      name VARCHAR(20) UNIQUE
);

四、非空約束

      給表中的字段添加非空約束,使該字段的值不能爲 null

關鍵字:NOT NULL
示例:
CREATE TABLE user(
      id INT,
      name VARCHAR(20) NOT NULL
);

五、默認值約束

關鍵字:DEFAULT
示例:
CREATE TABLE user(
      id INT,
      name VARCHAR(20),
      adress VARCHAR(20) DEFAULT '北京'
);

六、外鍵約束

      1.創建表時給表添加外鍵約束

語法:[CONSTRAINT] [ 外鍵約束名稱] FOREIGN KEY( 外鍵字段名) REFERENCES 主表名( 主鍵字段名);
示例:
CREATE TABLE department (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(20),
      lacation VARCHAR(20)
);

CREATE TABLE user (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(20),
      dep_id INT,
      CONSTRAINT user_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id)
);

      user 表和 department 表是一對多的關係,一個部門對應用多個用戶。部門表稱之爲主表,用戶表稱之爲主表。插入用戶數據,根據 dep_id 字段,在部門表中沒有對用的部門,怎插入數據失敗。

      2.給已有表添加外鍵約束

語法:ALTER TABLE 從表 ADD [CONSTRAINT] [ 外鍵約束名稱] FOREIGN KEY ( 外鍵字段名) REFERENCES 主表 ( 主鍵字段名);
示例:ALTER TABLE user ADD CONSTRAINT user_dep_fk FOREIGN KEY (dep_id) REFERENCES department (id);

      3.刪除從表外鍵約束

示例:DROP TABLE user;

七、級聯約束

      在修改和刪除主表的主鍵時,同時更新或刪除從表的外鍵值,稱爲級聯操作。

級聯操作語法 描述
ON UPDATE CASCADE 級聯更新,只能是創建表的時候創建級聯關係。更新主表中的主鍵,從表中的外鍵列也自動同步更新
ON DELETE CASCADE 級聯刪除
示例:
CREATE TABLE department (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(20),
      location VARCHAR(20)
);

CREATE TABLE user (
      id INT PRIMARY KEY AUTO_INCREMENT,
      name VARCHAR(20),
      dep_id INT,
      CONSTRAINT user_dep_fk FOREIGN KEY (dep_id) REFERENCES department(id) ON UPDATE CASCADE ON DELETE CASCADE
);
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章