MySQL第七課 表的約束

2021-10-14 08:33:40 字數 2312 閱讀 2551

返回知識列表:mysql知識列表

目錄

7 約束

7.1 mysql支援的完整性約束

7.2 非空約束:not null,值不能為null

7.3 唯一約束:unique,值不能重複

7.4 主鍵約束:primary key

7.5 外來鍵約束:foreign key,讓表於表產生關係,從而保證資料的正確性。

* 概念: 對錶中的資料進行限定,保證資料的正確性、有效性和完整性。    

* 分類:

1. 主鍵約束:primary key

2. 非空約束:not null

3. 唯一約束:unique

4. 外來鍵約束:foreign key

1. 建立表時新增約束

create table stu(

id int,

name varchar(20) not null -- name為非空

);2. 建立表完後,新增非空約束

alter table stu modify name varchar(20) not null;

3. 刪除name的非空約束

alter table stu modify name varchar(20);

1. 建立表時,新增唯一約束

create table stu(

id int,

phone_number varchar(20) unique -- 新增了唯一約束

);* 注意mysql中,唯一約束限定的列的值可以有多個null。null 可以理解為不確定。這裡設計不好。

2. 刪除唯一約束        

alter table stu drop index phone_number;        

3. 在建立表後,新增唯一約束

alter table stu modify phone_number varchar(20) unique;

1. 注意:

1. 含義:非空且唯一

2. 一張表只能有乙個字段為主鍵

3. 主鍵就是表中記錄的唯一標識

2. 在建立表時,新增主鍵約束

create table stu(

id int primary key,-- 給id新增主鍵約束

name varchar(20)

);3. 刪除主鍵

-- 錯誤 alter table stu modify id int ;

alter table stu drop primary key;

4. 建立完錶後,新增主鍵

alter table stu modify id int primary key;

5. 自動增長:

1.  概念:如果某一列是數值型別的,使用 auto_increment 可以來完成值得自動增長

2. 在建立表時,新增主鍵約束,並且完成主鍵自增長

create table stu(

id int primary key auto_increment,-- 給id新增主鍵約束

name varchar(20)

);3. 刪除自動增長

alter table stu modify id int;

4. 新增自動增長

alter table stu modify id int auto_increment;

1. 在建立表時,可以新增外來鍵

* 語法:

create table 表名(

....

外來鍵列constraint 外來鍵名稱 foreign key (外來鍵列名稱) references 主表名稱(主表列名稱)

);2. 刪除外來鍵

alter table 表名 drop foreign key 外來鍵名稱;

3. 建立表之後,新增外來鍵

alter table 表名 add constraint 外來鍵名稱 foreign key (外來鍵欄位名稱) references 主表名稱(主表列名稱);

4. 級聯操作

1. 新增級聯操作

語法:alter table 表名 add constraint 外來鍵名稱 

foreign key (外來鍵欄位名稱) references 主表名稱(主表列名稱) on update cascade on delete cascade  ;

2. 分類:

1. 級聯更新:on update cascade 

2. 級聯刪除:on delete cascade 。也有風險啊,級聯的太多,多個表的刪除和更新,效率低,風險高!!!!

Oracle學習第七課 表連線及其應用

概念 將多張表的資料合併成一張表,然後進行查詢處理.放在from後面 語法 表1 join 表2 on 表1.xx欄位 表2.xx欄位 查詢員工id,名字,薪資,部門id,部門名稱?思路 1.表連線員工表和部門表,為一張表,確定連線依據 部門表.部門id 員工表.部門id employees emp...

Oracle學習第七課 表連線及其應用

概念 將多張表的資料合併成一張表,然後進行查詢處理.放在from後面 語法 表1 join 表2 on 表1.xx欄位 表2.xx欄位 查詢員工id,名字,薪資,部門id,部門名稱?思路 1.表連線員工表和部門表,為一張表,確定連線依據 部門表.部門id 員工表.部門id employees emp...

Oracle學習第七課 表連線及其應用

概念 將多張表的資料合併成一張表,然後進行查詢處理.放在from後面 語法 表1 join 表2 on 表1.xx欄位 表2.xx欄位 查詢員工id,名字,薪資,部門id,部門名稱?思路 1.表連線員工表和部門表,為一張表,確定連線依據 部門表.部門id 員工表.部門id employees emp...