MySQL(9):数据表的约束(列的属性)
1.首先我们看一下这个图:
1、NULL| not NULL是否为空
规定一个字段的值是否为NULL
2、Default value 字段默认值属性
常见的是一个字段不能为空,而且存在默认值
create table php2(
a int not null default 10,
b int not null default 21
);
insert into php2(a) values(a); //a 默认是10
insert into php2(b) values(b);//b默认是21
3、primary key |unique key(关键字)
主索引 | 唯一索引
可以唯一标识,某条记录的字段或者是字段的集合,就是主键
主键可以是真实实体的属性
但是常用的好的解决方案:
利用一个与实体信息不相关的属性,作为唯一标识记录(如下图)、
设置主键的语法:primary key 完成
两种方案:
(1).字段上设置:
create table teacher(
t_id int primary key, //这里主键的类型为 int ,也就是说主键可以为正也可以为负
t_name varchar(5),
class_name varchar(6),
days tinyint unsigned
);
t_id 设置为主键之后,默认不能为null,
主键就是搜索的时候用到的关键字:
(2).在定义完了字段之后,可以定义为:
create table teacher1(
t_id int,
t_name varchar(5),
class_name varchar(6),
days tinyint unsigned,
primary key(t_id)
);
下面可以清楚地看到t_id 为 no null
也可以同时设置多个字段构成唯一主键(每个表:主键是唯一的),如下:
create table teacher2(
t_id int,
t_name varchar(5),
class_name varchar(6),
days tinyint unsigned,
primary key(t_id,class_name)// t_id 和 class_name 两个字段
);
4.自动增长
目的:为每条记录提供一个唯一的标示
每次插入记录时,将某个字段的值自动增加1;
使用auto_increment 标识
需要整型,还需要有索引…………
create table teacher3(
t_id int primary key auto_increment,
t_name varchar(5),
class_name varchar(6),
days tinyint unsigned
);
添加两条语句:
insert into teacher3 values(null, 'hebao', '0228', 34);
insert into teacher3 values(null, 'bufan, '0223', 45);
如下图:发现这个t_id 是唯一的 ,自动增长的
alter table teacher3 auto_inscrement 10;
insert into teacher3 values (null, 'fei', '0115', 32);
如果这时候我们再次:
alter table teacher3 auto_increment 5;
insert into teacher3 values(null, 'fly','0115', 98);
出现的结果是:你会发现新增加的 是以 11 为id索引的
当然主键也可以在初始化
insert into teacher3 values(5, 'flrt','0123', 56);
这个插入的元素是在'bufan'后面的
1
2
5
.
.
.
只要键值唯一不冲突,也是可以修改的,如下:
update teacher3 set t_id=21 where t_name='赵A' ;