主键
顾名思义:主要的键,primary key
,在一张表中,有且只有一个字段,里面的值具有唯一性。
创建主键
随表创建
系统提供了两种增加主键的方式。
-
方案一:直接在需要当做主键的字段之后,增加
primary key
属性来确定主键create table my_pri1( name varchar(10) primary key )charset=utf8;
-
方案二:在所有字段之后增加
primary key
选项:primary key(字段信息)
create table my_pri2( name varchar(10), primary key(name) )charset=utf8;
表后增加
基本语法:
alter table 表名 add primary key(字段);
create table my_pri3(
username varchar(10)
)charset=utf8;
alter table my_pri3 add primary key(username);
查看主键
-
方案一:查看表结构
desc my_pri2;
-
方案二:查看表的创建语句
show create table my_pri3;
删除主键
基本语法:
alter table 表名 drop primary key;
复合主键
案例:有一张学生选修课表:一个学生可以选修多个选修课,一个选修课也可以由多个学生来选:但是一个学生在一个选修课中只有一个成绩。
create table my_score(
student_no char(10),
course_no char(10),
score tinyint NOT NULL,
primary key(student_no,course_no)
)charset=utf8;
主键约束
主键一旦增加,那么对对应的字段有数据要求
-
当前字段对应的数据不能为空
-
当前字段对应的数据不能有任何重复
- 插入正常数据
insert into my_score values('00000001','course001',100); insert into my_score values('00000002','course001',90); insert into my_score values('00000001','course002',95);
- 插入重复主键
insert into my_score values('00000002','course001',98);
主键分类
主键分类采用的是主键所对应的字段的业务意义分类
业务主键:主键所在的字段,具有业务意义(学生ID,课程ID)
逻辑主键:自然增长的整型(应用比较广泛)