IT评测·应用市场-qidao123.com
标题:
【MySQL | 三、 表的约束先容】
[打印本页]
作者:
郭卫东
时间:
2025-1-16 10:43
标题:
【MySQL | 三、 表的约束先容】
举例表结构
字段名称字段范例是否NULL键值默认值附加信息FieldTypeNullKeyDefaultExtraidintNoUNI(唯一键)Nullauto_incrementnameverchar(10)NoPRI(主键)NullgenderenumNomanagetinyintYesNulltelphoneintYesNullhome_idintyesMUL(外键)Null
1. 空属性
两个值:null(默认的)和 not null(不为空)
Null
:是一种特殊的值,表示数据缺失、未知大概未界说。比方,在一个记录客户信息的数据库中,假如还没有获取到客户的电子邮箱地点,那么该“电子邮箱”字段可以设为Null。
Not Null
:是一种约束条件,即必须有一个确定的值。比如在一个订单表中,“订单编号”字段通常被界说为Not Null,因为每个订单都必须有一个唯一的编号来标识。
数据关联方面
Null
:在外键关联中,答应外键为Null可以表示一种松散的关联关系大概未关联的状态。比方,在一个用户 - 部分关系表中,用户的“部分ID”外键为Null可以表示该用户还没有分配到具体的部分。
Not Null
:当外键为Not Null时,强制建立了两个实体之间的紧密关联。比方,在一个订单 - 客户关系表中,“客户ID”外键为Not Null,这意味着每个订单都必须关联到一个具体的客户,保证了业务逻辑的完整性
创建表时数据库默认字段字段为空(default null),但是实际开辟时,尽可能保证字段不为空,因为数据为空无法参与运算。
用法:
mysql > CREATE TABLE 表名称 (
-> 字段1 数据类型 not null
-> );
复制代码
2. 默认值 Default
默认值的生效:数据在插入表数据的时候没有给该字段赋值,且该字段存在默认值,就使用默认值,否则报错。
用法:
mysql> create table 表名称 (
-> name varchar(20) not null,
-> age tinyint unsigned default 0,
-> gender char(2) default '男'
-> );
--注意:not null和defalut一般不需要同时出现,
因为default本身有默认值,不会为空
复制代码
3. 列形貌 commenet
列形貌
:在构建表结构时用comment来做形貌,类似于解释,没有实际寄义,专门用来形貌字段,会根据表创建语句保存,用来给步伐员或DBA来举行了解
用法:
mysql> create table tt12 (
-> name varchar(20) not null comment '姓名',
-> age tinyint unsigned default 0 comment '年龄',
-> sex char(2) default '男' comment '性别'
-> );
复制代码
4. 主键 primary key
一张表中最多只能有一个主键
主键所在的列通常是整数范例
复合主键
一个主键可以是多列
primary key( [字段1], [字段2] )
主键约束:
唯一性:主键的值在表中必须是唯一的,不能重复。
非空性:主键列的值为 NOT NULL。这是因为 NULL 表示缺失或未知的数据,而主键必要明白地标识每一行,不能是不确定的。
用法:
mysql> create table t2 (
-> name varchar(10) primary key
-> );
Query OK, 0 rows affected (0.00 sec)
#复合主键用法:
mysql> create table t3 (
-> name varchar(10),
-> age int,
-> constraint pk_constraint_name primary key(name, age)
-> );
Query OK, 0 rows affected (0.01 sec)
复制代码
主外键自界说名称 constraint,用法如上。
5. 唯一键 unique key
一张表中有每每有很多字段必要唯一性,数据不能重复,但是一张表中只能有一个主键:唯一键就可以解决表中有多个字段必要唯一性约束的问题。
唯一键的本质和主键差不多。
与主键比唯一键答应为NULL,而且可以多个为NULL。
用法:
mysql> create table student (
-> id char(10) unique key comment '学号,不能重复,但可以为空',
-> name varchar(10)
-> );
Query OK, 0 rows affected (0.01 sec)
复制代码
6. 外键 foreign key (字段名) references 主表(列)
主表
也称为父表,是在关系型数据库中拥有主键(Primary Key)的表。主键是一个或多个列的组合,其值唯一标识表中的每一行。主表中的数据通常是基础信息,不依赖于其他表的数据而存在。比方,在一个学生管理体系中,有一个 “班级” 表,它包含班级的基本信息,如班级编号(作为主键)、班级名称等,这个 “班级” 表就是主表。
从表
也称为子表,是包含外键(Foreign Key)的表。外键是一个或多个列,其值引用主表中主键的值,从表中的数据依赖于主表的数据而存在。继承上面的例子,有一个 “学生” 表,此中包含学生的信息,并且有一个 “班级编号” 列,该列引用 “班级” 表中的 “班级编号”,那么 “学生” 表就是从表。
主表则必须是有主键约束或unique约束。
外键约束
存在性约束
:当在从表中插入或更新一条记录时,该记录的外键列的值必须是主表中主键列已经存在的值。这是为了保证数据的一致性和关联性。
答应 NULL 值
:在某些情况下,外键列可以为 NULL。这通常表示一种特殊情况,即从表中的数据与主表中的数据没有关联。例,可能存在一些员工临时未分配到任何部分,这时在 employees 表中该员工的 department_id 可以为 NULL。但这必要在界说外键时答应 NULL 值
用法
#先创建主表
mysql> create table myclass (
-> id int primary key,
-> name varchar(30) not null comment'班级名'
-> );
#创建从表
mysql> create table stu (
-> id int primary key,
-> name varchar(30) not null comment '学生名',
-> class_id int,
-> foreign key (class_id) references myclass(id)
-> );
复制代码
foreign key (字段名) references 主表(列)
7. 自增长 auto_increment
auto_increment:当插入数据时,若有该属性的字段被忽略,数据库会在上个值的基础上自动+1,得到一个新的差别的值。通常和主键搭配使用,作为逻辑主键。
任何一个字段要做自增长,数值必须要有唯一性。
自增长字段必须是整数
一张表最多只能有一个自增长列
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
欢迎光临 IT评测·应用市场-qidao123.com (https://dis.qidao123.com/)
Powered by Discuz! X3.4