介紹
所謂完整性是指數據的準確性和一致性,而完整性檢查就是指檢查數據的準確性和一致性。MySQL數據庫管理系統提供了一致機制來檢查數據庫表中的數據是否滿足規定的條件,以保證數據庫中數據的準確性和一致性,這種機制就是約束。
完整性約束關鍵字 | 含義 |
NOT NULL | 約束字段的值不能爲空 |
DEFAULT | 設置字段的默認值 |
UNIQUE KEY(UK) | 設置字段的值是唯一 |
PRIMARY KEY(PK) | 約束字段爲表的主鍵,可以作爲該表記錄的唯一標識 |
AUTO_INCREMENT | 約束字段的值爲自動增加 |
FOREIGN KEY(FK) | 約束字段爲表的外鍵 |
一、設置非空約束(NOT NULL,NK)
當數據庫表中的某個字段上的內容不希望設置爲NULL時,則可以使用NK約束進行設置。
1、設置非空約束
MariaDB [(none)]> CREATE DATABASE company;
MariaDB [(none)]> USE company;
#創建表
MariaDB [company]> CREATE TABLE t_dept(deptno INT(20) NOT NULL,dname VARCHAR(20),loc VARCHAR(40));
Query OK, 0 rows affected (0.02 sec)
2、查看
二、設置字段的默認值(DEFAULT)
當爲數據庫表中插入一條新記錄時,如果沒有爲某個字段賦值,那麼數據庫系統會自動爲這個字段插入默認值。
1、設置默認值
MariaDB [company]> CREATE TABLE t_dept(deptno INT NOT NULL,dname VARCHAR(20) DEFAULT 'cjgong',loc VARCHAR(40));
2、查看
三、設置唯一約束(UNIQUE,UK)
當數據庫表中的某個字段上的內容不允許重複時,則可以使用UK約束進行設置。
1、設置唯一約束
MariaDB [company]> CREATE TABLE t_dept(deptno INT,dname VARCHAR(20) UNIQUE,loc VARCHAR(40));
2、查看
四、設置主鍵約束(PRIMARY KEY,PK)
當想用數據庫表中的某個字段來唯一標識所有記錄是,則可以使用PK約束進行設置
1、單字段主鍵
MariaDB [company]> CREATE TABLE t_dept(deptno INT PRIMARY KEY,dname VARCHAR(20),loc VARCHAR(40));
表t_dept中字段deptno已經被設置爲PK約束,同時可以發現主鍵約束相當於非空約束加上唯一約束。
2、多字段主鍵
MariaDB [company]> CREATE TABLE t_dept(deptno INT,dname VARCHAR(20),loc VARCHAR(40),CONSTRAINT pk_name_deptno PRIMARY KEY(deptno,dname));
五、設置字段值自動增加(AUTO_INCREMENT)
auto_increment是MySQL唯一擴展的完整性約束,當爲數據庫表中插入新記錄時,字段上的值會自動生成唯一的ID。在具體設置auto_increment約束時,一個數據庫表中只能有一個字段使用該約束,該字段的數據類型必須是整數類型。
1、由於設置auto_increment約束後的字段會生成唯一的ID,所以該字段也經常會設置爲PK主鍵。
MariaDB [company]> CREATE TABLE t_dept(deptno INT PRIMARY KEY AUTO_INCREMENT,dname VARCHAR(20),loc VARCHAR(40));
2、查看
六、設置外鍵約束(FOREIGN KEY,FK)
設置外鍵約束的兩個表之間具有父子關係,即字表中某個字段的取值範圍由父表決定。例如,表示一種部門和僱員關係,即每個部門有多個僱員。首先應該有兩個表:部門表和僱員表,然後僱員表中有一個表示部門編號的字段deptno,其依賴於部門表的主鍵,這樣字段deptno就是僱員表的外鍵,通過該字段部門表和僱員表建立了關係
1、設置FK約束的字段必須依賴於數據庫中已經存在的父表的主鍵,同時外鍵可以爲NULL
MariaDB [company]> CREATE TABLE t_dept(deptno INT PRIMARY KEY,dname VARCHAR(20),loc VARCHAR(40));
MariaDB [company]> CREATE TABLE t_employee(
-> empno INT PRIMARY KEY,
-> ename VARCHAR(20),
-> job VARCHAR(40),
-> MGR INT,
-> Hiredate DATE,
-> sal DOUBLE(10,2),
-> comm DOUBLE(10,2),
-> deptno INT,
-> CONSTRAINT fk_deptno FOREIGN KEY(deptno) REFERENCES t_dept(deptno));
2、查看