MySQL建表約束

2021-09-25 01:18:18 字數 3368 閱讀 4692

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

create table user(

id int primary key,

name varchar(20)

);insert into user values(1,'張三')

唯一:不能再次插入id=1的記錄(資料)

不能為空:insert into user values(null,『張三』)

聯合主鍵

只要聯合的主鍵值加起來不重複就可以

create table user2(

id int,

name varchar(20),

password varchar(20),

primary key(id,name)

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

insert into user2 values(1,'李四','123') //只要不同時重複就可以

當然主鍵不能為空的規則還是一樣的

auto_increment

自動幫我們管控欄位的值

create table user3(

id int primary key auto_increment,

name varchar(20)

);insert into user3 (name) values('張三')

insert into user3 (name) values('張三')

|id|name |

|1|張三|

|2|張三|

前面提到了自增約束和主鍵約束的聯合使用

那麼,如果說我們建立表的時候,忘了建立主鍵約束,應該怎麼辦?

新增

create table user4(

id int,

name varchar(20)

);alter table user4 add primary key(id);

刪除
alter table user4 drop primary key;
修改

使用modify修改字段 新增約束

alter table user4 modify id int primary key;
這樣又新增了主鍵

修飾的字段不可以重複

方案1 用alter建立約束

create table user5(

id int,

name varcahr(20)

);alter table user5 add unique(name); //

insert into user5 values(1,'張三');

insert into user5 values(1,'張三');//就不可以,name不能重複

注意:主鍵約束與唯一約束的區別,主鍵約束不能為空,且不重複,唯一約束不能重複

方案二 用建立表的形式去新增

create table user6(

id int,

name varhar(20),

unique(name)

);

unique(id,name)  //類似於聯合主鍵,兩個一起不重複就可以
方案三 用modify去新增約束

刪除唯一約束

alter table user6 drop index name;
新增
alter table user6 modify name varchar(20) unique;
修飾的字段不能為空null

create table user7(

id int,

name varcahr(20) not null

);

insert into user7 (name) values(『李四』) //id可以為空

insert into user7 (id) values(1) //id不可以為空

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

create table user8(

id int,

name varchar(20),

age int default 10

);insert into user8 (id,name) values(1,'張三')

| id|name |age

|1 |張三 | 10

傳了值就不會使用預設值

insert into user8 (id,name) values(1,『張三』,19)

| id|name |age

|1 |張三 | 19

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

//班級

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 class(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);

副表裡的東西是要參照主表,主表不存在的話,就不能新增

delete from classes where id=4;

正在被引用,不能刪除

注意:1、主表(父表)classes中沒有的資料值,在副表(子表)中,是不可以使用的

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

Mysql建表約束

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

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