約束
- 概念:限制表中的數據,保證數據的正確性、有效性和完整性。
約束的分類
單表約束:
非空約束:not null,規定某一列的數據不能爲null.
唯一約束:unique,規定某一列的數據唯一不重複。
主鍵約束:primary key,規定某一列唯一不重複且不能爲null,一般用來作爲一條數據的唯一標識。
主鍵的特點:一個表中主鍵只有一個,如果主鍵是int類型,還可以配合auto_increment自動增長。
多表約束:
外鍵約束:
添加和刪除單表約束
1、創建表時添加約束(掌握)
create table 表名(
列1 數據類型 約束1 約束2 ...,
列2 數據類型 約束1 約束2 ...,
...
列n 數據類型 約束1 約束2 ...
);
例如:
create table stu(
id int primary key auto_increment,
name varchar(20) not null,
phone varchar(20) unique
-- primary key(id,name) -- 複合主鍵/聯合主鍵,id和name共同作爲一個主鍵。
);
2、創建表之後添加約束(瞭解)
-- 添加非空約束
alter table 表名 modify 列名 數據類型(長度) not null;
-- 刪除非空約束
alter table 表名 modify 列名 數據類型(長度);
-- 添加唯一約束
alter table 表名 modify 列名 數據類型(長度) unique;
-- 刪除唯一約束
alter table 表名 drop index 列名;
-- 添加主鍵約束
alter table 表名 modify 列名 數據類型(長度) primary key;
-- 刪除主鍵約束
alter table 表名 drop primary key;
- 補充:delete from 表名和truncate table 表名的區別?
1.delete from 表名是一條一條的刪除,屬於DML語句而truncate table 表名是先刪除表,
再創建一張一樣的新表,屬於DDL語句
2.delete from 表名 :刪除所有數據之後再重新添加數據,主鍵自動增長的列的值是接着之前的增
加。truncate table 表名 :刪除表之後創建新表重新添加數據,主鍵自動增長的列的值是從1開始。
外鍵約束
外鍵約束的概念
如果一張表(A表)的某一列的值都來自於另一張表(B表)的主鍵值(或者唯一非空的列的值也可以)。那麼就需要給A表的這一列添加約束,這個約束就叫做外鍵約束。有時候將A表叫做從表/外鍵表,B表叫做主表/主鍵表/引用表
添加外鍵
1. 在創建表時,可以添加外鍵
create table 表名(
......
constraint 外鍵名稱 foreign key (外鍵列名稱) references 主表名稱(主表列名稱)
)
2. 刪除外鍵
ALTER TABLE 表名 DROP FOREIGN KEY 外鍵名稱;
3. 創建表之後,添加外鍵
ALTER TABLE 表名 ADD CONSTRAINT 外鍵名稱 FOREIGN KEY (外鍵字段名稱) REFERENCES 主表名稱(主表列名稱);
多表關係以及建表原則
一對一:在任意一方添加外鍵指向另一方的主鍵,但是外鍵字段必須添加unique唯一約束。
一對多/多對一:在多的一方添加外鍵指向一的一方的主鍵。
多對多:創建一張中間表,在中間表中至少有兩個字段分別指向多對多雙方的主鍵。