赞
踩
主键约束(primary key):
一张表只有一个主键,使得该字段不重复,不为空
首先创建一张表:
create table db (
id int(11) primary key, #创建主键
name char(10),
sex char(1)
);
并插入数据:
insert into db values(001,'张三','男');
insert into db values(002,'李四','男');
insert into db values(003,'王五','男');
insert into db values(004,'马六','女');
接下来使用desc db;
查看表的结构:
于是id成了唯一值,比如‘001’的id不能出现两次当我们尝试添加‘001’这个id时,会出现如下报错:
联合主键:
联合主键就是用2个或2个以上的字段组成主键。
用这个主键包含的字段作为主键,这个组合在数据表中是唯一,且加了主键索引。
联合主键任何一个字段都不能为空。
我们先来创建一张表:
create table db1(
id int(11),
name varchar(11),
sex char(1),
primary key(id,name)
);
这里并不是有两个主键的意思哈,在这里‘id’和‘name’这种组合是唯一的
我可以这样插入数据:
insert into db1 (id,name) values (001,'小王');
insert into db1 (id,name) values (001,'小红');
insert into db1 (id,name) values (002,'小王');
但是我不能这样插入数据 :
insert into db1 (id,name) values (001,'小王');
insert into db1 (id,name) values (001,'小王');
alter用法:
我们创建表的时候忘记创建主键的时候
alter table db1 add primary key(id);
或者
alter table db modify id int primary key;
删除主键:
alter table db drop primary key;
自增约束:
create table db1 (
id int(11) primary key auto_increment, #创建自增约束
name char(10),
sex char(1)
);
于是,我们每insert一条数据,即使不用插入id,id也会随之递增。
演示一下:
insert into db1(name) values ('可莉');
insert into db1(name) values ('甘雨');
insert into db1(name) values ('刻晴');
由此可见,id随之递增
外键约束:
外键约束涉及到两个表:父表与子表
我们先来创建两张表
create table classes(
id int(11) primary key,
name varchar(20)
);
create table students(
id int(11) primary key,
name varchar(20),
class_id int,
foreign key(class_id) references classes(id) #设置外键(class_id)与表classes中的id相关联
);
insert into classes values (1,'一班');
insert into classes values (2,'二班');
insert into classes values (3,'三班');
insert into student values (001,'甘雨',1);
insert into student values (002,'可莉',2);
insert into student values (003,'神里凝华',3);
以上代码可以执行,但是我们插入这条数据insert into student values (004,'七七',4)
就会报错,原因是,我们父表没有创建‘4班’,子表的外键有四班的数据,所以就会报错
唯一约束:
唯一约束:改字段的值不重复
唯一约束与主键约束比较明显的区别是:
唯一约束可以为:NULL
主键约束不可为:NULL
create table db2(
id int(11) unique,
name char(11),
sex char(2)
);
或者创建完表之后用:
alter table db2 add unique(id);
非空约束:
create table db2(
id int(11),
name char(11) not null,
sex char(1)
);
alter用法:
alter table db2
change column id
id int(11) not null;
默认约束:
填写默认值,即使不插入改字段的数据,插入其它数据时按照填写的默认值进行补充
create table db3(
id int(11),
name char(11),
sex char(1) default '男'
);
比如:
我插入了一条数据,没有填写sex,sex默认为‘男’
insert into db3(id,name) values (001,'小王');
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。