MySQL(二)

这篇博客详细介绍了MySQL中的处理函数、DDL基础操作、DML操作、DQL查询以及约束。重点讲解了主键约束、外键约束、多表查询(内连接、外连接、子查询、自关联查询)的概念和实例,强调了数据的完整性和准确性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、处理函数

1.1 单行处理函数/数据处理函数

在这里插入图片描述
在这里插入图片描述
单行处理函数的特点:一个输入对应一个输出。和单行处理函数相对的是:多行处理函数。(多行处理函数特点:多个输入,对应1个输出!)

常见单行处理函数
1、lower() 转换小写,将ename列所有名字转化为小写,(大写同理)
mysql> select lower(ename) from emp;
在这里插入图片描述

二、DDL基础操作

2.1 删除查询数据库

如果删除的数据库不存在会报错所以在后面加上一个判断条件if exists,就是如果存在就删除,不存在就不删除。
在这里插入图片描述
在这里插入图片描述
使用数据库后被使用的数据库会有加粗效果。
在这里插入图片描述

2.2 查询创建数据表

在这里插入图片描述
在这里插入图片描述

实例
在这里插入图片描述

2.3 修改和删除数据表(结构)

在这里插入图片描述

在这里插入图片描述

三、DML基础操作

3.1 新增表数据

在这里插入图片描述

实例
在这里插入图片描述
给全部列添加数据,表里面多少列,每组值也要对应且数据类型都要对应上。

3.2 修改和删除表数据

在这里插入图片描述
如下图如果不加红线条件将会把下面所有价格都变成3500.
在这里插入图片描述

四、DQL基本操作(详情见MySQL1)

4.1 DQL查询操作

4.1.1表数据的查询

在这里插入图片描述
在这里插入图片描述

示例
如果某一列数据为null,替换成0并参加运算。
在这里插入图片描述

4.1.2 聚合函数的查询

在这里插入图片描述

示例
输出结果为7,有七条记录。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

4.1.3 分组查询

在这里插入图片描述

实例
按照品牌分组并获取每个品牌的名字以及总金额,输出结果为每个品牌的总金额。
在这里插入图片描述
下图having分组后条件过滤总金额>7000的,前面先给sum函数起别名getSum,后面再引用。
在这里插入图片描述
在这里插入图片描述

4.1.4 分页查询

在这里插入图片描述
在这里插入图片描述

示例
在这里插入图片描述
在这里插入图片描述

一共七条数据,显示出了前三条数据,因为横线第三页只有一个第七个数据所以就只显示一个。

五、约束

5.1 约束的概念

什么是约束?
对表中的数据进行限定,保证数据的正确性、有效性、完整性!

约束的分类
在这里插入图片描述

5.2 主键约束

5.2.1 主键约束的特点

主键约束默认包含非空和唯一两个功能。

  • 一张表只能有一 个主键。
  • 主键一般用于表中数据的唯一标识。

在这里插入图片描述
在这里插入图片描述

5.2.2 主键自增约束

在这里插入图片描述
加上自增约束auto-increment后,约束的主键id可以加上null作为值,且如果接下来加的都是null值,id可以1,2…一直自增,且当添加三个数据后删掉第三个又添加一个此时这个id为4.
在这里插入图片描述

5.2.3 唯一约束

在这里插入图片描述
在这里插入图片描述
age加上唯一约束后,添加两组数据的age都是23的话会报错。反之,如果表中,某列数据有重复同样不能添加唯一约束。

5.2.4 非空约束

在这里插入图片描述
添加数据时name的值张三不能改为null否则会报错,因为加了非空约束。
在这里插入图片描述

注意:如果本来有一列名字为null然后又添加了非空约束,此时并不会报错但是会警告,同时null一格变为空格。
在这里插入图片描述

5.3 外键约束

5.3.1 外键约束的概念

为什么要有外键约束?
当表与表之间的数据有相关联性的时候,如果没有相关的数据约束,则无法保证数据的准确性!像下图uid表示订单属于哪个用户的,1代表张三2代表李四,但是两个表没有外键约束所以没有关系
在这里插入图片描述
外键约束的作用
让表与表之间产生关联关系,从而保证数据的准确性!

5.3.2 操作外键

在这里插入图片描述
在这里插入图片描述
通过上操作创建有外键约束的两张表,uid的1和2分别代表用户表里的张三和李四。
在这里插入图片描述
在这里插入图片描述
因为李四有订单所以删除不了李四这个用户。

5.3.3 外键的级联更新和级联删除

什么是级联更新?
当我想把主表中的数据进行修改时,我期望从表中有关联的数据也会随之修改!(主表和从表概念如上节的用户表就为主表,订单表为从表),当主表中李四id更改为3时订单表的uid也变为3.
在这里插入图片描述

什么是级联删除?
当我想把主表中的数据进行删除时, 我期望从表中有关联的数据也会随之删除!即删除主表李四的个人信息时订单表中关于李四的订单也随之删除。
在这里插入图片描述

级联操作
在这里插入图片描述
在这里插入图片描述

5.4 多表操作

5.4.1 多表概念

说白了就是多张数据表,而表与表之间是可以有一定的关联关系,这种关联关系通过外键约束实现。
多表的分类

  • 一对一
  • 一对多
  • 多对多.

一对一
适用场景
人和身份证。一个人只有一个身份证,一个身份证只能对应一个人。
建表原则
在任意一个表建立外键,关联另外一个表的主键。
在这里插入图片描述
在这里插入图片描述

一对多
适用场景
用户和订单。一个用户可以有多个订单。商品分类和商品。一个分类下可以有多个商品。
建表原则
在多的一方,建立外键约束,来关联一的一方主键。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

多对多
适用场景
学生和课程。-个学生可以选择多个课程,一个课程也可以被多个学生选择。
建表原则
需要借助第三张中间表,中间表至少包含两个列。这两个列作为中间表的外键,分别关联两张表的主键。

下图意思是一号张三选了语文课程,和数学课程,二号李四选择了语文和数学。
在这里插入图片描述

示例
在这里插入图片描述
在这里插入图片描述
多对多示意图
在这里插入图片描述

5.5 多表查询

5.5.1 多表查询分类

多表查询分类
内连接查询
外连接查询
子查询
自关联查询

5.5.2 内连接查询

分为显式内连接隐式内连接
在这里插入图片描述
用户表、订单表、分类表、商品表和一个中间表,他们的关系如上图所示。

内连接查询原理
内连接查询的是两张表有交集的部分数据(有主外键关联的数据)。用户表的4号赵六在订单表中没有相应的订单,而订单表中的七号也没有相应的用户,内连接查询就是查询交集的这部分,不包括赵六和七号订单。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

示例(显式内连接)
在这里插入图片描述
关联条件就是,订单表的uid指向用户表的id所以条件就是他们相等。起别名后关联条件就能使用起的简短别名了。
在这里插入图片描述
示例(隐式内连接)
在这里插入图片描述

5.5.3 外连接查询

分为左外连接和右外连接。

左外连接查询原理
查询左表的全部数据,和左右两张表有交集部分的数据。例如上例子订单表和用户表,左表赵六没有相应的订单在右表中,但是也希望将赵六的信息搜索出来,以及两个表相互交集的地方。
在这里插入图片描述
赵六虽然没有订单,但是也被查询了出来。
在这里插入图片描述

右外连接查询原理
查询右表的全部数据,和左右两张表有交集部分的数据。例如上例子订单表和用户表,右表订单七没有相应的用户,但是也希望将七号订单查询出来,以及两张表相互交集的数据。
在这里插入图片描述
虽然七号订单没有所属的用户但是也被查询了出来。
在这里插入图片描述

5.5.4 子查询

情况1:查询结果是单行单列
在这里插入图片描述
在这里插入图片描述
执行顺序为先执行后面括号里的语句 然后再执行前面的语句,括号里语句执行结果为age=26,然后执行搜索年龄为26的姓名和年龄。

情况2:查询结果是多行单列
在这里插入图片描述

示例
在这里插入图片描述
第一句的括号1,2是第二局sql语句查询出来的,查询结果是多行单列的id结果,然后把这句替换掉第一句的1,2如第三句。

情况3:查询结果是多行多列
在这里插入图片描述
在这里插入图片描述
查询id>4订单信息,得到结果是一个表,以此为查询条件来查询所属用户信息。
在这里插入图片描述

5.5.5 自关联查询

自关联查询概念
在同一张表中数据有关联性, 我们可以把这张表当成多个表来查询。例如下表的mgr为上司,悟空、猪八戒、沙和尚、小白龙上司为唐僧,武松、李逵、林冲上司为宋江。
在这里插入图片描述
结果
在这里插入图片描述
在这里插入图片描述
查询结果
在这里插入图片描述

5.5.6 多表查询相关练习

练习1
在这里插入图片描述
分析查询的数据分别属于哪张表,然后再找出两张表的关联条件(查询条件),多表查询的查询条件一定要有两个表的关联条件。最后开始查询(内连接查询)。
在这里插入图片描述

练习2
在这里插入图片描述
在这里插入图片描述

练习3
因为要查询右表的全部信息和左右表交集信息,所以右外连接。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值