Mysql建表約束

2021-09-11 03:06:13 字數 4072 閱讀 8983

2.自增約束

3. 唯一約束

4. 非空約束

5. 預設約束

6.外來鍵約束

7.檢查約束(無效)

8. 列舉型別約束

9.觸發器 trigger 約束

1. 主鍵約束

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

1.1 普通主鍵約束:

create

table friends(

name varchar(20

)primary

key,

ge int);

--例項:

insert

into friends value

('eddisen',18

);query ok,

1row affected

insert

into friends value

('eddisen',18

);1062

-duplicate entry 'eddisen'

forkey

'primary'

1.2 聯合主鍵約束:

–只要聯合的主鍵加起來不重複就可以(而且裡面任何乙個欄位都不能為空)

create

table friends(

id int

,name varchar(20

),age int

,primary

key(id,name));

--例項:

insert

into friends value

('1'

,'tom',15

);insert

into friends value

('1'

,'amy',15

);select

*from friends;

+----+------+-----+

| id | name | age |

+----+------+-----+|1

| amy |15|

|1| tom |15|

+----+------+-----+

2.自增約束

auto_increment :自動增長,必須和主鍵primary key合在一起用

create

table cups(

id int

primary

keyauto_increment

, name varchar(10

));

--如果忘記新增主鍵約束,怎麼辦?

--通過修改表add新增主鍵:

alter

table table_name add

primary

key(欄位名)

;--或者使用modify修改:

alter

table table_name modify id int

primary

key;

--刪除主鍵:

alter

table table_name drop

primary

key;

3. 唯一約束

約束修飾的字段不可以重複

alter

table table_name add

unique

(欄位名)

;--或者直接在建表的時候在後面新增 unique/unique(欄位1,欄位2)

--如何刪除唯一約束?

alter

table table_name *

*drop

index

** 欄位名;

4. 非空約束

修飾的字段不能為空

建表的時候在字段後新增 not null

5. 預設約束

當我們插入欄位的時候,如果沒有傳值,就會使用預設值

create

table

user

( id int

, name varchar(20

),age int**

default10*

*);insert

into

user

(name)

values

('李白');

select

*from

user;+

----+------+-----+

| id | name | age |

+----+------+-----+|1

| 李白 |10|

+----+------+-----+

6.外來鍵約束

涉及兩個表:主表,副表

其中乙個表的字段必須來自於另乙個表的字段

create

table classes(

id int

primary

key,

name varchar(20

),class_id int);

create

table students(

id int

primary

key,

name varchar(20

),class_id int

,foreign

key(class_id)

references classes(id)

--設定外來鍵);

--主表 classes 中沒有的資料值,在副表中不可以使用。

--在主表中的記錄被副表引用,主表中是不可以刪除的。

7.檢查約束(無效)
create

table student(

*** varchar(3

)check

(*** in

('男'

,'女'))

8. 列舉型別約束

使用enum型別將字段設定在規定地值當中可以起到很好地約束作用,比如說性別

create

table student(

*** enum

('男'

,'女'))

insert

into student values

('gay'

)--這條將會報錯:

data truncated for

column

'***' at row

1

9.觸發器 trigger 約束

詳情可參考:

create

table student(

*** varchar(5

));--建立觸發器set***

create

trigger set*** before insert

on student

for each row

begin

if new.*** notin(

'男',

'女')

then

set new.***=

'女';

--注意;不能丟

endif

;end

;insert

into student values

("flower");

select *** from student;

run:---------

+----+

|*** |

+----+

| 女 |

+----+

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 ...

MySQL建表約束

1 作用 它能夠唯一確定一張表中的一條記錄,也就是我們通過某個字段新增約束,就可以使得該字段不重複且不為空。create table user id int primary key,name varchar 20 使用peimary key 修飾後,插入 insert id就不能為空和重複了。2 多...