11.2 MySQL:列属性:主键(一张表只能有最多一个主键)复合主键

11.2 MySQL:列属性:主键(一张表只能有最多一个主键)复合主键

主键: primary key,主要的键. 一张表只能有一个字段可以使用对应的键, 用来唯一的约束该字段里面的数据, 不能重复: 这种称之为主键.

一张表只能有最多一个主键.

   

增加主键

SQL操作中有多种方式可以给表增加主键: 大体分为三种.

   

方案1: 在创建表的时候,直接在字段之后,跟primary key关键字(主键本身不允许为空)

1.png

-- 增加主键

create table my_prim1(

name varchar(20) not null comment '姓名',

number char(10) primary key comment '学号: itcast + 0000, 不能重复'

)charset utf8;

 

优点: 非常直接; 缺点: 只能使用一个字段作为主键

 

复合主键

方案2: 在创建表的时候, 在所有的字段之后, 使用primary key(主键字段列表)来创建主键(如果有多个字段作为主键,可以是复合主键)

1.png

-- 复合主键

create table my_pri2(

number char(10) comment '学号: itcast + 0000',

course char(10) comment '课程代码: 3901 + 0000',

score tinyint unsigned default 60 comment '成绩',

-- 增加主键限制: 学号和课程号应该是对应的,具有唯一性

primary key(number,course)

)charset utf8;

 

 

方案3: 当表已经创建好之后, 额外追加主键: 可以通过修改表字段属性, 也可以直接追加。

alter table 表名 add primary key(字段列表);

1.png

前提: 表中字段对应的数据本身是独立的(不重复)

   

主键约束

主键对应的字段中的数据不允许重复: 一旦重复,数据操作失败(增和改)

1.png

更新主键 & 删除主键

没有办法更新主键: 主键必须先删除,才能增加.

   

Alter table 表名 drop primary key;

1.png

主键分类

在实际创建表的过程中, 很少使用真实业务数据作为主键字段(业务主键,如学号,课程号); 大部分的时候是使用逻辑性的字段(字段没有业务含义,值是什么都没有关系), 将这种字段主键称之为逻辑主键.

   

Create table my_student(

Id int primary key auto_increment comment '逻辑主键: 自增长',    -- 逻辑主键

Number char(10) not null comment '学号',

Name varchar(10) not null

)

   

 

自增长

自增长: 当对应的字段,不给值,或者说给默认值,或者给NULL的时候, 会自动的被系统触发, 系统会从当前字段中已有的最大值再进行+1操作,得到一个新的不同的字段.

   

自增长通常是跟主键搭配.

   

新增自增长

自增长特点: auto_increment
1、任何一个字段要做自增长必须前提是本身是一个索引(key一栏有值)

1.jpg

2.自增长字段必须是数字(整型)

1.jpg

3.一张表最多只能有一个自增长

1.jpg

自增长使用

当自增长被给定的值为NULL或者默认值的时候会触发自动增长.

1.png

自增长如果对应的字段输入了值,那么自增长失效: 但是下一次还是能够正确的自增长(从最大值+1)

1.png

如何确定下一次是什么自增长呢? 可以通过查看表创建语句看到.

如下图:AUTO_INCREMENT=8 即表示该自增长的下一个值为8

1.png

修改自增长

自增长如果是涉及到字段改变: 必须先删除自增长,后增加(一张表只能有一个自增长)

修改当前自增长已经存在的值: 修改只能比当前已有的自增长的最大值大,不能小(小不生效)

Alter table 表名 auto_increment = 值;

1.jpg

向上修改可以

1.png

思考: 为什么自增长是从1开始?为什么每次都是自增1呢?

所有系统的变量(如字符集,校对集)都是由系统内部的变量进行控制的.

查看自增长对应的变量: show variables like 'auto_increment%';

1.png

可以修改变量实现不同的效果: 修改是对整个数据修改,而不是单张表: (修改是会话级)

会话级:表示只对当前本次有效,关闭了数据库连接之后,就失效了

Set auto_increment_increment = 5; -- 一次自增5

1.png

测试效果: 自动使用自增长

1.png

2.png

删除自增长

自增长是字段的一个属性: 可以通过modify来进行修改(保证字段没有auto_increment即可)

Alter table 表名 modify 字段 类型;

1.png


MySQL(列表、list、全)mysqllist
http://www.zh-cjh.com/wenzhangguilei/2503.html
文章归类、所有文章列表、LISTLIST
http://www.zh-cjh.com/wangzhangonggao/2195.html

1、本站资源长期持续更新。
2、本资源基本为原创,部分来源其他付费资源平台或互联网收集,如有侵权请联系及时处理。
3、本站大部分文章的截图来源实验测试环境,请不要在生产环境中随意模仿,以免带来灾难性后果。

转载请保留出处:  www.zh-cjh.com珠海陈坚浩博客 » 11.2 MySQL:列属性:主键(一张表只能有最多一个主键)复合主键

作者: cjh


手机扫一扫,手机上查看此文章:

一切源于价值!

其他 模板文件不存在: ./template/plugins/comment/pc/index.htm

未雨绸缪、居安思危!

数据安全、有备无患!

注意操作、数据无价!

一切源于价值!