SQL資料約束

2021-10-24 05:51:41 字數 2884 閱讀 9160

1、 常見的約束型別

約束說明

primary key

主鍵,保證資料的唯一性,並且是非空

default

預設值,保證這個欄位也有預設值的存在

not null

非空約束,保證了當前的字段不允許存在空值

unique

唯一值約束,但是可以為空

check

檢查,但是不支援

foreign key

外來鍵,限制兩個表的關係,約束該字段的值必須來自與之關聯的主表的值

2、 建立約束的時間

1、建立表的時候

2、修改表的時候

3、必須在插入資料之前

3、約束的分類

分類說明

字段約束

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

表級約束

除了非空、預設,其他都支援

4、 字段約束的例項

create table users(

id int primary key auto_increment, #主鍵

username varchar(20) not null, #非空

gender char check(gender='男' or gender='女'),#檢查

phone varchar(11) unique, #唯一值

age int default 18, #預設值

address int references address(id) #外來鍵 )

create table address(

id int primary key auto_increment,

city varchar(50)

)show tables;

注意點:

1、check這個約束正常寫,不報錯,但是mysql是不支援的

2、外來鍵寫在字段約束中,不生效

5、表級約束
表級約束

create table userss(

id int , #主鍵

username varchar(20) , #非空

gender char ,#檢查

phone varchar(11), #唯一值

age int , #預設值

addressid int,

constraint uid primary key(id),#約束的是主鍵

constraint uqkey unique(phone),#約束的是唯一值

constraint ck check(gender='男' or gender='女'),#約束的是檢查

constraint fkk foreign key(addressid) references address(id) #約束的是外來鍵

)select * from userss;

create table usersss(

id int , #主鍵

username varchar(20) , #非空

gender char ,#檢查

phone varchar(11), #唯一值

age int , #預設值

addressid int,

primary key(id),#約束的是主鍵

unique(phone),#約束的是唯一值

check(gender='男' or gender='女'),#約束的是檢查

foreign key(addressid) references address(id) #約束的是外來鍵

)

6、通用格式
# 通用格式

create table userssss(

id int primary key auto_increment, #主鍵

username varchar(20) not null, #非空

gender char check(gender='男' or gender='女'),#檢查

phone varchar(11) unique, #唯一值

age int default 18, #預設值

addressid int, #外來鍵

foreign key(addressid) references address(id)

)

7、修改約束

約束型別

語法字段約束

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

表級約束

alter table 表名 add constraint 新約束名 約束型別

注意點(外來鍵的新增)

alter table 表名 add constraint foreign key(需要新增外來鍵的欄位名) references 產生關聯的表(字段);

8、外來鍵的重要事項

1、新增外來鍵的時候,使用的是表級約束,字段約束可以寫,但是不生效

2、如果字段額外增加外來鍵的時候,alter table 表名 add constraint foreign key(需要新增外來鍵的欄位名) references 產生關聯的表(字段)

;

9、刪除約束
# 刪除約束

刪除主鍵

alter table userss drop primary key;

刪除唯一值

alter table userss drop index uqkey

刪除外來鍵

alter table userss drop foreign key fkk

注意點:

1、在刪除約束之前,必須檢視一下約束名

show index from userssss;

2、在1的基礎上刪除

sql主鍵約束

資料字段屬性 unsigned 無符號的,宣告該資料不允許為負數 zerofill 0填充的,不足位數用0來填充 如 int 3 5 則005 auto increment 自動增長的,通常用於設定主鍵,且為整數型別,可定義起始值和步長 null not null 空 和 非空 default 預設...

SQL 新增約束

sql 約束用於規定表中的資料規則。如果存在違反約束的資料行為,行為會被約束終止。約束可以在建立表時規定 通過 create table 語句 或者在表建立之後規定 通過 alter table 語句 建立表的時候新增約束 create table table name column name1 d...

SQL約束(對比)

約束主要包括 not null unique primary key foreign key check default 1 not null 用於控制欄位的內容一定不能為空 null 用法 create table mytable id varchar 32 not null,name varch...