MySQL建表約束

2021-09-28 15:29:25 字數 2659 閱讀 5244

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

create table user(

id int primary key,

name varchar(20)

);

使用peimary key 修飾後,插入(insert) id就不能為空和重複了。

2、多個資料加主鍵約束

聯合約束:聯合約束可以在最後新增上primary key(value1,value2)

create table user(

id int primary key,

name varchar(20),

primary key (id,name)

);

聯合主鍵和單個主鍵一樣,任何乙個資料都不能為空。但只有當聯合主鍵裡所有鍵都重複才不能重複。

1、作用:自增約束和主鍵約束primary key 搭配在一起可以自動幫我們輸入並增加資料值

create table user(

id int primary key auto_increment,

name varchar(20),

);

因此當我們輸入

insert into user (name) values(『張三』);

時,資料表自動變成了。 1 張三

作用:約束修飾的字段的值不可以重複。(可以為空)

create table user(

id int,

name varchar(20) ,

unique(name),

);

因此name不能重複。如果使用unique(name,id)則表示這兩個鍵在一起不重複就行。

作用:修飾的字段不能為空null。

create table user(

id int,

name varchar(20) not null

);

此時name不能為空。

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

create table user

id int,

name varchar(20),

age int default 10

);

此時,使用

insert into user(id,name) values(『1』,『張三』);

會發現,並沒有給age傳值,但表為 1 張三 10

涉及到兩個表:父表,子表(主表,副表)。

建立班級表:

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)

);insert int (name) classes values(1,'一班');

insert int (name)classes values(3,'二班');

insert int (name) classes values(4,'三班');

insert int (name) classes values(4,'四班');

insert into student values (1001,'張三',1);

insert into student values (1002,'李四',5);//此時會報錯。

外來鍵約束作用:
1.主表classes中沒有的資料值,在副標(子表)中,是不可以使用的

2.主表中的記錄被副表引用,是不可刪除的。

create table user(

id int,

name varchar(20),

);

1、新增約束
alter table user add primary key(id);
2、刪除約束
alter table user drop primary key;
注意:刪除指定字段約束是:(加上index 與欄位名)

alter tabe user drop index name;
3、使用modify修改字段新增約束
alter tabll user modify id int primary key;
4、foreign key 不能新增常見原因:

1.檢查是否指向的鍵是主鍵。

2.檢查是否已經建立了索引,乙個外來鍵必然會有乙個索引。

3.檢查是否表內已經存有資料,導致約束失敗

4.檢查被參考鍵和參考鍵的型別是否相同

5.檢查是否重建了同名的索引,比如第一次建立失敗,再次建立可能會因為索引重複導致失敗

6.檢查是否在鍵上設定了unsigned。

7、表型別是否相同,如乙個為myisam乙個為innodb

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