mysql學習筆記 常見約束

2021-10-06 04:35:11 字數 3406 閱讀 2780

約束

(1)一種限制,用於限制表中的資料的準確和可靠性

(2)分類(6類)

not null:非空

default:預設,保證當前欄位有預設值

primary key:主鍵

unique:唯一

check:檢查約束(mysql中不支援)

foreign key:外來鍵,限制兩表外來鍵資料的一致性

(4)約束的新增分類:

1.列級約束

六大約束語法上都支援,但外來鍵約束沒有效果

2.表級約束

除非空,預設,其它的都支援

(5)主鍵與唯一的異同:

兩者都是唯一的,且可以組合

主鍵只能非空,且乙個表只能有乙個

(6)外來鍵

1.要求在從表設定外來鍵關係

2.從表的外來鍵列的型別和主表的關聯列的型別要求一致或相容,名稱無要求

3.主表的關聯列必須是乙個key(一般是主鍵或唯一)

4.插入資料,先插入主表,再插入從表

刪除資料,先刪除從表,再刪除主表

可以通過兩種方法來刪除主表的記錄

方法一、級聯刪除

alter table 表1名 add constraint 外鍵名

foreign key(列1中列名) references 表2名(表2中列名) on delete cascade;

方法二、級聯置空

alter table 表1名 add constraint 外鍵名

foreign key(列1中列名) references 表2名(表2中列名) on delete set null;

create table 表名(

欄位名 字段型別 列級約束,

欄位名 字段型別 ,

表級約束

)一、建立表時新增約束(8版本資料庫使用外來鍵報錯)

1.新增列級約束

語法:直接在欄位名和型別後面追加約束型別即可,只支援:預設、非空、主鍵

create table major(

id int primary key,

majorname varchar(20)

);create table stuinfo(

id int primary key,

stuname varchar(20) not null,

gender char(1) check(gender='男』or gender=『女』),

seat int unique,

age int default 18,

majorid int foreign key references major(id)

);檢視stuinfo表中所有索引,包括主鍵,外來鍵,唯一

show index fromstuinfo

2.新增表級約束

語法:在各個欄位最下面

【constraint 約束名】 約束型別(欄位名)

create table stuinfo(

id int ,

stuname varchar(20) ,

gender char(1) ,

seat int ,

age int,

majorid int ,

constraint pk primary key(id,stuname ),

constraint uq unique(seat),

constraint ck check(gender='男'or gender='女'),

constraint fk_stuinto_major primary key(majorid) references major(id)

二、修改表時新增約束

(1)新增列級約束

alter table 表名 modify column 欄位名 字段型別 新約束

(2)新增表級約束

alter table 表名 add 【constraint 約束名】 約束型別(欄位名)【外來鍵的引用】

create table stuinfo(

id int ,

stuname varchar(20) ,

gender char(1) ,

seat int ,

age int,

majorid int

)1.新增非空約束

alter tablestuinfomodify columnstunamevarchar(20) not null

2.新增預設約束

alter tablestuinfomodify columnageint default 18

3.新增主鍵

3.1.列級約束

alter tablestuinfomodify columnidint primary key

3.2表級約束

alter tablestuinfoadd primary key(id)

4.新增非空約束

4.1.列級約束

alter tablestuinfomodify columnseatint unique;

4.2表級約束

alter tablestuinfoadd unique(seat);

5.新增外來鍵

alter tablestuinfoadd constraint fk_stuinfo_major foreign key(majorid) referencesmajor(id);

三、修改表時刪除約束

1.刪除非空約束

alter tablestuinfomodify column stuname varchar(20) null

2.刪除預設約束

alter tablestuinfomodify columnageint

3.刪除主鍵

alter tablestuinfodrop primary key;

4.刪除唯一

alter tablestuinfodrop indexseat;

5.刪除外來鍵

alter tablestuinfodrop foreign key fk_stuinfo_major ;

mysql筆記(八) 常見約束

分類 六大約束 not null 非空,用於保證該字段的值不為空,如姓名 學號 default 預設,用於保證該字段喲預設值,如 性別 primary key 主鍵,用於保證該字段的值具有唯一性,並且非空,如學號等 unique 唯一,用於保證該字段的值具有唯一性,可以為空 check 檢查約束 m...

MySQL學習筆記 約束

1.約束是在表上強制執行的資料檢驗規則,約束主要用於保證資料庫的完整性。2.當表中資料有相互依賴性時,可以保護相關的資料不被刪除。3.大部分資料庫支援下面五類完整性約束 not null非空 unique key唯一值 primary key主鍵 foreign key外來鍵 check檢查 4.約...

學習筆記 MySQL 約束

根據作用範圍 約束1.非空約束 2.唯一約束 建立表並指定使用者名稱和密碼組合不能重複 利用別名 alter table user drop index uk name pwd 1 3.主鍵約束 4.外來鍵約束 建立主表 create table dept dept id int auto incr...