一:約束
1:約束是什么:指的是除了數據類型以外額外添加的約束。
2:為什么要使用約束:為了保證數據的合法性,完整性。
3:分類:
①:not null 非空約束:數據不能為空
例:create table t1(id int,name char(10) not null);
insert into t1 values(1,null);
②:default 默認值約束:可以指定字段的默認值
例:create table t1(id int,name char(10) default ''xxx'');
insert into t1(id) values(1);
③:unique 唯一性約束:該字段的值不能重復,如:手機號碼,身份證
例:create table t1(idcard char(18) unique,name char(10));
insert into t1 value(''111'',''xxx'');
insert into t1 value(''112'',''yyy'');
insert into t1 value(''112'',''yyy'');
unique其實是一種索引,索引作為一種數據結構,主要用於提高查詢效率。
可以為空,並且一張表中可以有多個唯一約束。
④:primary key 主鍵約束:用於唯一標識表中一條記錄,並且不能為空。也就是說從約
束的角度來看,主鍵約束和非空加唯一約束沒有區別。
語法案例:create table stu (stuid int primary key,name char(10));
#create table stu (stuid int unique not null,name char(10));
insert into stu value(1,''xxx'');
insert into stu value(1,''yyy'');
有主鍵和沒有主鍵的區別:
1:無法區分兩個相同記錄
2:有主鍵則意味着有索引,效率更高
3:可以建立關聯關系
⑤:auto_increment 自動增長約束:其作用是通常搭配主鍵字段使用,可以自動為數據分配主鍵。
如何分配:添加一條就自動加1,計數從1開始。
語法案例:create table t1(id int primary key auto_increment,name char(10));
insert into t1(name) values(''xxx''),(''yyy''),(''zzz'');
修改自動增長的起始位置:
alter table t1 auto_increment = 7;
⑥:foreign key 外鍵約束:專門用於為表和表之間建立物理關聯/聯系。
添加外鍵約束時,被關聯的表需要先被創建,主表先插入,從表后插入。
外鍵加上以后,主表中的數據在刪除和更新時,都會受到限制,解決方案就是
語法案例:
先創建部門表
create table dept(id int primary key auto_increment,name char(10),manager char(10));
再創建員工表
create table emp(id int primary key auto_increment,name char(10),dept_id int,foreign key(dept_id) references dept(id));
為外鍵添加級聯操作。而級聯操作指的就是同步更新和刪除。
語法:在創建外鍵時,后面添加 on update cascade 同步更新
:在創建外鍵時,后面添加 on delete cascade 同步刪除
二:表之間的關聯關系
兩個表之間能產生的關系有哪些:
1.多對一
2.一對一
3.多對多