MYSQL建表約束

2021-10-24 14:17:41 字數 3075 閱讀 4184

它能夠唯一確定一張表中的一條記錄,也就是我們通過給某個字段新增約束,就可以使得該字段不重複且不為空。

mysql>

create

table

user(-

> id int

primary

key,

-> name varchar(20));

我將id設為primary key,如果之後id為null或者id中有重複元素,那麼在輸入資料時就會報錯

如果想要建立兩個主鍵,都滿足不重複且非空的條件,那麼如圖

mysql>

create

table user2(

-> id int,-

> name varchar(20

),-> password varchar(20

),->

primary

key(id,name)

);

只要主鍵值加起來不重複即可,

比如:

我這裡添了兩個張三,但是分別都是1,2

這個時候是成立的,但如果下面再新增一行資料是「1,李四「,也是可以的,

也就是說滿足聯合主鍵的並集就可以,而不是交集

看如下**

mysql>

create

table user3(

-> id int

primary

keyauto_increment,-

> name varchar(20));

auto_increment是自增函式,所以在輸入資料時

注意這個時候新增的values值前面要加上(name)否則就會報錯

如果再繼續增加,那麼id就會自動增加

如果我在建表的時候沒有新增主鍵,那怎麼在後續操作中新增呢?

mysql>

create

table user4(id int

,name varchar(20));

mysql>

alter

table user4 add

primary

key(id)

;

使用alter 語句去執行操作即可

同理刪除:

mysql>

alter

table user4 drop

primary

key;

也可以通過修改的方式去將原本不是主鍵的id修改為帶有主鍵屬性的id;

mysql>

alter

table user4 modify id int

primary

key;

結果也是一樣的:

:刪除內容和定義,釋放空間。簡單來說就是把整個表去掉.以後要新增資料是不可能的,除非新增乙個表

使用方法:drop table ***;

2:truncate

:刪除內容、釋放空間但不刪除定義。與drop不同的是,他只是清空表資料而已,他比較溫柔.

使用方法:truncate table ***;

3:delete

:有兩種方式,其一:delete table ***----雖然也是刪除整個表的資料,但是過程是痛苦的(系統一行一行地刪,效率較truncate低)

其二:delete table *** where 條件;。。。。。

mysql>

create

table user5(

-> id int

, name varchar(20

));query ok,

0rows affected (

0.03 sec)

mysql>

alter

table user5 add

unique

(name)

;

建立乙個表後,後續我user5 新增了unique指令,並指定name。

這個時候新增資料

name重複之後就會報錯。

或者這樣

mysql>

create

table user7(

-> id int

,name varchar(20

),->

unique

(name)

);

也可以這樣

mysql>

create

table user7(

-> id int

,name varchar(20

)unique

);

unique也可以聯合起來用(用法跟上面primary key 一樣,也是並集而不是交集)

刪除唯一約束

mysql>

alter

table user7 drop

index name;

新增唯一約束

mysql>

alter

table user7 modify name varchar(20

)unique

;

總結:

1:可以直接在建表的時候新增約束

2:可以用alter …add…

3: 也可以用 alter…modify…

4: 刪除,用alter…drop…

Mysql建表約束

2.自增約束 3.唯一約束 4.非空約束 5.預設約束 6.外來鍵約束 7.檢查約束 無效 8.列舉型別約束 9.觸發器 trigger 約束 1.主鍵約束 它是能夠唯一確定一張表中的一條記錄,也就是我們通過給某個字段新增約束,也就是使得改字段不重複而且不為空 1.1 普通主鍵約束 create t...

MySQL建表約束

它能夠唯一確定一張表中的記錄,也就是我們通過給某個字段新增約束,就可以使得該字段不重複且不為空。create table user id int primary key,name varchar 20 insert into user values 1,張三 唯一 不能再次插入id 1的記錄 資料 ...

mysql建表約束

mysql的約束主要有主鍵約束,外來鍵約束,唯一約束,非空約束,預設約束 主鍵約束 它能夠唯一確定一張表中的一條記錄.也就是我們通過給某個字段新增約束,就使得該字段不重複且不為空 mysql create table texts id int primary key,name varchar 20 ...