07列属性
01列属性——自动增长
-
字段从1开始每次递增1,特点是字段中的数据不可能重复,适合记录生成唯一id。
-
自动增长都是无符号整数。
-
在MySQL中,auto_increment必须是主键,但主键不一定自增。
-
如果要给自增的字段插入数据,使用null关键字。
-
自动增长列上的数据被删除,则默认情况下此记录的编号就不会再使用了。
-
字段从1开始
02列属性——主键
- 主键是唯一标识表中记录的一个列或一组列。
- 主键特点:值不能重复,不能为空。
- 一个表只能有一个主键,一个主键可以由多个字段共同组成。
- 主键的创建:
- 创建表时,在数据类型后直接写primary key。
- 创建表时,使用primary key(字段名) 语句创建一般主键或组合键。
- 修改表时,用语句
alter table add 表名 primary key (字段名);
添加主键。 - 修改表时,使用modify或change关键字也可以添加主键。
- 主键的删除:
alter table 表名 drop primary key;
- 主键的作用:
- 保证数据完整性。
- 加快查询速度。
- 选择主键的原则:
- 最少性:尽量选择一个字段做主键。
- 稳定性:尽量选择更新少的列做主键。
- 尽量选择数字类型的列做主键。
- 关于主键的一些思考题:
- 在主键列输入数值,允许为空吗?——不可以
- 一个表可以有多个主键吗?——不可以
- 一个学校数据库中,如果一个学校内,允许学员重名,但是在班级内,不允许学员重名,可以组合班级和姓名做主键吗?——可以
- 标识列(自动增长列)允许为字符数据类型吗?——不允许
- 表中没有合适的列做主键怎么办?——添加自动增长列。
- 一个表可以有两个自动增长列吗?——不可以
例子(关于创建和删除主键):
/*
一、创建表时添加主键
*/
# 4.a 在数据类型后直接写primary key。
create table t1(
id int primary key,
name varchar(10)
);
# 4.b 使用primary key(字段名) 语句创建一般主键或组合键。
create table t2(
id int ,
name varchar(10),
primary key(id) -- 添加一个主键
);
create table t3(
id int ,
name varchar(10),
primary key(id,name) -- 添加一个组合键
);
/*
二、修改表时添加主键
*/
alter table t4 add primary key (id); -- 添加一个主键
alter table t4 add primary key (id,name) -- 添加一个组合键
/*
三、删除主键
*/
alter table t6 drop primary key;
03列属性——唯一键
-
特点:
- 不能重复,可以为空。
- 一个表可以有多个唯一键。
-
作用:
- 保证数据不能重复,保障数据完整性。
- 加快数据访问。
-
查看唯一键:
语法:
show create table 表名 \G;
-
添加唯一键:
- 创建表时,直接在数据类型后写
unique [key]
关键词。 - 创建表时,写
unique (字段名);
创建一个唯一键。 - 创建表时,写
unique (字段名1),unique (字段名2),……
创建多个唯一键。 - 创建表时,写
unique (字段名1,字段名2,....)
创建组合唯一键。 - 修改表时使用
alter table 表名 add unique (字段名);
添加一个唯一键。 - 修改表时使用
alter table 表名 add unique (字段名1) , add unique(字段名2),....;
添加多个唯一键。 - 修改表时使用
alter table 表名 add unique (字段名1,字段名2,....);
添加组合唯一键。 - 使用modify或change关键词也可以添加唯一键。
- 创建表时,直接在数据类型后写
-
删除唯一键:
alter table 表名 drop index 唯一键的名字;
-
查询唯一键的名字:
show create table 表名 \G;
,唯一键可以自己命名,在适当位置命名即可。
# 唯一键的创建与删除
/*
一、创建表时创建唯一键
*/
# 4.a 创建表时,直接在数据类型后写 unique [key]关键词。
create table t1(
id int,
stuid char(11) unique comment '学号',
name varchar(10) unique,
);
# 4.b 创建表时,写 unique (字段名);创建一个唯一键。
create table t2(
id int ,
stuid char(11),
name varchar(10),
unique(stuid)
);
# 4.c 创建表时,写 unique (字段名1),unique (字段名2),……创建多个唯一键。
create table t3(
id int ,
stuid char(11),
name varchar(10),
unique(stuid),
unique(name)
);
# 4.d 创建表时,写 unique (字段名1,字段名2,....)创建组合唯一键。
create table t4(
id int,
stuid char(11),
name varchar(10),
unique(stuid,name)
)
/*
二、修改表时创建唯一键
*/
# 4.e 修改表时使用 alter table 表名 add unique (字段名);添加唯一键。
alter table t5 add unique (stuid);
# 4.f 修改表时使用 alter table 表名 add unique (字段名1) , add unique(字段名2),....;添加多个唯一键。
alter table t6 add unique (stuid),add unique(name);
# 4.g 修改表时使用 alter table 表名 add unique (字段名1,字段名2,....);添加组合唯一键。
alter table t7 add unique (stuid,name);
/*
三、删除唯一键
*/
alter table 表名 drop index 唯一键的名字;
04列属性——备注
为了程序员之间的交流,使用comment在创建表时进行备注。实用查询显示创建表的语句查看备注,没啥可说的。
05注释
# 这是一个单行注释
-- 这是一个单行注释
/*
这是一个多行注释
*/
网友评论