我的编程空间,编程开发者的网络收藏夹
学习永远不晚

MySQL——约束(constraint)详细解释

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

MySQL——约束(constraint)详细解释

  1. 约束是什么用来干嘛?
    约束实际上就是表中数据的限制条件
    作用:表在设计的时候加入约束的目的就是为了保证表中的记录完整和有效
    比如一些字段的唯一性,将一些字段约束成外键

  2. 约束种类:
    非空约束(not null)
    唯一性约束(unique)
    主键约束(primary key) PK
    外键约束(foreign key) FK
    检查约束(目前MySQL不支持、Oracle支持)

A、非空约束
用not null约束的字段不能为null值,必须给定具体的数据
创建表,给字段添加非空约束(创建用户表,用户名不能为空)

create table blog (
id int(12) not null;
)
insert插入数据时如果插入id为null直接报错

B、唯一性约束
unique约束的字段,具有唯一性,不可重复,但可以为null
创建表,保证邮箱地址唯一(列级约束)
create table blog (
id int(12) not null UNIQUE;
)
表级约束
create table blog (
id int(12) not null;
UNIQUE(id);
)
如果插入相同 id 会报错
使用表级约束,给多个字段联合约束
联合约束,表示两个或以上的字段同时与另一条记录相等,则报错
create table blog (
id int(12) not null;
name varchar(20) not null;
unique(id,name);
)
如果与联合字段都相同,则报错
表级约束可以给约束起名字(方便以后通过这个名字来删除这个约束)
create table blog (
id int(12) not null;
name varchar(20) not null;
CONSTRAINT t_id_name unique(id,name);
)
constraint是约束关键字,t_user_email_unique自己取的名字

C、主键约束(primary key)PK
表设计时一定要有主键
主键约束
主键字段
主键值
表中的某个字段添加主键约束后,该字段为主键字段,主键字段中出现的每一个数据都称为主键值
主键约束与“not null unique”区别:给某个字段添加主键约束之后,该字段不能重复也不能为空,效果和”not null unique”约束相同,但是本质不同。
主键约束除了可以做到”not null unique”之外,还会默认添加”索引——index”
一张表应该有主键字段,如果没有,表示该表无效
主键值:是当前行数据的唯一标识、是当前行数据的身份
即使表中两行记录相关数据相同,但由于主键值不同,所以也认为是两行不同的记录
按主键约束的字段数量分类:无论是单一主键还是复合主键,一张表主键约束只能有一个(约束只能有一个,但可以作用到好几个字段)
单一主键:给一个字段添加主键约束
复合主键:给多个字段联合添加一个主键约束(只能用表级定义)
1)单一主键(列级定义)
mysql> create table t_user(
-> id int(10) primary key,
-> name varchar(30)
-> );
Query OK, 0 rows affected (0.07 sec)
2)单一主键(表级定义)
mysql> create table t_user(
-> id int(10),
-> name varchar(30) not null,
-> constraint t_user_id_pk primary key(id)
-> );
Query OK, 0 rows affected (0.01 sec)
3)复合主键(表级定义)
mysql> create table t_user(
-> id int(10),
-> name varchar(30) not null,
-> email varchar(128) unique,
-> primary key(id,name)
-> );
Query OK, 0 rows affected (0.05 sec)

在MySQL数据库提供了一个自增的数字,专门用来自动生成主键值,主键值不用用户维护,自动生成,自增数从1开始,以1递增(auto_increment)
mysql> create table t_user(
-> id int(10) primary key auto_increment,
-> name varchar(30) not null
-> );
Query OK, 0 rows affected (0.03 sec)
插入两行记录,id主键值会自动增加
mysql> insert into t_user(name) values('jay');
Query OK, 1 row affected (0.04 sec)

mysql> insert into t_user(name) values('man');
Query OK, 1 row affected (0.00 sec)

mysql> select * from t_user;
+----+------+
| id | name |
+----+------+
| 1 | jay |
| 2 | man |
+----+------+
2 rows in set (0.00 sec)

D、外键约束(foreign key)FK
只能是表级定义
foreign key(classno) references t_class(cno)
外键约束主要用来维护两个表之间数据的一致性
外键约束
外键字段
外键值

外键约束、外键字段、外键值之间的关系:某个字段添加外键约束之后,该字段称为外键字段,外键字段中每个数据都是外键值

按外键约束的字段数量分类:a、单一外键:给一个字段添加外键约束
b、复合外键:给多个字段联合添加一个外键约束

一张表可以有多个外键字段(与主键不同)

栗子:存储学生班级 信k 息
mysql> drop table if exists t_student;
mysql> drop table if exists t_class;

mysql> create table t_class(
-> cno int(10) primary key,
-> cname varchar(128) not null unique
-> );

mysql> create table t_student(
-> sno int(10) primary key auto_increment,
-> sname varchar(30) not null,
-> classno int(3),
-> foreign key(classno) references t_class(cno)
-> );

mysql> insert into t_class(cno,cname) values(100,'aaaaaaxxxxxx');
mysql> insert into t_class(cno,cname) values(200,'oooooopppppp');
mysql> insert into t_student(sname,classno) values('jack',100);
mysql> insert into t_student(sname,classno) values('lucy',100);
mysql> insert into t_student(sname,classno) values('king',200);
班级表t_class:
mysql> select from t_class;
+-----+--------------+
| cno | cname |
+-----+--------------+
| 100 | aaaaaaxxxxxx |
| 200 | oooooopppppp |
+-----+--------------+
学生表t_student:
mysql> select
from t_student;
+-----+-------+---------+
| sno | sname | classno |
+-----+-------+---------+
| 1 | jack | 100 |
| 2 | lucy | 100 |
| 3 | king | 200 |
+-----+-------+---------+
上表中找出每个学生的班级名称:
mysql> select s.,c. from t_student s join t_class c on s.classno=c.cno;
+-----+-------+---------+-----+--------------+
| sno | sname | classno | cno | cname |
+-----+-------+---------+-----+--------------+
| 1 | jack | 100 | 100 | aaaaaaxxxxxx |
| 2 | lucy | 100 | 100 | aaaaaaxxxxxx |
| 3 | king | 200 | 200 | oooooopppppp |
+-----+-------+---------+-----+--------------+
这就是数据实体的一对多关系模型:在多的那一方加外键来约束

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

MySQL——约束(constraint)详细解释

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

MySQL约束constraint用法详解

目录前言一:主键约束 primary key1.添加单列主键2.添加多列主键(联合主键)3.通过修改表结构添加主键4.删除主键约束二:自增长约束 auto_increment1.添加自增长约束2. 指定自增字段初始值三:非空约束 not n
2023-05-12

MySQL主键约束和外键约束详解

目录1、PRIMARY KEY2、FOREIGN KEY3、表的设计3.1 一对一3.2 一对多3.3 多对多1、PRIMARY KEY上期我们讲述了 not null 和 unique 约束,而本期的第一个约束就是这俩的结合体,也成为主
2023-03-13

详解MySQL 外键约束

官方文档: https://dev.mysql.com/doc/refman/5.7/en/create-table-foreign-keys.html1.外键作用: MySQL通过外键约束来保证表与表之间的数据的完整性和准确性。 2.外键
2022-05-11

MySQL外键约束详解

目录一、mysql外键约束作用二、外键约束创建(一)创建外键约束的条件(二)在创建数据表时创建外键约束(三)在创建数据表后添加外键约束三、外键约束功能演示今天继续给大家介绍MySQL相关知识,本文主要内容是MySQL外键约束详解。一、My
2022-07-29

SQL中的CHECK约束的详细讲解

在SQL中,CHECK约束用于限制表中某列的取值范围。它可以用于在插入或更新数据时验证特定条件的有效性。CHECK约束由以下几个部分组成:列名:指定应用约束的列的名称。操作符:用于定义约束条件的比较运算符,例如等于(=)、小于(<)、大于
SQL中的CHECK约束的详细讲解
2024-04-09

MySQL约束和事务知识点详细归纳

目录一、mysql 约束1、主键 primary key2、not null 3、unique4、外键 foreign key5、check二、MySQL应用1、自增长2、MySQL索引3、MySQL事务5、表类型和存储引擎6、视图7、My
2023-04-12

Mysql中的CHECK约束特性详解

功能说明在mysql 8.0.16以前, CREATE TABLE允许从语法层面输入下列CHECK约束,但实际没有效果:CHECK (expr)在 MySQL 8.0.16,CREATE TABLE添加了针对所有存储引擎的表和列的CH
2022-08-08

MySQL六种约束的示例详解

目录什么是约束外键约束什么是约束作用于表上的规则,限制存储在表中的数据约束分类:约束描述关键字非空约束该字段数据不能为nullNOT NULL唯一约束该字段数据唯一不重复UNIQUE主键约束一行数据的唯一标识(非空且唯一)PRIMAR
2023-02-21

MySQL约束与索引概念详解

目录一、关系型数据库设计规则二、数据完整性和约束与索引的概念三、约束的应用一、关系型数据库设计规则遵循ER模型和三范式E entity 代表实体的意思 对应到数据库当中的一张表R relationship 代表关系的意思三范式:1、
2023-04-07

MySQL外键约束(Foreign Key)案例详解

目录一、mysql外键约束作用二、外键约束创建(一)创建外键约束的条件(二)在创建数据表时创建外键约束(三)在创建数据表后添加外键约束三、外键约束功能演示总结今天继www.cppcns.com续给大家介绍MySQL相关知识,本文主要内容是M
2022-06-28

MySQL数据库表中的约束详解

目录mysql表中的约束(constraint)约束分类非空约束唯一性约束复合约束主键约束自增列-AUTO_INCREMENTlzqXVuAOKT外键约束FOREIGN KEY约束CHECK约束DEFAULT约束MySQL表中的约束(con
2023-03-02

MySQL学习之完整性约束详解

数据完整性指的是数据的一致性和正确性。完整性约束是指数据库的内容必须随时遵守的规则。若定义了数据完整性约束,mysql会负责数据的完整性,每次更新数据时,MySQL都会测试新的数据内容是否符合相关的完整性约束条件,只有符合完整性的约束条件的
2022-08-11

编程热搜

目录