主键约束
主键--就是数据表中记录的唯一标识,在一张表中只能有一个主键(主键可以是一个列,也可以是多个列的组合)
当一个字段声明为主键之后,添加数据时:
。此字段数据不能为null
。此字段数据不能重复
创建表时添加主键约束
create table books(
book_isbn char(4) primary key,
book_name varchar(10) not null
book_author varchar(6)
);
或者
create table books(
book_isbn char(4),
book_name varchar(10) not null
book_author varchar(6),primary key(book_isbn)
);
删除数据表主键约束
Alter table <数据表> drop primary key
创建表之后添加主键约束
## 创建表时没有添加主键约束create table booksbook_isbn char(4)book_name varchar(10) not null,book_author varchar(6)
## 创建表之后添加主键约束alter table books modify book_isbn char(4) primary key ;
主键自动增长
在我们创建一张数据表时,如果数据表中有列可以作为主键(例如: 学生表的学号、图书表的isbn)我们可以直接这是这个列为主键;
当有些数据表中没有合适的列作为主键时,我们可以额外定义一个与记录本身无关的列(ID)作为主键,列数据无具体的含义主要用于标识一条记录,在mysal中我们可以将此列定义为int,同时设置为 自动增长当我们向数据表中新增一条记录时,无需提供ID列的值,它会自动生成。
定义主键自动增长
auto increment*定义int类型字段自动增长:
create table types(
type_id int primary key auto_incretype_name varchar(20) not null,type_remark varchar(10)
注意:自动增长从1开始,每添加一条记录,自动的增长的列会自定+1,当我们把某条记录删除之后再深加数据,自动增长的数据也不会重复生成 (自动增长只保证唯一性、不保证连续性)
联合主键(将数据表中的多列组合在一起设置为表的主键)
定义联合主键
create table grades(
stu_num char(8),
course_id int,
score int,
primary key(stu_num, course_id)
):
注意:在实际企业项目的数据库设计中,联合主键使用频率并不高;当一个数据表中没有明确的字段可以作为主键时,我们可以额外添加一个ID字段作为主键。