【数据库】MySQL数据约束和表关系详解

这篇具有很好参考价值的文章主要介绍了【数据库】MySQL数据约束和表关系详解。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

1.数据库约束

1.1约束类型

1.2NULL约束

1.3UNIQUE:唯一约束

1.4DEFAULT:默认值约束

1.5PRIMARY:主键约束

1.6FOREIGH KEY:外键约束

2.表的关系

2.1一对一

2.2一对多

2.3多对多


1.数据库约束

数据库中的数据保存在数据表中,在表中为了更加准确的存储数据,保证数据的正确有效,可以在创建表的时候,为表添加一些强制性的验证,比如:数据类型和约束。

约束的概念:约束是作用于表中字段上的规则,用于限制存储在表中的数据。

作用:保证数据库中数据的正确、有效性和完整性。

注意约束是作用于表中字段上的,可以在创建表/修改表的时候添加约束

1.1约束类型

约束类型 解释
NOT NULL 指示某列不能存储null值
UNIQUE 保证某列的每行必须有唯一的值
DEFAULT 规定没有给列赋值时的默认值
PRIMARY KEY NOT NULL和UNIQUE的结合,确保某列有唯一标识,有助于更快速的找到表中的一个特定记录
FOREIGN KEY 保证一个表中的数据匹配另一个表中的值的参照完整性
CHECK 保证列中的值符合指定的条件

1.2NULL约束

null约束在创建表时,可以指定某列不为空。

例如:创建student表时,指定id不为空。

-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
create table student(
	id int not null,
    sn int unique,
    name varchar(20) default 'no name'
    );

插入一条id为null的语句,可以看到错误提醒。

insert into student(id,sn,name)values(null,1,'星星');

【数据库】MySQL数据约束和表关系详解

1.3UNIQUE:唯一约束

设置了 UNIQUE 约束的字段,每条记录的值都必须是唯一的,因此 UNIQUE 约束可以防止两条记录在某个字段上出现重复值。

例如:创建student表时,指定sn为唯一约束

create table student(
	id int not null,
    sn int unique,
    name varchar(20) default 'no name'
    );

此时表中已有两条数据。

【数据库】MySQL数据约束和表关系详解

再插入一条sn为1的数据,再次新增直接报错。

insert into student values(3,1,'阳阳');

【数据库】MySQL数据约束和表关系详解

1.4DEFAULT:默认值约束

默认值约束即DEFAULT用于给数据表中的字段指定默认值,即当在表中插入一条新记录时若未给该字段赋值,那么,数据库系统会自动为这个字段插人默认值。

例如:创建student表时,给name一个默认值“no name”。

create table student(
	id int not null,
    sn int unique,
    name varchar(20) default 'no name'
    );

现在插入一条未给name赋值的记录。

insert into student(id,sn)values(3,3);

查看student表,name列为"no name".

【数据库】MySQL数据约束和表关系详解

1.5PRIMARY:主键约束

MySQL主键约束是一个列或者多个列的组合,其值能唯一地标识表中的每一行,方便在RDBMS中尽快的找到某一行。主键约束相当于唯一约束+非空约束的组合,主键约束列不允许重复,也不允许出现空值。但每个表最多只允许一个主键。主键约束的关键字是primary key,当创建主键的约束时,系统默认会在所在的列和列组合上建立对应的唯一索引。

添加单列主键:

语法:

create table 表名(
   ...
   <字段名> <数据类型> primary key 
   ...
)

实现代码如下:

create table student(
	id int primary key,
    sn int unique,
    name varchar(20) default 'no name',
    email varchar(20)
    );

添加多列主键(联合主键):

所谓的联合主键,就是这个主键是由一张表中多个字段组成的。若主键是由多个字段组成时,不能直接在字段名后面声明主键约束。一张表只能有一个主键,联合主键也是一个主键。

语法:

create table 表名(
   ...
   primary key (字段1,字段2,…,字段n)
);

实现代码:

create table emp3( 
  name varchar(20), 
  deptId int, 
  salary double, 
  primary key(name,deptId) 
);

主键约束不仅可以在创建表的同时创建,也可以在修改表时添加,语法格式如下:

create table 表名(
   ...
);
alter table <表名> add primary key(字段列表);

实现代码:

-- 添加单列主键
create table emp4(
  eid int, 
  name varchar(20), 
  deptId int, 
  salary double, 
);
alter table emp4 add primary key(eid);
对于整数类型的主键,常配搭自增长auto_increment 来使用。插入数据对应字段不给值时,使用最大值+1.
-- 主键是 NOT NULL 和 UNIQUE 的结合,可以不用 NOT NULL
 id INT PRIMARY KEY auto_increment,

1.6FOREIGH KEY:外键约束

MySQL 外键约束(FOREIGN KEY)是表的一个特殊字段,经常与主键约束一起使用。对于两个具有关联关系的表而言,相关联字段中主键所在的表就是主表(父表),外键所在的表就是从表(子表)。

外键用来建立主表与从表的关联关系,为两个表的数据建立连接,约束两个表中数据的一致性和完整性。

【数据库】MySQL数据约束和表关系详解

外键约束的特点:

定义一个外键时,需要遵守下列规则:

1.主表必须已经存在于数据库中,或者是当前正在创建的表。

2.必须为主表定义主键

3.主键不能包含空值,但允许在外键中出现空值。也就是说,只要外键的每个非空值出现在指定的主键中,这 个外键的内容就是正确的。

创建外键约束:

方法1,在创建表时设置外键约束。

语法:

[constraint <外键名>] foreign key 字段名 [,字段名2,…] references <主表名> 主键列1 [,主键列2,…]

实现代码:

创建课程表(主表)

drop table course;
create table course(
	id int primary key,
    name varchar(20)
    );

创建学生表(从表)

drop table student;
create table student(
	id int primary key,
    name varchar(20) default 'no name',
    age int,
    course_id int,
    foreign key(course_id) references course(id)
    );

方法2,在修改表时设置外键约束。

语法:

alter table <数据表名> add constraint <外键名> foreign key(<列名>) references 
<主表名> (<列名>);

实现代码:

create table course(
	id int primary key,
    name varchar(20)
    );

create table student(
	id int primary key,
    name varchar(20) default 'no name',
    age int,
    course_id int
    );

alter table student add constraint course_id foreign key(course_id) references student (id);

2.表的关系

在数据库中,单表的操作是最简单的。一对一、一对多、多对多是关系型数据库中表与表之间的常见的关联关系

2.1一对一

第一个表中的单个行只可以与第二个表中的一个行相关,且第二个表中的一个行也只可以与第一个表中的一个行相关。

例如:一个人只能对应一个身份证号。

【数据库】MySQL数据约束和表关系详解

2.2一对多

该关系中第一个表中的单个行可以与第二个表中的一个或多个行相关,但第二个表中的一个行只可以与第一个表中的一个行相关。

例如:一个班级可以有多个学生,班级表中班级号码可以与学生表中多个学生相关,但是学生表中一个学生只能在一个班级。

【数据库】MySQL数据约束和表关系详解

2.3多对多

该关系中第一个表中的一个行可以与第二个表中的一个或多个行相关。第二个表中的一个行也可以与第一个表中的一个或多个行相关。

例如:已经有了一个学生表和一个课程表,再添加一个学生课程中间表,即成绩表,在这个表中,存储每一个学生每门课的成绩。

【数据库】MySQL数据约束和表关系详解

代码:文章来源地址https://www.toymoban.com/news/detail-440511.html

-- 创建课程学生中间表:考试成绩表
DROP TABLE IF EXISTS score;
CREATE TABLE score (
   id INT PRIMARY KEY auto_increment,
   score DECIMAL(3, 1),
   student_id int,
   course_id int,
   FOREIGN KEY (student_id) REFERENCES student(id),
   FOREIGN KEY (course_id) REFERENCES course(id)
);

到了这里,关于【数据库】MySQL数据约束和表关系详解的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 头歌 MySQL数据库 - 数据库和表的基本操作(一)答案

    头歌 MySQL数据库 - 数据库和表的基本操作(一)答案

    第1关:查看表结构与修改表名 编程要求 根据提示,在右侧编辑器补充代码: 把数据表 tb_emp 改名为 jd_emp ; 查看该数据库下数据表的列表; 查看数据表 jd_emp 的 基本结构 。 第2关:修改字段名与字段数据类型 编程要求 根据提示,在右侧编辑器补充代码: 把数据表 tb_emp 的字

    2024年02月01日
    浏览(94)
  • 在MySQL中查看数据库和表的数据大小

    在MySQL中查看数据库和表的数据大小

    在管理和维护MySQL数据库时,了解数据库和表的数据大小是非常重要的。这可以帮助您监控数据库的增长、优化性能以及规划存储需求。本博客将介绍如何使用SQL查询来查看MySQL数据库和表的数据大小。 首先,我们将学习如何查看整个MySQL数据库的总数据大小,包括所有数据库

    2024年02月09日
    浏览(22)
  • MySQL数据库和表的基本操作

    MySQL数据库和表的基本操作

    MySQL是一个客户端服务器结构的程序 主动发送数据的这一方,客户端(client) 被动接受数据的这一方,服务器(server) 客户端给服务器发送的数据叫做: 请求(request) 服务器给客户端发送的数据叫做: 响应(response) 客户端和服务器之间是通过网络进行通信的 服务器是存储数据的主体

    2024年01月19日
    浏览(18)
  • 【IDEA——连接MySQL数据库,创建库和表】

    【IDEA——连接MySQL数据库,创建库和表】

    然后选择MySQL进行添加驱动 点击加号后在左侧列表中找到MySQL,然后点击进去 把对应的信息填写正确后,点击左下角的Test Connection进行连接测试 只要填写的端口号和账户密码正确就可以连接成功本地MySQL了, 一般连接好MySQL后会自动出现sql命令行页面,然后直接通过sql语句创

    2024年02月07日
    浏览(17)
  • MySQL——修改数据库和表的字符编码

    修改编码: ( 1) 先停止服务 ( 2 )修改 my.ini 文件 ( 3 )重新启动服务说明: 如果是在修改 my.ini 之前建的库和表,那么库和表的编码还是原来的 Latin1 ,要么删了重建,要么使用 alter 语句修改编码。 mysql create database 0728 db charset Latin1; Query OK, 1 row affected ( 0.00 sec) mysql use

    2024年02月09日
    浏览(14)
  • MySQL数据库,数据的约束

    MySQL数据库,数据的约束

    目录 1.数据的约束 1.1约束的类型 1.2NULL约束 1.3UNIQUE约束 1.4DEFAULT约束 1.5PRIMARY KEY约束 1.6FOREIGN KEY约束 首先,创建一个名为test的数据库: 下方的所有测试表,都是在这个test数据库中进行创建的。 NOT NULL - 指定某列不得为NULL(空) UNIQUE - 唯一值,每一列的值都是不同的 DEFAULT -

    2023年04月20日
    浏览(23)
  • 「MySQL」数据库约束

    「MySQL」数据库约束

    🎇 个人主页 :Ice_Sugar_7 🎇 所属专栏 :数据库 🎇 欢迎点赞收藏加关注哦! 所谓约束,就是在创建表时给这个表 指定一些规则 ,后续插入、修改、删除操作都要遵循这些规则 引入规则是为了进行更强的数据校验 NOT NULL - 指示某列不能存储 NULL 值 UNIQUE - 保证某列的每行必

    2024年03月27日
    浏览(41)
  • MySQL 数据库约束

    MySQL 数据库约束

    目录 一、数据库约束  1、约束类型 二、NULL 约束 三、unique 约束 四、default 约束 五、primary key 约束 自增主键 六、foreign key 外键约束 七、check 约束 我们使用数据库来存储数据,一般是希望这里存储的数据是靠谱的,那么如何来保证数据是否靠谱呢? 那么MySQL就提供了一些机

    2024年02月15日
    浏览(10)
  • MySQL数据库——约束

    MySQL数据库——约束

    MySQL约束是用于在关系型数据库中定义和实施数据完整性规则的规范。它们定义了数据库表中数据的限制条件,确保数据的一致性和有效性。 今天我将为大家分享以下约束: 主键约束(primary key) 自增长约束(auto_incremnet) 非空约束(not null) 唯一性约束(unique) 默认约束

    2024年02月14日
    浏览(10)
  • MySQL:数据类型和表的约束

    MySQL:数据类型和表的约束

    学习语言的时候首先就是学习数据类型,数据类型起着为变量合理分配空间的作用。数据库同样需要合理使用空间,其次还可以约束SQL语句的正确性,所以同样需要数据类型。 1.0. 数据类型分类 分类 数据类型 解释 数值类型 BIT (M) 位类型。M指定位数,默认为1,范围1-64 BOOL

    2024年02月05日
    浏览(13)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包