当前位置: 首页 > news >正文

5.1 实体完整性

一个表只能有一个主键约束,且主键约束不能取空值
通过unique约束定义唯一性,为了保证一个表非主键列不输入重复值,可在该列定义unique约束。 

primary key约束与unique约束主要区别如下。 
(1)一个表只能创建一个primary key约束,但可创建多个unique约束。
(2)primary key约束的列值不允许为空值,unique约束的列值取空值。
(3)创建primary key约束时,系统会自动产生primary key索引。创建unique约束时,系统会自动产生unique索引。 

primary key约束与unique约束都不允许对应列存在重复值。 

5.1.1 主键约束

MySQL的主键列必须遵守以下规则

(1)每个表只能定义一个主键。 
(2)表中的两条记录在主键上不能具有相同的值,即遵守“唯一性规则”
(3)如果从一个复合主键中删除一列后,剩下的列构成的主键仍然满足唯一性原则,那么,这个复合主键是不正确的,这就是“最小化规则”。 
(4)一个列名在复合主键的列表中只能出现一次。 

1.在创建表时创建主键约束

【例8.1】在数据库study中创建"课程1"表,以列级完整性约束方式定义主键。 

create table 课程1(课程号 char(4) not null primary key,课程名 char(16) not null,学分 tinyint null);

【例8.2】在数据库stusys中创建course2表,以表级完整性约束方式定义主键。 

create table 课程2(课程号 char(4) not null, 课程名 char(16) not null, 学分 tinyint null,  primary key(课程号)); 

【例8.3】在数据库stusys中创建course3表,以表级完整性约束方式定义主键,并指定主键约束名称。 

create table 课程3(课程号 char(4) not null primary key,课程名 char(16) not null,学分 tinyint null,constraint pk_课程3 primary key(课程号));

2.删除主键约束

 语法格式:

alter table<表名> drop primary key; 

【例8.4】删除例8.3创建的在course3表上的主键约束。 

alter table 课程3drop primary key;

3.在修改表时创建主键约束

语法格式: 

alter table<表名> 
add ( [ constraint T < 约束名 > ] primary key ( 主键列名 ) 

【例8.5】重新在course3表上定义主键约束。 

alter table 课程3add constraint pk_课程3 primary key(课程号);

5.1.2唯一性约束

唯一性约束的值必须是唯一的,不允许重复。一个表可创建多个唯一性约束。 

1.在创建表时创建唯一性约束

【例8.6】在数据库stusys中创建course4表,以列级完整性约束方式定义唯一性约束。 

create table 课程4(课程号 char(4) not null, 课程名 char(16) not null unique, 学分 tinyint null);  


在课程名列定义的后面加上unique关键字,列级定义唯一性约束,未指定约束名字,MysQL自动创建约束名字。 

【例8.7】在数据库stusys中创建course5表,以表级完整性约束方式定义唯一性约束。 

create table 课程5(课程号 char(4) not null, 课程名 char(16) not null unique, 学分 tinyint null,constraint uk_课程5 unique(课程名)); 

 

在表中所有列定义的后面加上一条constraint子句,表级定义唯一性约束,指定约束名字为uk_课程5。 

2.删除唯一性约束

语法格式: 

alter table<表名>drop index<约束名>; 

【例8.8】删除例8.7在course5表创建的唯一性约束。 

alter table 课程5drop index uk_课程5;

3.在修改表时创建唯一性约束

语法格式: 

alter table<表名> 
add ( [ constraint < 约束名 > ] unique ( 唯一性约束列名 ) 

【例8.9】重新在course5表上定义唯一性约束。 

alter table 课程5add constraint uk_课程5 primary key(课程名);

http://www.lryc.cn/news/368583.html

相关文章:

  • (学习笔记)数据基建-数据质量
  • WINUI——Behavior(行为)小结
  • Ruoyi5.x RuoYi-Vue-Plus新建Translation翻译类
  • 类加载的奥秘
  • Spring知识点总结
  • STM32Cube系列教程11:STM32 AES加解密模块性能测试
  • Vue2基础:.sync修饰符的使用,认识,作用,本质案例演示,实现父子之间的通信。
  • 【数据结构与算法】使用单链表实现队列:原理、步骤与应用
  • DHCP服务
  • C++笔试-剑指offer
  • Mac安装jadx并配置环境
  • 前端学习----css基础语法
  • 超详解——python条件和循环——小白篇
  • DNS协议 | NAT技术 | 代理服务器
  • 深入ES6:解锁 JavaScript 类与继承的高级玩法
  • 领域驱动设计:异常处理
  • 网络网络层之(6)ICMPv6协议
  • 《大道平渊》· 拾壹 —— 商业一定是个故事:讲好故事,员工奋发,顾客买单。
  • JavaScript 如何访问本地文件夹
  • ArrayList顺序表简单实现
  • 144、二叉树的前序递归遍历
  • youtube 1080 分辨率 下载方式
  • 计算机网络ppt和课后题总结(下)
  • 测试基础12:测试用例设计方法-边界值分析
  • AI大模型在健康睡眠监测中的深度融合与实践案例
  • 【西瓜书】9.聚类
  • 使用jemalloc实现信号驱动的程序堆栈信息打印
  • 树的4种遍历
  • 深入探讨5种单例模式
  • SPOOL