MySQL数据库(数据库约束)

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: MySQL数据库(数据库约束)

数据库约束

数据库约束的类型:

not null- 指示某列不能存储 null值。

unique- 保证某列的每行必须有唯一的值。

default - 规定没有给列赋值时的默认值。

primary key - not null 和 unique 的结合。确保某列(或两个列多个列的结合)有唯一标

识,有助于更容易更快速地找到表中的一个特定的记录。

foreign key - 保证一个表中的数据匹配另一个表中的值的参照完整性

null约束 :

创建表时,可以指定某列不为空

1. drop table if exists student;
2. create table student (id int not null,sn int,name varchar(20),qq_mail varchar(20));

unique约束(唯一约束):

指定sn列为唯一的、不重复的:

1. drop table if exists student;
2. create table student (id int,sn int unique,name varchar(20),qq_mail varchar(20));

default约束(默认值约束):  

指定插入数据时,name列为空,默认值无名氏:

1. drop table if exists student;
2. create table student (id int,sn int ,name varchar(20) default '无名氏',qq_mail varchar(20));

primary key约束(主键约束):

指定id列为主键:

1. drop table if exists student;
2. create table student (id int primary key,sn int ,name varchar(20),qq_mail varchar(20));

对于整数类型的主键,常配搭自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1。

1. drop table if exists student;
2. create table student (id int primary key auto_increment,sn int ,name varchar(20),qq_mail varchar(20));
3. desc student;
4. insert into student values(1,1,'张三','********@qq.com');
5. insert into student (sn,name,qq_mail)values(2,'李四','********@qq.com');
6. select *from student;

foreign key约束(外键约束):

外键用于关联其他表的主键或唯一键,语法:

语法形式:

foreign key(字段名) references 主表(列)
1. create table class (id int primary key,name varchar(20));
2. create table student(id int primary key,name varchar(20),class_id int,foreign key(class_id)references class(id));

这样就使得student和class产生了联系。而且在插入数据的时候,只能插入符合外键约束的数据:

1. insert into class values(1,'java1班');
2. insert into class values(2,'java2班');
3. select *from class;

class中的数据:

1. insert into student values(1,'张三',2);
2. insert into student values(2,'李四',1);
3. select *from student;

student中的数据:

也就是说张三class_id为2,也就是java1班,李四就是java2班的。这是我们插入一条在class中不存在的id:

insert into student values (3,'王五',100);

就会出现报错了,无法插入,这就体现了外键的约束。

还要注意的一点就是,外键约束约束的其实是双方,(我们可以把class看成主(父)表,student看成子表) ,除了上述关系外,如果我们想删除父表,也必须删除子表,否则无法删除:

drop table class;

因为约束的存在所以无法删除。要想删除就要先把子表删除。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
16天前
|
NoSQL 关系型数据库 MySQL
微服务架构下的数据库选择:MySQL、PostgreSQL 还是 NoSQL?
在微服务架构中,数据库的选择至关重要。不同类型的数据库适用于不同的需求和场景。在本文章中,我们将深入探讨传统的关系型数据库(如 MySQL 和 PostgreSQL)与现代 NoSQL 数据库的优劣势,并分析在微服务架构下的最佳实践。
|
18天前
|
存储 SQL 关系型数据库
使用MySQL Workbench进行数据库备份
【9月更文挑战第13天】以下是使用MySQL Workbench进行数据库备份的步骤:启动软件后,通过“Database”菜单中的“管理连接”选项配置并选择要备份的数据库。随后,选择“数据导出”,确认导出的数据库及格式(推荐SQL格式),设置存储路径,点击“开始导出”。完成后,可在指定路径找到备份文件,建议定期备份并存储于安全位置。
158 11
|
13天前
|
存储 SQL 关系型数据库
MySQL的安装&数据库的简单操作
本文介绍了数据库的基本概念及MySQL的安装配置。首先解释了数据库、数据库管理系统和SQL的概念,接着详细描述了MySQL的安装步骤及其全局配置文件my.ini的调整方法。文章还介绍了如何启动MySQL服务,包括配置环境变量和使用命令行的方法。最后,详细说明了数据库的各种操作,如创建、选择和删除数据库的SQL语句,并提供了实际操作示例。
57 13
MySQL的安装&数据库的简单操作
|
19天前
|
存储 SQL 关系型数据库
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
MySQL如何进行分库分表、数据迁移?从相关概念、使用场景、拆分方式、分表字段选择、数据一致性校验等角度阐述MySQL数据库的分库分表方案。
一篇文章搞懂MySQL的分库分表,从拆分场景、目标评估、拆分方案、不停机迁移、一致性补偿等方面详细阐述MySQL数据库的分库分表方案
|
1天前
|
关系型数据库 Unix MySQL
MySQL是一种关系型数据库管理系统
MySQL是一种关系型数据库管理系统
8 2
|
3天前
|
Oracle NoSQL 关系型数据库
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
主流数据库对比:MySQL、PostgreSQL、Oracle和Redis的优缺点分析
14 2
|
9天前
|
SQL 关系型数据库 MySQL
创建包含MySQL和SQLServer数据库所有字段类型的表的方法
创建一个既包含MySQL又包含SQL Server所有字段类型的表是一个复杂的任务,需要仔细地比较和转换数据类型。通过上述方法,可以在两个数据库系统之间建立起相互兼容的数据结构,为数据迁移和同步提供便利。这一过程不仅要考虑数据类型的直接对应,还要注意特定数据类型在不同系统中的表现差异,确保数据的一致性和完整性。
22 4
|
6天前
|
SQL 关系型数据库 MySQL
MySQL中外键的使用及外键约束策略
这篇文章讨论了MySQL中使用外键的重要性,包括外键的概念、不使用外键可能导致的问题、如何设置外键约束以及不同的外键约束策略(如CASCADE和SET NULL),并通过示例演示了这些概念。
MySQL中外键的使用及外键约束策略
|
18天前
|
SQL 监控 关系型数据库
MySQL数据库中如何检查一条SQL语句是否被回滚
检查MySQL中的SQL语句是否被回滚需要综合使用日志分析、事务状态监控和事务控制语句。理解和应用这些工具和命令,可以有效地管理和验证数据库事务的执行情况,确保数据的一致性和系统的稳定性。此外,熟悉事务的ACID属性和正确设置事务隔离级别对于预防数据问题和解决事务冲突同样重要。
29 2
|
20天前
|
存储 缓存 关系型数据库
MySQL 视图:数据库中的灵活利器
视图是数据库中的虚拟表,由一个或多个表的数据经筛选、聚合等操作生成。它不实际存储数据,而是动态从基础表中获取。视图可简化数据访问、增强安全性、提供数据独立性、实现可重用性并提高性能,是管理数据库数据的有效工具。
下一篇
无影云桌面