約束
1.主鍵約束
PRIMARY KEY 每張數據表只能存在一個主鍵 主鍵保證記錄的唯一性,主鍵的值不重復 主鍵自動為 NOT NULL舉例,創建一張student表,將學號設置為主鍵創建完表之后,通過SHWO COLUMNS FROM student查看表結構
| CREATE TABLE student(id int PRIMARY KEY,stu_name varchar(20)); |
2.唯一約束
UNIQUE KEY 唯一約束可以保證記錄的唯一性 唯一約束的字段可以為空值(NULL) 每張數據表可以存在多個唯一約束舉例,創建一個teacher表,id字段自增,tea_name唯一
| CREATE TABLE teacher(id int AUTO_INCREMENT PRIMARY KEY,tea_name varchar(20) NOT NULL UNIQUE KEY); |
3.默認約束
DEFAULT 當插入記錄時,如果沒有明確為字段賦值,則自動賦予默認值舉例,創建一張course表,默認上課時間為40分鐘
| CREATE TABLE course(id int AUTO_INCREMENT PRIMARY KEY,cou_name varchar(20) NOT NULL UNIQUE KEY,time int DEFAULT 40);INSERT INTO course(cou_name) values('語文'); |
4.非空約束
NOT NULL 強制列不能為 NULL 值,約束強制字段始終包含值。 這意味著,如果不向字段添加值,就無法插入新記錄或者更新記錄。舉例,在 "Persons" 表創建時在 Id列、name列創建 not null 約束:
| create table Persons(id int not NULL,p_name varchar(20) not null, deparment varchar(20),address varchar(20),telNum varchar(20))DESC Persons; |
5.外鍵約束
FOREIGN KEY 保持數據的一致性,完整性 實現1對1或1對n關系1.父表與子表必須使用相同的存儲引擎,而且禁止使用臨時表。
2.數據表的存儲引擎只能是InnoDB
3.外鍵列和參照列必須具有相似的數據類型。其中數字的長度或是否有符號位必須相同;而字符的長度則可以不同。
4.外鍵列和參照列必須創建索引。如果外鍵列不存在索引的話,MySQL將自動創建索引。
| CREATE TABLE school(id int AUTO_INCREMENT PRIMARY KEY,sname varchar(20) NOT NULL);CREATE TABLE student2(id int AUTO_INCREMENT PRIMARY KEY,sid int,FOREIGN KEY (sid) REFERENCES school(id)); |
外鍵約束的參照操作
CASCADE : 從父表刪除或更新且自動刪除或更新子表中匹配的行 父表中被引用的列刪除了某個數據,子表中刪除對應數據的行| CREATE TABLE student3(id int AUTO_INCREMENT PRIMARY KEY,sid int,FOREIGN KEY (sid) REFERENCES school(id) ON DELETE CASCADE); |
新聞熱點
疑難解答