主键(primary key)和唯一键(unique) 知识点总结

本文详细介绍了数据库中主键和唯一键的概念及其应用。包括主键的特点、自增长字段的使用方法、联合主键的定义及应用场景,以及唯一键的作用和添加方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

主键(Primary key)

  • 概念

主键用于唯一标识表中的每一条数据。

  • 主键的特征:

不能重复, 不能为空。

  • 示例
create table stu1(
    id int auto_increment primary key, <------#主键
    name varchar(20)
);

注意点:

auto_increment的字段必须是主键, 但是主键不一定是auto_increment的。
一个表只能有一个主键, 但是主键可以是1个或多个字段组成。

  • auto_increment 自增长
  1. 自增长字段的值从1开始, 每次递增1。
  2. 自增长字段数据不可以重复, 合适生成唯一的id。
  3. 自增长字段可以使用null或者default来设置值。
  4. 自增长字段必须是主键 (primary key)。
  • 错误示例
错误示例1
create table stu2(
    id int auto_increment, <------#会报错, 自增长的字段必须是主键
    name varchar(20)
);


错误示例2
create table stu3(
    id1 int primary key,
    id2 int primary key, <------#会报错,一张表只能有一个主键
    name varchar(20)
);
  • 正确示例
添加主键的第一种方式
create table stu4(
    id1 int primary key,   <------#直接指定主键字段
    id2 int,
    name varchar(20)
);


添加主键的第二种方式
create table stu5(
    id1 int,
    id2 int,
    name varchar(20),
    primary key(id1)  <------#语句最后指定主键字段
);


添加主键的第三种方式
create table stu6(
    id1 int,
    id2 int,
    name varchar(20)
);
没有主键的情况下添加主建
alter table stu6 add primary key(id1); <------#表创建完成后添加主键
  • 联合主建
create table stu7(
    id1 int,
    id2 int,
    name varchar(20),
    primary key(id1,id2) <------#主键由两个字段组成
);

#不是指定两个主键, 一个primary key就是指定一个主键
#这里只出现了一个primary key, 所以只指定了一个主键
#只不过这个主键比较特殊, 是由两个字段共同组成的
  • 联合主键的应用场景:

如果表中无论哪一个字段都无法保证数据的唯一性,可以使用多个字段组合在一起用来保证数据的唯一性。

  • 企业开发中如何选择主键?

最少性: 尽量选择一个字段作为主键。
稳定性: 尽量选择更新少的字段作为主键。
尽量选择整数类型的字段作为主键。
结论: 搞一个id字段类型为int, 设置自动增长, 作为主键。

唯一键(unique)

  • 作用

避免添加重复数据, 也就是说如果想保证某一个字段的值永远不重复, 那么就可以将这个字段设置为唯一键。

注意点:

唯一键不是主键, 主键有一个特点是不能重复, 但是唯一键不等于主键。
一张表中只能有一个主键, 但是一张表中可以有多个唯一键。

  • 没有添加唯一键
create table if not exists stu1(
    id int auto_increment primary key,
    name varchar(20) <------ #可以添加重复数据
);
  • 添加唯一键
1.添加唯一键的第一种方式
create table if not exists stu2(
    id int auto_increment primary key,
    name varchar(20) unique <------#建表时字段后面添加unique,name不可以添加重复数据
);


2.添加唯一键的第二种方式
create table if not exists stu(
    id int auto_increment primary key,
    name varchar(20),
    unique key(name) <------#语句最后添加,name不可以添加重复数据
);


3.添加唯一键的第三种方式
create table if not exists stu(
    id int auto_increment primary key,
    name varchar(20)
);
alter table stu add unique(name); <------#建表完成指定唯一键


4.添加多个唯一键方式
create table if not exists stu11(
    id int auto_increment primary key,
    name varchar(20) unique,
    score int unique
);
  -------此时name和score都是唯一键。
  • 删除唯一键
语法
alter table 表名 drop index  唯一键字段名;
示例
alter table stu11 drop index name;  
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值