博客
关于我
MySQL复习day03:DQL数据查询语言完结
阅读量:571 次
发布时间:2019-03-10

本文共 2385 字,大约阅读时间需要 7 分钟。

DQL数据查询语言完结

DQL(Data Query Language,数据查询语言)是用于数据库管理系统中进行数据查询的语言,主要用于从数据库中检索数据。DQL的主要目的是通过SQL语句进行数据的查询操作,返回符合条件的数据。以下将从多个方面详细介绍DQL的相关知识。

SQL99 连接查询语法

SQL99是数据库管理系统中常用的查询语言,支持复杂的连接操作。以下是SQL99中的连接查询语法:

`select 查询列表`
`from 表1 别名`
`【连接类型】join 表2 别名`
`on 连接条件`
`【连接类型】join 表3 别名`
`on 连接条件`
`…`
`【where 筛选条件】`
`【group by 分组】`
`having 筛选条件`
`order by 排序列表`
`limit offset, size`
连接类型:
1. 内连接:`inner`
2. 外连接:`left [outer]`、`right [outer]`、`full [outer]`(MySQL 不支持)
3. 交叉连接:`cross`

外连接

外连接用于查询一个表中存在但另一个表中不存在的数据,其结果相当于两个表的差集和交集。

特点:
1. 外连接的查询结果为主表中的所有记录。如果从表中有匹配的记录,则显示匹配项;否则显示 `null`。
2. 外连接的查询结果 = 内连接结果 + 主表中存在但从表中不存在的记录。
3. 左外连接和右外连接的顺序可实现同样的效果:左外连接中,左边是主表;右外连接中,右边是主表。

交叉连接

交叉连接在数据库管理系统中非常常用,类似于笛卡尔乘积。例如,两个表之间执行交叉连接操作,会生成所有可能的组合结果。

子查询

子查询是一种常见的操作,在其他语句中作为子句使用,称为内查询或子查询。子查询可以多种多样,具体使用场景如下:

  • 标量子查询(单行子查询)
  • 列子查询(多行子查询)
  • 相关子查询(在 `Exists` 关键字后面使用)

子查询的特点:

1. 子查询放在圆括号内,括号内不用添加分号。
2. 子查询一般位于条件的右侧。
3. 标量子查询通常与单行操作符(如 `>`, `<`, `>=`, `<=`, `<>`) 结合使用。
4. 列子查询通常与多行操作符(如 `IN`, `ANY`, `SOME`, `ALL`) 结合使用。
5. 子查询的执行顺序优先于主查询执行。

示例:

select * from family.zhutong where budget > ( # 子查询语句 select budget from family.zhutong where name = 'frog' ) and bonus is not null and variety > 'a';

分页查询

分页查询是一种常用的场景,当需要分批次返回数据时,可以使用分页查询来限制结果的数量。分页的实现方法因数据库而异,但常见的方式是使用 `LIMIT` 关键字。

注意:`LIMIT` 语句必须放在查询语句的最后。

分页查询的具体语法:

select 查询列表 from 表 【join 列别名】 on 条件 【where筛选条件】 【group by分组条件】 【having筛选条件】 【order by排序字段】 limit offset, size;

其中 `offset` 表示从哪一条记录开始返回数据,`size` 表示每页返回的记录数量。例如,以下代码将返回倒数五条记录:

select emp.* from emp order by empno desc limit 5;

联合查询

联合查询(Union)是一种将多个查询结果合并的操作。在执行多个 `SELECT` 语句时,可以使用 `UNION` 将它们的结果合并为一个。需要注意的是,使用 `UNION` 时,查询中的字段必须一致,否则会导致错误。例如,以下等价于两个独立的查询:

select * from emp where year(hiredate) > 1980 or comm is not null;

此外,还需要注意以下内容:

1. 查询列数和数据类型必须一致。
2. 如果希望保留重复的记录,可以使用 `UNION ALL`。

执行顺序

数据库查询的执行顺序通常遵循以下规则:

1. 子查询优先于 `From` 子句内的操作执行。
2. `From` 子句中的表的连接操作优先于 `Where` 和 `Having` 子句中的筛选操作执行。
3. `Where` 子句中的筛选操作优先于 `Group by` 子句中的分组操作执行。
4. `Group by` 子句中的分组操作优先于 `Having` 子句中的筛选操作执行。
5. 最后,`Order by` 子句中的排序操作执行。

MySQL 学习列表

以下是一个基础的MySQL学习列表,您可以逐步完成:

  • 学习基本的 `SELECT` 语句
  • 熟悉 `INSERT`, `UPDATE`, `DELETE` 语句
  • 了解 `CREATE TABLE`, `ALTER TABLE`, `DROP TABLE` 等表操作
  • 掌握 `WHERE` 子句中的逻辑运算符和条件语句
  • 学习 `GROUP BY`, `HAVING`, `ORDER BY` 等聚函数和排序
  • 掌握 `JOIN` 语法(内连接、外连接)
  • 学习 `SUBQUERY`, `IN`, `EXISTS` 等子查询操作
  • 理解 `UNION` 和 `UNION ALL` 的操作
  • 学习 `LIMIT` 语法实现分页
  • 了解 ` transactions` 和 `locks` 概念

致谢

感谢各位朋友的观看。如果觉得内容有用欢迎点赞!😊

转载地址:http://ibcvz.baihongyu.com/

你可能感兴趣的文章
Nginx的Rewrite正则表达式,匹配非某单词
查看>>
Nginx的使用总结(一)
查看>>
Nginx的是什么?干什么用的?
查看>>
Nginx访问控制_登陆权限的控制(http_auth_basic_module)
查看>>
nginx负载均衡的五种算法
查看>>
Nginx配置ssl实现https
查看>>
Nio ByteBuffer组件读写指针切换原理与常用方法
查看>>
NI笔试——大数加法
查看>>
NLP 基于kashgari和BERT实现中文命名实体识别(NER)
查看>>
No 'Access-Control-Allow-Origin' header is present on the requested resource.
查看>>
Node.js安装与配置指南:轻松启航您的JavaScript服务器之旅
查看>>
NR,NF,FNR
查看>>
nrf开发笔记一开发软件
查看>>
NSSet集合 无序的 不能重复的
查看>>
nullnullHuge Pages
查看>>
numpy 用法
查看>>
Numpy如何使用np.umprod重写range函数中i的python
查看>>
oauth2-shiro 添加 redis 实现版本
查看>>
OAuth2.0_JWT令牌-生成令牌和校验令牌_Spring Security OAuth2.0认证授权---springcloud工作笔记148
查看>>
OAuth2.0_JWT令牌介绍_Spring Security OAuth2.0认证授权---springcloud工作笔记147
查看>>