全国咨询/投诉热线:400-618-9090

首页技术文章正文

JAVA培训之主键增长、非空及唯一约束

更新时间:2017-04-16 来源:黑马程序员Java培训学院 浏览量:

主键增长、非空及唯一约束

1.主键自增长

MySQL提供了主键自动增长的功能,所谓的自增长是指在用户没有给出主键值时,MySQL数据库会自动为该条记录生成一个主键值,这个主键值是在最大主键值的基础上加1,这样这个表中就不会出现重复的主键值。
设置主键自增长的关键词是AUTO_INCREMENT,对应的sql语句如下:
CREATE TABLE stu(
                   sid INT PRIMARY KEY AUTO_INCREMENT,
                   sname      VARCHAR(20),
                   age            INT,
                   gender     VARCHAR(10)
  );
设置主键自增长必须要求主键列的类型是整型,这样才能完成自增长。
(1)下面我们来创建一个主键自增长的表,如图1-1所示:
1554343254050_1.png
图1-1 创建主键自增长的表
(2)表的主键虽然是自增长的,我们也可以在插入记录时给出主键值,如图1-2所示:
1554343260710_2.png
图1-2 插入给定主键值的记录
(3)再向stu3表中插入一条记录,不给出主键值,然后再查询stu3表的所有记录,如图1-3所示:
1554343275553_3.png
图1-3 插入无主键的记录
图1-3中,第二次插入的记录的主键值为1112,是第一次插入的记录的主键值加1的结果,这就是MySQL数据库底层主键自增长的算法,在当前最大主键值的基础上加1。
(4)现在将stu3表中的记录全部删除,然后再向该表中插入一条没有主键值的记录,如图1-4所示:
1554343283791_4.png
图1-4 查询结果
图1-3中,没有删除之前主键的最大值是1112,将记录全部删除之后再次插入一个无主键值的记录,MySQL数据库为它生成的主键值是1113,这表明MySQL数据库会记录当前最大的主键值,无论有没有记录被删除,再次添加无主键记录时都会在它记录的最大主键值的基础上加1,然后赋给新纪录的主键。
在以后的开发中,表的主键一般采用代理主键,所谓代理主键就是没有特定含义的主键,例如,一个人的身份证号如果做主键的话,那么这个主键就不是一个代理主键,而是一个自然主键,因为它代表了一定的含义,我们一般不会使用自然主键。另外,主键自增长有一定的局限性,今后我们会使用UUID生成主键,这样产生的主键永远不会重复。

2.非空约束

非空约束的作用与主键约束中的非空特性一样,非空约束的关键词是:NOT NULL,指定非空约束的列的值不能为null,其对应的sql语句如下:
CREATE TABLE stu4(
                  sid INT PRIMARY KEY AUTO_INCREMENT,
                  sname VARCHAR(10) NOT NULL,
                  age            INT,
                  gender     VARCHAR(10)
);
这里我们就不再演示非空约束,如果一个列指定了非空约束,那么它的值就不能为空,否则会报错。

3.唯一约束

所谓唯一约束就是说指定唯一约束的列的值不能重复,但是可以为null,它的关键词是:UNIQUE,对应的sql语句是:
CREATE TABLE tab_ab(
         sid INT PRIMARY KEY AUTO_INCREMENT,
         sname VARCHAR(10) UNIQUE
);
这里我们也不再演示唯一约束,以上sql语句中sname列上指定了唯一约束,那么sname列的值就不能重复。

本文版权归黑马程序员Java培训学院所有,欢迎转载,转载请注明作者出处。谢谢!

作者:黑马程序员Java培训学院

首发:http://www.itheima.com/special/hmjavaeezly/

javaee

python

web

ui

cloud

test

c

netmarket

pm

Linux

movies

robot

http://www.itcast.cn/subject/uizly/index.shtml?seozxuids

14天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

15天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

8天免费试学

基础班入门课程限时免费

申请试学名额

20天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

0天免费试学

基础班入门课程限时免费

申请试学名额

12天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

5天免费试学

基础班入门课程限时免费

申请试学名额

10天免费试学

基础班入门课程限时免费

申请试学名额
在线咨询 我要报名