## 主键
顾名思义:主要的键,primary key,在一张表中,有且只有一个字段,里面的值具有唯一性.
系统提供了两种增加主键的方式:
随表创建 :
1. 方案1:直接在需要当做主键的字段之后,增加primary key属性来确定主键.
~~~
create table 表名(
id int primary key
);
~~~
2. 方案2:在所有字段之后增加primary key选项:primary key(字段信息).
~~~
create table 表名(
id int,
primary key(id)
);
~~~
表后创建 :
~~~
alter table 表名 add primary key(字段);
~~~
#### 删除主键
~~~
alter table 表名 drop primary key;
~~~
#### 复合主键
场景 :有一张学生选修课表:一个学生可以选修多个选修课,一个选修课也可以由多个学生来选:但是一个学生在一个选修课中只有一个成绩.
~~~
create table class(
name varchar(20) not null,
score tinyint unsigned,
primary key(name,score)
);
效果:
+-------+---------------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+---------------------+------+-----+---------+-------+
| name | varchar(20) | NO | PRI | NULL | |
| score | tinyint(3) unsigned | NO | PRI | NULL | |
+-------+---------------------+------+-----+---------+-------+
~~~
#### 主键约束
主键一旦增加,那么对对应的字段有数据要求:
1. 当前字段对应的数据不能为空.
2. 当前字段对应的数据不能有任何重复.
#### 主键分类
主键分类采用的是主键所对应的字段的业务意义分类 :
1. 业务主键:主键所在的字段,具有业务意义(学生ID,课程ID).
2. 逻辑主键:自然增长的整型(应用广泛).
- 数据库介绍
- 数据库基本概念
- SQL介绍
- MySQL服务端架构
- 库操作
- 表操作
- 字段类型
- 整数类型
- 小数类型
- 字符串类型
- 日期/时间类型
- json类型
- 字段属性
- Null
- 默认值
- 列描述
- 主键
- 自动增长
- 唯一键
- 数据库基础操作
- 增
- 删
- 改
- 查
- 运算符
- 算术运算符
- 比较运算符
- 逻辑运算符
- in运算符
- is运算符
- like运算符
- 高级查询
- 联合查询
- 连接查询
- 交叉连接
- 内连接
- 外连接
- Using关键字
- 子查询
- 标量子查询
- 列子查询
- 行子查询
- 表子查询
- exists子查询
- 子查询特定关键字
- 用户权限管理
- 用户管理
- 权限管理
- 外键
- 外键操作
- 外键基本要求
- 约束
- 视图
- 事务安全
- 自动事务
- 手动事务
- 事务特点
- 变量
- 系统变量
- 会话变量
- 局部变量
- 流程结构
- if分支
- while循环
- 函数
- 内置函数
- 字符串函数
- 时间函数
- 数学函数
- 其他函数
- 存储过程
- 与函数的区别
- 存储过程操作
- 存储过程的形参类型
- 触发器
- 触发器概念
- 触发器操作