MYSQL 建表約束

2021-10-04 03:18:13 字數 2926 閱讀 9462

**以下所有約束狀態均能用describe查詢

1、主鍵約束:

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

**①方法一:**

create table user( # 建立表

id int primary key, # 建立主鍵約束,id將不能重複新增

name varchar(20)

);**②方法二:聯合主鍵,只要主鍵加起來不重複就可以。**

create table user2(

id int,

name varchar(20),

password varchar(20),

primary key(id, name) # 在此約束主鍵,可聯合,任一不能為空

); insert into user2 value(1, '張三', '123');

insert into user2 value(2, '張三', '123'); √

**③如果忘記建立主鍵約束:**

alter table user4 add primary key(id); # 修改**約束,新增主鍵約束

alter table user4 drop primary key; # 刪除主鍵約束

alter table user4 modify id int primary key; # 使用modify修改字段,新增主鍵約束

2、自增約束:在新增記錄時將自動增加約束
create table user3(

id int primary key auto_increment, # 在新增項時id自動增加

name varchar(20)

);insert into user3 (name) values('張三'); # id=1

insert into user3 (name) values('張三'); # id =2

3、唯一約束:約束修飾的字段的值不可以重複(可以為空)
**①方法一**

create table user5(

id int,

name varchar(20)

);alter table user5 add unique(name); # 新增位於約束,name不能重複

# 比如身份證

**②方法二:唯一約束也可以組合約束**

creat table user6(

id int,

name varchar(20),

unique(name)

);**③方法三**

creat table user7(

id int,

name varchar(20) unique

**④修改唯一約束:**

alter table user7 add unique(name); #增加唯一約束

alter table user7 drop index name; # 刪除唯一約束

alter table user7 modify name varchar(20) unique; # 修改唯一約束

4、非空約束:修飾的字段不能為空 null
create table user9(

id int,

name varchar(20) not null

);insert into user9 values(1,); # 由於沒有增加namechar,增加失敗

非空約束not null也可以使用 add drop modify等進行修改

5、預設約束:當我們插入字段值的時候,如果沒有傳值,就會使用預設值
create table user10(

id int,

name varchar(20),

age int default 10

);

6、外來鍵約束:涉及到父表、子表,主表、副表
**--班級表**

create table classes(

id int primary key,

name varchar(20)

);**--學生表**

create table students(

id int primary key,

name varchar(20),

class_id int,

foreign key(class_id) references classes(id) # 將學生表的class_id 與班級表中的id繫結

); insert into classes values(1,'一班');

insert into classes values(2,'二班');

insert into classes values(3,'三班');

insert into classes values(4,'四班');

insert into students values(1001,'張三',1); # √

insert into students values(1002,'張三',2); # √

insert into students values(1003,'張三',3); # √

insert into students values(1004,'張三',4); # √

insert into students values(1005,'李四',5); # ×,外來鍵連線失敗

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

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

delete from classes where id =4; # ×

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