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