(1)主码(PRIMARY KEY)约束
主码约束是指在表中定义一个主码,它的值用于唯一标识表中的每一行数据。
若关系中的一个属性或属性组的值能够唯一地标识一个元组,且他的子集不能唯一的标识一个元组,则称这个属性或属性组做候选码。
候选码特性:
- 唯一性:唯一性是指候选码的值在任何时刻都能唯一标识关系中的一个元组。例如,在一个学生数据库中,学号可以唯一标识每个学生,无论数据库中有多少学生,他们的学号都是唯一的。
- 最小性:最小性要求候选码是唯一标识符的最小集合。如果从候选码中去掉任何一个属性,剩余的属性集合将无法保证唯一性。例如,在学生数据库中,如果去掉学号,仅用姓名来标识学生,可能会出现多个学生有相同的姓名,因此学号是必要且最小的标识符。
若一个关系(即数据表)中有多个候选码,则选定其中一个作为主码。
主码特性:
- 唯一性:主码的值在表中必须是唯一的,不能有重复。每个元组的主码值必须是唯一的,以确保能够唯一标识一个元组。
- 非空值:主码的字段不能为空。在关系数据库中,主码字段必须有一个具体的值,不能为NULL。
- 不变性:一旦主码被选定,其值在数据修改过程中不应发生变化。主码通常选择那些不会频繁变化的属性,如人的身份证号、产品的序列号等。
- 4选择标准:在选择主码时,应优先考虑那些能够唯一标识记录且不易重复的属性。例如,学生表中的学号、员工表中的员工编号等。
主码规则:1.一个表可以有多个候选码,但每个表只能定义一个主码;
2.主码值必须使用唯一标识符中的每一行,且不能为空。
(2)唯一性(UNIQUE)约束
唯一性约束用于指明基本表在某一列或多个列的组合上的取值唯一。
唯一键规则:1.每个表可以定义多个唯一键;
2.唯一性约束确保在某一列或多列的组合上不出现重复值。唯一键可为空,但是最 多只有一个出现空值。
(3)空(NULL)约束和非空(NOT NULL)约束
空约束是指默认情况下,字段的取值可以为空。
非空约束是指字段的取值不能为空。
*完体完整性要求每一行都具有一个非空且又不重复的字段值。完体完整性还可以通过唯一性约束和非空约束共同实现。
(4)自增(AUTO_INCREMENT)约束
自增约束要求数据库表的某个字段值依次递增,且不重复。
自增字段规则:
- 每张表只能定义一个自增型字段;
- 自增字段必须为数值型;
- 自增字段必须定义为键(主键、唯一键或者外码)。
参照完整性属于表间规则。对于永久关系的相关表,在更新、插入或删除记录时,如果只改其一不改其二,就会影响数据的完整性;例如修改父表中关键字值后,子表关键字值未做相应改变;删除父表的某记录后,子表的相应记录未删除,致使这些记录成为孤立记录;对于子表插入的记录,父表中没有相应关键字值的记录;等等。对于这些涉及表间数据的完整性,统称为参照完整性。
(1)外码(外键)
设F是基本关系R的一组属性,但不是关系R的主码。若F与基本关系S的主码相对应,则称F是基本关系R的外码。基本关系R为子表,也叫参照关系,S为父表,也称为参照关系。
外码规则:
- 一个表可以没有外码,一个表也可以看多个外码,含外码的表为子表。
- 父表和子表不是绝对的,而是相对的。
- 父表的主码和子表的外码必须定义在同一个城上。
- 外码和相应的主码可以不同名。
- 子表R和父表S不一定是不同的关系。
- 一个子表可以对应多个父表,一个父表也可以对应多个子表。
(2)参照完整性规则
若属性或属性组F是基本关系R的外码,它与基本关系S的主键相对应(基本关系R和S不一定是不同的关系),则对于R中的每个元组在F上的值:
- 取空值,表示不知道不清楚。
- 或者等于S关系(父表)中某个元组中的主键值(主码值)。
(3)外码(FOREIGN KEY)约束
参照完整性主要依赖外码约束实现,外码约束使用的关键字是FOREIGN KEY。
创建外码之前,必须为父表定义主键。
域完整性是针对某一具体关系数据库的约束条件,它保证表中某些列不能输入无效的值。
域完整性指表中的列必须满足某种特定的数据类型约束。如数据类型、格式、值域范围、精度、是否允许空值等。
用户自定义完整性是针对某个特定关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。主要包括非空约束、唯一约束、检查约束、主键约束、外键约束。
用户定义完整性可以涵盖完体完整性、域完整性、参照完整性等完整性类型。
CREATE TABLE [IF NOT EXISTS] 表名(
字段名1 数据类型 [列级约束条件],
…
字段名n 数据类型 [列级约束条件],
[表级约束条件1],
…
[表级约束条件n]
)其他选择项(例如存储引擎、字符集等选项)
建表语法较多,分为指定表名、定义字段和指定选项三部分。
指定表名在CREATE TABLE后面指定表名,IF NOT EXISTS创建表前先判断表是否存在,不存在则创建,存在则不出创建。
定义字段放在小括号中,分为三部分:字段名、数据类型、约束,前二者必不可少,约束为可选。
约束(约束扩展)分为列级约束和表级约束,两者约束效果相同。列级约束直接跟在字段后面,表级约束是在所有字段结束后。
具体语法:列级约束——字段名 数据类型 [列级约束条件]
表级约束—— [CONSTRAINT 约束名]约束类型 (字段名1,[字段名2,…,字段名n])
指定选项该部分可以舍子存储引擎、默认字符集以及压缩类型。

具体语法:存储引擎 ——ENGINE(MySQL四种存储引擎的区别-CSDN博客)
默认字符集——DEFAULT CHARSET
压缩类型——PACK_KEYS(值可以为:0,1,DEFAULT)
创建数据库mybatis参考
ENUM(‘助教’,‘教授’
,‘讲师’,‘副教授’)
是职称选择数据库mybatis
取消外码约束:
讯享网
注意:建表应该先建父表再建子表
创建Department(系部表)代码如下:
设置外码约束:
讯享网
创建Majority(专业表)代码如下:
注意:COMMENT关键字用来对字段或者表进行注释。
(主码约束的名字统一为PRIMARY,所以不需要用CONSTRAINT关键字为主码约束取名)
创建Teacher(教师表)代码如下:
讯享网
创建Student(学生表)代码如下:
创建Course(课程表)代码如下:
讯享网
创建Register(注册表)代码如下:
注意:Register(注册表)的主码是复合主码,当一个表的主键包含多个属性列时,只能定义为表级约束。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/162119.html