MySQL — 数据查询语言

DQL 全称 Data Query Language。数据查询语言,用来查询数据库中表的记录。

语法:

select 查询列表(字段、常量、函数、表达式) from 表名;

字段别名:

select 字段1 as '字段1别名', 字段2 as '字段2别名', ... from 表名;

注意:别名可用单或双引号引起来,当别名是一个单词时可省略引号,当别名是多个单词组合且含空格或特殊符号时不能省略,as 可省略。

语法:

select 字段列表 from 表名 [where 条件列表];

条件分类:

语法:

select 字段列表 from 表名 [where 条件列表] group by 分组字段列表 [having 分组后条件列表];

where 与 having 区别:

注意:分组之后,查询的字段一般为聚合函数与分组字段。

语法:

select 字段列表 from 表名 [order by 字段名1 排序方式, 字段名2 排序方式, ...];

排序方式:升序:asc(默认值,可以不写)、降序:desc。

注意:如果是多个字段排序,当第一个字段值相同时,才会根据第二个字段排序。

语法:

select 字段列表 from 表名 [limit 起始索引, 查询记录数];

注意:起始索引从0开始, 起始索引 = (查询页码 - 1) * 每页显示记录数,若查询第一页,起始索引可省略,简写为 limit 查询记录数

项目开发中,在进行数据库表结构设计时,会根据业务需求及业务模块之间的关系,分析并设计表结构,由于业务之间相互关联,所以各个表结构之间也存在着各种联系,基本上分为三种: 一对多(多对一)、多对多、一对一

  • 一对多
    案例:部门与员工的关系。
    关系:一个部门对应多个员工,一个员工对应一个部门。
    实现:在多的一方建立外键,指向一的一方的主键。
  • 多对多
    案例:学生与课程的关系。
    关系:一个学生可以选修多门课程,一门课程也可以供多个学生选择。
    实现:建立第三张中间表,中间表至少包含两个外键,分别关联两方主键。
  • 一对一
    案例:用户与用户详情的关系。
    关系:一对一关系,多用于单表拆分,将一张表的基础字段放在一张表中,其他详情字段放在另一张表中,以提升操作效率。
    实现:在任意一方加入外键,关联另外一方的主键,并且设置外键为唯一的。

多表查询时需要消除无效的笛卡尔积。笛卡尔积是指在数学中,两个集合:A集合与B集合的所有组合情况。

6.1、连接查询

查询两表交集部分的数据。

隐式内连接:

select 字段列表 from 表1, 表2 [where 条件列表...];

显示内连接:

select 字段列表 from 表1 [inner] join 表2 on 连接条件 ...;

左外连接:查询左表(表1)所有数据,以及两表交集部分的数据。

select 字段列表 from 表1 left [outer] join 表2 on 连接条件 ...;

右外连接:查询右表(表2)所有数据,以及两表交集部分的数据。

select 字段列表 from 表1 right [outer] join 表2 on 连接条件 ...;

当前表与自身的连接查询,自连接必须使用别名。自连接可以是内连接,也可以是外连接。

select 字段列表 from 表1 别名1 [inner|left|right] join 表1 别名2 on 连接条件 ...;

将多张表查询的结果合并成一个新的结果集,同时多张表的查询列数及数据类型需保持一致。
union all 直接将全部数据合并在一起,union 会对合并之后的数据去重。

select 字段列表 from 表1 ...

union [all]
select 字段列表 from 表2 ...;

6.2、子查询

SQL 语句中嵌套 select 语句,称为嵌套查询,又称子查询。子查询外部的语句可以是 insert / delete / update / select 的任意一个。

根据子查询结果分为:

根据子查询位置分为:select 之后、from 之后、where 之后。

select 之后:

select (select B.字段 from 表2 B where B.字段 = A.字段) from 表1 A ...;

from 之后:

select A.* from (select * from 表名 where 条件列表 ...) A;

where 之后:

select A.* from 表1 A where A.字段 in (select B.字段 from 表2 B);
5  select 字段列表
1    from 表名列表
2   where 条件列表
3   group by 分组字段列表
4  having 分组后条件列表
6   order by 排序字段列表
7   limit 分页参数

Original: https://www.cnblogs.com/bybeiya/p/16051450.html
Author: 北涯
Title: MySQL — 数据查询语言

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/585903/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 源码安装apache脚本部署

    源码安装apache脚本部署 [root@localhost ~]# ls anaconda-ks.cfg httpd.tar.xz [root@localhost ~]# tar…

    Linux 2023年6月6日
    0100
  • Golang 实现 Redis(5): 使用跳表实现 SortedSet

    本文是使用 golang 实现 redis 系列的第五篇, 将介绍如何使用跳表实现有序集合(SortedSet)的相关功能。 跳表(skiplist) 是 Redis 中 Sort…

    Linux 2023年5月28日
    092
  • DOS-批处理隐藏自身窗口

    批处理隐藏运行效果代码,防止出现黑窗口不建议非法用途,可以用来执行命令,提供用户体验。 运行bat时隐藏cmd窗口的方法 运行bat时隐藏cmd窗口的方法 可以编辑一个vbs脚本,…

    Linux 2023年6月8日
    0104
  • Emacs 基础offset值

    cc-mode有如下规定:One of the symbols +, -, ++, –, *, or /These special symbols describe a…

    Linux 2023年6月13日
    084
  • Docker部署Redis

    执行以下命令,创建并启动镜像。如果本地没镜像,会自动拉取 docker run \ -itd \ –restart=always \ –name=redis \ -p 6379…

    Linux 2023年6月7日
    078
  • 让滚动条自动滚动到最底部(可用)

    代码: <body> </body> 需求: main高度不断增加,保持页面滚动条始终在底部 解决方案: $(function(){ ….//main&…

    Linux 2023年6月13日
    0114
  • apk自签证书

    需要用到keytool.exe (位于D:\Program Files\Java\jdk1.8.0_291\jre\bin目录下),使用产生的key对apk签名用到的是jarsig…

    Linux 2023年6月8日
    099
  • EmuELEC 4.3 安装和乐视手柄 LeWGP-201 evremap问题解决

    一年多前安装了EmuELEC3.9之后, 就一直没有再更新过, 平时玩玩小游戏也很正常. 昨天心血来潮想把吃灰的乐视手柄用起来, 结果发现3.9里面没有evremap 命令. 猜测…

    Linux 2023年5月27日
    0250
  • [20220811]奇怪的隐式转换问题.txt

    [20220811]奇怪的隐式转换问题.txt –//生产系统遇到一个奇怪的隐式转换问题,问题在于没有发生隐式转换,做一个分析调查。 –//后记:后面的分析…

    Linux 2023年6月13日
    090
  • 小文件、nginx、Redis、Moosefs

    现在有3KW的数据,单条数据都很小的,如果按key-value来看的话,key就是32位的MD5字符串,value按平均算大概是100字节左右。 现在需要将这些数据做缓存以在高并非…

    Linux 2023年5月28日
    0112
  • 数据结构-表

    顺序表 #ifndef SEQLIST_H #define SEQLIST_H typedef int DataType; struct Node { int MaxNum; in…

    Linux 2023年6月7日
    066
  • 生成符合chrome要求的自签名HTTPS证书

    按照文章给Nginx配置一个自签名的SSL证书中给出的代码生成自签名证书后,发现使用chrome浏览器访问会报 Invalid self signed SSL cert &#821…

    Linux 2023年6月6日
    073
  • 【数学建模相关】matplotlib画多个子图(散点图为例 左右对照画图)

    @ 例题 例图 代码展示 例题 乙醇偶合制备 C4 烯烃 C4 烯烃广泛应用于化工产品及医药的生产,乙醇是生产制备 C4 烯烃的原料。 在制备过程中,催化剂组合(即:Co 负载量、…

    Linux 2023年6月8日
    0153
  • 【Example】C++运算符重载

    首先,阅读之前要先搞清楚什么是运算符、函数重载。函数重载就是在一个范围内为一个函数声明多个实现方式,函数名必须一致。 那么C++运算符是否可以重载呢?可以!先弄清什么时候需要进行运…

    Linux 2023年6月13日
    0105
  • WSL系统安装与使用

    WSL是适用于 Linux 的 Windows 子系统,可让开发人员按原样运行 GNU/Linux 环境 – 包括大多数命令行工具、实用工具和应用程序 – …

    Linux 2023年5月27日
    0136
  • 小团队如何妙用 JuiceFS

    早些年还在 ENJOY 的时候, 就已经在用 JuiceFS, 并且一路伴随着我工作过的四家小公司, 这玩意对我来说, 已经成了理所应当不可或缺的基础设施, 对于我服务过的小团队而…

    Linux 2023年6月14日
    0107
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球