MySQL(9):数据表的约束(列的属性)

时间:2022-09-21 11:10:33

1.首先我们看一下这个图:

MySQL(9):数据表的约束(列的属性)

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

MySQL(9):数据表的约束(列的属性)

 

3、primary key |unique key(关键字)

主索引 | 唯一索引

可以唯一标识,某条记录的字段或者是字段的集合,就是主键

主键可以是真实实体的属性

但是常用的好的解决方案

利用一个与实体信息不相关的属性,作为唯一标识记录(如下图)、

MySQL(9):数据表的约束(列的属性)

 

设置主键的语法: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,

主键就是搜索的时候用到的关键字

MySQL(9):数据表的约束(列的属性)

 

(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

MySQL(9):数据表的约束(列的属性)

也可以同时设置多个字段构成唯一主键(每个表:主键是唯一的),如下:

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 两个字段
);

MySQL(9):数据表的约束(列的属性)

 

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

MySQL(9):数据表的约束(列的属性)

 

添加两条语句:

insert into teacher3 values(null, 'hebao', '0228', 34);

insert into teacher3 values(null, 'bufan, '0223', 45);

如下图:发现这个t_id 是唯一的自动增长的

MySQL(9):数据表的约束(列的属性)

 

 

alter table teacher3 auto_inscrement 10;

insert into teacher3 values (null, 'fei', '0115', 32);

MySQL(9):数据表的约束(列的属性)

 

如果这时候我们再次:

alter table teacher3 auto_increment 5;
insert into teacher3 values(null, 'fly','0115', 98);

出现的结果是:你会发现新增加的 是以 11 为id索引的

MySQL(9):数据表的约束(列的属性)

 

 

当然主键也可以在初始化

insert into teacher3 values(5, 'flrt','0123', 56);
这个插入的元素是在'bufan'后面的

1

2

5

.

.

.

只要键值唯一不冲突,也是可以修改的,如下:

update  teacher3  set t_id=21  where  t_name='赵A' ;