前言

        初步学习了数据库与MySQL,接下来就一起了解SQL语言中的DQL语言的相关知识,数据查询语言(DQL)全称是Data Query
Language,主要分为八个大类,是用来进行数据库中数据的查询的,即最常用的select语句。

一、基础查询

注意事项!

1.建议在最开始先启用库 use 库名

2.着重号 (``):避免字段名与关键字冲突而使用的标识符

3.执行,格式化

            - - - 前提 选中的命令行时合法的

            - - - 执行     - - - F9

            - - - 格式化 - - - F12

特点 :

1.查询列表可以是表中的字段、常量值、表达式、函数

2.查询结果是一个虚拟的表格

语法:

select 查询列表 from 表名 ;

分类

1.查询单个字段
    select 字段名(列名)from 表名 ;
2.查询多个字段
    select 字段名1,字段名2... from 表名 ;
3.查询所有字段
    1)select 双击选中要查询的字段,选完即可 from 表名 ;
        双击选中字段,会自动使用着重符``修饰,``是为了避免字段名于关键字冲突
    2)select * from 表名 ;
        规定了顺序,与表一致
4.查询常量值
    格式:
        selcet 常量值 ;
    常量值
        100、'john'
5.查询表达式
    select 100*98 ;
6.查询函数
    select 函数名() ;

补充 :

1.起别名
    注意:
        别名与关键字冲突时 使用 ""or'' 修饰,推荐使用 ""
        表也可以起别名,但之后查询不能使用原来的表名
    好处:
        1.便于理解,增强可读性
        2.如果查询的字段遇到重名的情况,使用别名可以区分开来
    方法:
        1. 使用 as 关键字
            select 100%98 as 别名 ;
            select 字段名 as 别名 from 表名 ;
        2.直接用空格分隔,紧跟字段名
            select 字段名1 别名1,字段名2 别名2 from 表名 ;

2.去重
    案例:
        查询员工表涉及的部门编号(即有重复值的应用场景)
    select distinct 字段名 from 表名 ;

3.+号作用
补充:

          concat() 函数 

          - - - 功能:拼接
          - - - 使用:select concat(字段名1,字段名2.....) as 别名 from 表名 ;

Java 中的 + 号:

        1.运算符:两个被操作数据都是数值型
        2.连接符:只要有一个被操作数据为字符串

mysql 中的 + 号:
        仅仅只有一个功能:运算符
        不同场景
            1.select 100+90 ; 
                两个被操作数都是数值型,则做加法运算
            2.select '123'+90 ;
                其中一个为字符型,尝试将其转换为数值型
                成功,继续做加法运算
                失败,则字符型数值转为0
            3.selcet null+90 ;
                只要其中一方为null,则结果肯定为null

二、条件查询

含义:

使用 WHERE 子句来指定查询条件,从 FROM 子句的中间结果中选取适当的数据行,达到数据过滤的效果。

语法:
    select 查询列表 from 表名 where 筛选条件 ;
    筛选条件 - - - 类似于java 中的if判断语句

分类:

1.按条件表达式筛选(>,<,>=,<=,=,!=/<>)

2.按逻辑表达式筛选(&& || !)--- (and or not)

3.模糊查询

      like                        判断是否相似

      between and        判断是否在给定区间

      in                          判断在集合中

      is null                   判断是否为空

三、排序查询

含义:

        将查询的结果集按照指定的字段升序或降序显示。

语法:
        select 查询列表 from 表 【where 筛选条件】 order by  排序列表 【asc(升) (可省略) |
desc(降)】 

特点:

1.asc 代表升序,desc 代表降序,如果( order by  排序列表 )之后不写,默认升序

2.order by 子句中可以支持单个字段,多个字段,表达式,函数,别名

3.order by 子句 一般是放再查询语句的最后面,limit子句除外

四、分组查询

含义:

        将查询结果按照1个或多个字段进行分组,字段值相同的为一组其实就是按照某一列进行分类。

语法:

select

分组函数,列(要求出现在group by 后)

from 表

【where 筛选语句】

group by 分组的列表

【order by 子句】

特点:

1.分组查询种少选条件【两类】

           分组前: 

                  数据源 —— 原始表

                  位置 —— group by 前

                  关键字 —— where

           分组后:

                  数据源 —— 分组后的结果集

                  位置 —— group by 后

                  关键字 —— having

           补充:1)分组函数做条件,放在having子句中

                      2)能用分组前筛选的,优先考虑分组前筛选【考虑性能】

2.group by 子句 ,支持 单个/多个 字段分组 ( ','分隔 ,顺序没有要求),支持表达式或函数(使用较少)

3.可排序(order by 添加到 句末)

五、连接查询

含义:

连接查询是关系数据库中最主要的查询,主要包括 内连接 、 外连接 和交叉连接等。 通过

接 运算符 可以实现多个表查询。 连接是 关系数据库模型 的主要特点,也是它区别于其它

型 数据库管理系统 的一个标志。

补充:

笛卡尔乘积现象

表现:表1 有 m行 ;表2 有n行 , 结果 = m*n 行

如何避免: 添加有效连接条件

分类:

1.按版本(年份)

   sql192标准:在 mysql中 仅支持 内连接,和一部分外连接

   sql199标准:支持内连接+外连接(左外+右外)+交叉连接

   比较:sql199标准 功能更多/可读性较高

2.按功能

内连接:等值连接/非等值连接/自连接

外连接:左外连接/右外连接/全外连接

交叉连接:连接结果是笛卡尔乘积形式   

六、子查询

含义:

子查询(Sub Query)或者说内查询(Inner Query),也可以称作嵌套查询(Nested

Query),是一种嵌套在其他 SQL 查询的 WHERE 子句中的查询。特点:

分类:

    按子查询出现的位置:
    select后面
        支持标量子查询
    from后面
        表子查询
    where或haveing后面
        标量子查询/列子查询/行子查询(较少)
    exists后面(相关子查询)
        表子查询
        判断是否有结果 --- 返回 1/0
        案例:
            查看所有员工的部门名
            判断结果为true,就执行
            :
                select department _name
                from department d
                where exists(
                                select * 
                                from employees e
                                where d.did = e.did ) ;

    按结果集的行列数不同:
    标量子查询(结果只有一行一列)
        又称单行子查询
    列子查询(结果只有一列多行)
        又称多行子查询
    行子查询(有一行多列)(有结果为多行多列的情况)
    表子查询(结果一般多行多列)

七、分页查询

应用场景:

当需要展示数据量过大,不适合直接展示,需要分页提交sql请求

语法:

select 查询列表

from 表

【jointype join 表

on

where

group by

having

order by 】

limit offset,size;

size --- 要显示的条目个数

特点:

1.放在查询语句最后 --- (语句位置,和执行顺序都是)

2.offset 索引 是从 0 开始的

3.公式

要显示页数 page

每页的条目数 size

limit (page -1 )* size,size

八、union联合查询

含义:

将多条查询语句的结果合并成一个结果

应用场景:

要查询的结果来自多个表,且多个表没有直接的连接关系,但查询的信息类型一致

特点:

1.要求多条查询语句的查询列数是一致的

2.要求多条查询语句的查询的每一列的类型和顺序最好一致

3.union 关键字默认去重,如果使用 union all 可包含重复项

语法:

select ******

union

select ******* ;

技术
下载桌面版
GitHub
Gitee
SourceForge
百度网盘(提取码:draw)
云服务器优惠
华为云优惠券
腾讯云优惠券
阿里云优惠券
Vultr优惠券
站点信息
问题反馈
邮箱:[email protected]
吐槽一下
QQ群:766591547
关注微信