MySQL~DQL查询语句

一、DQL:查询语句

1、排序查询

语法:

order by 子句
​
order by 排序字段1 排序方式1 ,排序字段2 排序方2...

排序方式:

  • ASC:升序[默认]

  • DESC:降序

  • 在SQL语句中永远排序最后

注:

如果有多个排序条件,当前边的条件值一样时,才会判断第二条件。

聚合函数

定义:将一列数据作为一个整体,进行纵向的计算。

1、count:计算个数

一般选择非空的列:主键

2、count(*):总计总数

3、max:计算最大值

4、min:计算最小值

5、sum:计算和

6、avg:计算平均值

注:聚合函数的计算,排除null值。

解决方案:

    1. 选择不包含非空的列进行计算
    2. IFNULL函数

2、分组查询

语法:

group by 分组字段;

注:分组之后查询的字段:分组字段、聚合函数

where 和 having 的区别?

  1. where 在分组前进行限定,如果不满足条件,则不参与分组;having在分组后进行限定,如果不满足结果,则不会被查询出来

  2. where 后不跟聚合函数;having可以进行聚合函数的判断

    ***练习示例***

分别查询男、女同学的平均分

SELECT sex,AVG(math) FROM student GROUP BY sex;

分别查询男、女同学的平均分,人数

SELECT sex,AVG(math),COUNT(id) FROM student GROUP BY sex;

分别查询男、女同学的平均分、人数

要求:分数低于70分的人,不参与分组

SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex;

分别查询男、女同学的平均分,人数 要求:分数低于70分的人,不参与分组,分组之后。人数要大于2个人

SELECT sex , AVG(math),COUNT(id) FROM student WHERE math > 70 GROUP BY sex HAVING COUNT(id) > 2;
SELECT sex , AVG(math),COUNT(id) 人数 FROM student WHERE math > 70 GROUP BY sex HAVING 人数 > 2;

3、分页查询

语法:

limit 开始的索引,每页查询的条数;

 

公式:

开始的索引 = (当前的页码 - 1) * 当每页显示的条数

-- 每页显示3条记录 --

SELECT * FROM student LIMIT 0,3; -- 第1页
​
SELECT * FROM student LIMIT 3,3; -- 第2页
​
SELECT * FROM student LIMIT 6,3; -- 第3页

limit 是一个MySQL"方言"

4、多表查询

概念:在基本查询语句基础之上,增加关联表的查询

4.1 内连接查询

4.1.1 隐式查询

select 字段 ...

from 表1、表2、表3

where 条件

***练习示例***

 

 

-- 查询部门表和员工表中的所有数据 -- 多表的隐式查询

SELECT * FROM dept,emp
WHERE dept.id = emp.dept_id; 

-- 统计不同部门的员工数量 -- 查询不同部门的员工

SELECT 
      dept.id,
      dept.NAME,
      emp.name
FROM dept,emp
WHERE dept.id = emp.dept_id;

-- 对不同部门的员工进行聚合

SELECT 
      dept.NAME,
      COUNT(dept.NAME)
FROM dept,emp
WHERE dept.id = emp.dept_id
GROUP BY dept.NAME   

4.1.2 显式查询

select 字段 ...

from 表1 inner join 关联表2 on 条件 表2 inner join 关联表3 on 条件 -- 显示多表查询 :inner join

SELECT 
       dept.id,
       dept.NAME,
       emp.name
FROM dept INNER JOIN emp ON dept.id =emp.dept_id

-- 显示查询不同部门的员工数量

SELECT 
       dept.NAME,
       COUNT(dept.NAME)
FROM dept INNER JOIN emp ON dept.id =emp.dept_id
GROUP BY dept.NAME

4.2 外连接查询

4.2.1 左外连接查询

   
select * from 
   表1 left outer join 
   表2 on 条件

表1 的数据全部显式出来 如果表2存在空值,那么表2对应的字段也是空值null显示

-- 左外连接

SELECT * FROM dept LEFT OUTER JOIN emp ON dept.id = emp.dept_id;

-- 右外连接

SELECT * FROM emp RIGHT OUTER JOIN dept ON dept.id = emp.dept_id;

-- 应用场景 希望表中的数据全部查询出来,空值也显示出来

4.3 子查询

查询中嵌套查询,叫做子查询。

分类:

单行单例的查询:结果可以作为where 条件使用 关系运算符进行判断:

多行单列的查询;结果作为where 条件 使用 in 判断判断

多行多列的查询;结果作为数据源,虚拟的表的存在

***练习示例***

-- 查询员工员工最高的员工的部门 --

1、查询员工的最高工资 -- 2、根据员工的最高工资查询部门

   
SELECT 
    dept.NAME,
    dept.id,
    emp.name,
    emp.salary
    FROM dept,emp
    WHERE dept.id=emp.dept_id
    AND emp.salary=(SELECT MAX(salary) FROM emp)

5、约束

对表中的数据进行限定,保证数据的正确性、有效性和完整性。

  • 分类:

    1. 主键约束:primary key

    2. 非空约束:not null

    3. 唯一约束:unique

    4. 外键约束:foreign key

    4.1 非空约束:not null

    某一列的值不能为null

    1. 创建表时添加约束

      CREATE TABLE stu(
          id INT,
          NAME VARCHAR(20) NOT NULL 
      );

    2. 创建表完后,添加非空约束

        ALTER TABLE stu MODIFY NAME VARCHAR(20) NOT NULL;
    1. 删除name的非空约束

      ALTER TABLE stu MODIFY NAME VARCHAR(20);

    4.2 唯一约束:unique

    某一列的值不能重复

    1. 注意:

      唯一约束可以有NULL值,但是只能有一条记录为null
    2. 在创建表时,添加唯一约束

      CREATE TABLE stu(
          id INT,
          phone_number VARCHAR(20) UNIQUE 
      );

    3. 删除唯一约束

      ALTER TABLE stu DROP INDEX number;

    4. 在表创建完后,添加唯一约束

      ALTER TABLE stu MODIFY number VARCHAR(20) UNIQUE;

    4.3 主键约束:primary key

    1. 注意:

      1. 含义:非空且唯一

      2. 一张表只能有一个字段为主键

      3. 主键就是表中记录的唯一标识

    2. 在创建表时,添加主键约束

      create table stu(
          id int primary key, -给id添加主键约束
          name varchar(20)
      );

    3. 删除主键

      ALTER TABLE stu DROP PRIMARY KEY;

    4. 创建完表后,添加主键

       ALTER TABLE stu MODIFY id INT PRIMARY KEY;
    1. 自动增长:

      1. 概念:如果某一列是数值类型的,使用 auto_increment 可以来完成值得自动增长

      2. 在创建表时,添加主键约束并完成主键自增长

       create table stu(
        id int primary key auto_increment, -给id添加主键约束
       name varchar(20)
        );
      1. 删除自动增长

       ALTER TABLE stu MODIFY id INT;
      1. 添加自动增长

        ALTER TABLE stu MODIFY id INT AUTO_INCREMENT;

    4.4 外键约束:foreign key

    让表于表产生关系,从而保证数据的正确性。

    1. 在创建表时,可以添加外键

      语法:
      • create table 表名(
            ....
            外键列
        constraint 外键名称 foreign key (外键列名称) references 主表名称(主表列名称)
        );
    2. 删除外键

       ALTER TABLE 表名 DROP FOREIGN KEY 外键名称;
    1. 创建表之后,添加外键

     ALTER TABLE 表名 ADD CONSTRAINT 外键名称 
        FOREIGN KEY (外键字段名称) 
        REFERENCES 主表名称(主表列名称);
    1. 级联操作

      1. 添加级联操作 语法:

        ALTER TABLE 表名 ADD CONSTRAINT 外键名称 
        FOREIGN KEY (外键字段名称) REFERENCES 主表名称(主表列名称) 
        ON UPDATE CASCADE/ON DELETE CASCADE  ;
      2. 分类:

      3. 级联更新:

        ON UPDATE CASCADE 

      4. 级联删除:

        ON DELETE CASCADE 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/48523.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

立创EDA学习

学习树莓派3B的板子发现有个扩展板比较好,自己最好画一个,反正免费。 学习视频:立创EDA(专业版)电路设计与制作快速入门。 下载专业版,并激活。【分专业版和标准版,专业版也是免费的】 手机…

学习自动化测试该怎么学?6个步骤轻松拿捏

自动化测试作为脱离手工测试的基本核心内容,其重要性不言而喻了,而且我们来看近期大厂的一些招聘信息显示,基本上自动化测试是必备前提,没有这个基本就不用谈后面的问题了,下面我们通过联想集团的一个软件测试工程师的…

购物车功能实现(小兔鲜儿)【Vue3】

购物车 流程梳理和本地加入购物车实现 购物车业务逻辑梳理拆解 整个购物车的实现分为两个大分支, 本地购物车操作和接口购物车操作由于购物车数据的特殊性,采取Pinia管理购物车列表数据并添加持久化缓存 本地购物车 - 加入购物车实现 添加购物车 基础思想:如果…

Ceph社区上游正式合入openEuler原生支持,并通过CI持续验证

作为覆盖全场景应用、支持多样性算力的面向数字基础设施的开源操作系统,openEuler始终遵循“上游优先”的策略,帮助上游开源软件原生支持openEuler,让openEuler系操作系统的用户可以在开发、集成、使用这些开源软件或基于这些开源软件的产品和…

市面上的ipad国产触控笔怎么样?精选的性价比电容笔

要知道,真正的苹果品牌的那款原装电容笔,光是一支电容笔就价格近千元。实际上,平替电容笔对没有太多预算的用户是个不错的选择。一支苹果品牌的电容笔,价格是平替品牌的四倍,但电容笔的书写效果,却丝毫不逊…

idea如何解决导入的项目不是Maven工程(文件下面没有蓝色的方格)二

简介: Maven项目导入,idea不识别项目 解决方法: 选中pom.xml -- 右键 -- Add as Maven Project

技术实力加速企业上云,联想混合云获评专有云优秀案例入选混合云全景图四大方向

7月25-26日,由中国信息通信研究院、中国通信标准化协会联合主办的第十届可信云大会在京顺利召开。大会重磅发布了云计算白皮书(2023年)、《混合云产业全景图(2023)》、中国算力服务研究报告、中国云计算发展指数报告等…

Golang速成

目录 Golang 语言特性Golang的优势Golang 的应用场景Golang 的不足 基础语法变量的声明常量与 iotastring字符串遍历strings 包bytes 包strconv 包unicode 包 循环语句range 函数多返回值init 函数闭包import 导包匿名函数 指针defer切片 slice数组sliceslice 操作… mapmap 的…

MySQL InnoDB死锁原因及改善建议(InnoDB Deadlocks)

死锁是事务型数据库中一种现象,为了在高并发环境下不出错,数据库引入了"锁"这一数据结构来控制资源的并发访问,但也会导致死锁。 目录 一、死锁概念 1.1 死锁的原因 1.2 死锁监测 二、死锁演示 2.1 死锁生成过程 2.2 死锁信息查看 …

EtherNet/IP转Modbus网关以连接AB PLC

本案例为西门子S7-1200 PLC通过捷米特Modbus转EtherNet/IP网关捷米特JM-EIP-RTU连接AB PLC的配置案例。 网关分别从ETHERNET/IP一侧和MODBUS一侧读写数据,存入各自的缓冲区,网关内部将缓冲区的数据进行交换,从而实现两边数据的传输。 网关做为…

vue 实现拖拽效果

实现方式:使用自定义指令可以实现多个面板拖拽互不影响 1.自定义指令 js directives: {// 拖拽drag(el) {el.onmousedown function (e) {let x e.pageX - el.offsetLeftlet y e.pageY - el.offsetTopdocument.onmousemove function (e) {el.style.left e.pag…

【C++】C++ STL标准模板库知识点总结(秋招篇)

文章目录 前言STL的六大组件是?容器(container) 算法(algorithm) 迭代器(iterator) 三者的关系?容器分为几种?分别有哪些?关联性容器和非关联性容器有什么区别?Vector容器是怎么调整大小的?(内存…

【MySQL】内置函数

目录 一、日期函数 1、获得年月日 2、获得时分秒 3、获得时间戳 4、在日期的基础上加日期 5、在日期的基础上减去时间 6、计算两个日期之间相差多少天 7、案例 二、字符串函数 1、获取emp表的ename列的字符集 2、要求显示exam_result表中的信息 3、求学生表中学生姓…

短视频矩阵源码/系统搭建/源码

一、短视频矩阵系统开发需要具备以下能力 短视频技术能力:开发人员应具备短视频相关技术能力,如视频编解码、视频流媒体传输等。 大数据存储和处理能力:短视频矩阵系统需要处理大量的视频数据,因此需要具备大数据存储和处理的能力…

传统商超苦战即时零售,或沦为炮灰

眼下,在美团闪购、京东到家、饿了么、淘宝买菜/淘鲜达、盒马,还有朴朴超市、叮咚买菜等一众类超市App或者平台的绝情裹挟下,包含沃尔玛、家乐福、永辉、大润发、联华、华润万家、步步高、中百等等这些传统商超企业巨头,正过得越来…

JAVA面试总结-Redis篇章(六)——数据过期策略

Java面试总结-Redis篇章(六)——数据过期策略 Redis数据删除策略——惰性删除Redis数据删除策略——定期删除 Redis数据删除策略——惰性删除 Redis数据删除策略——定期删除

ADS仿真低噪声放大器学习笔记

ADS仿真低噪声放大器 文章目录 ADS仿真低噪声放大器1. 安装晶体管的库文件2. 直流分析DC Tracing3. 偏置电路的设计4. 稳定性分析5. 输入匹配和输出匹配 设计要求&#xff1a; 工作频率&#xff1a;2.4~2.5GHz ISM频段 噪声系数&#xff1a;NF < 0.7 增益&#xff1a;Gain &…

本地缓存LoadingCache

引入依赖 <!-- https://mvnrepository.com/artifact/com.google.guava/guava --> <dependency><groupId>com.google.guava</groupId><artifactId>guava</artifactId><version>32.1.1-jre</version> </dependency>主要代…

13.5 【Linux】使用者的特殊 shell 与 PAM 模块

13.5.1 特殊的 shell, /sbin/nologin 我们所谓的“无法登陆”指的仅是&#xff1a;“这个使用者无法使用 bash 或其他 shell 来登陆系统”而已&#xff0c;并不是说这个帐号就无法使用其他的系统资源。举例来说&#xff0c;各个系统帐号&#xff0c;打印工作由 lp这个帐号在管…

ssm文章发布管理系统java小说作品发表jsp源代码mysql

本项目为前几天收费帮学妹做的一个项目&#xff0c;Java EE JSP项目&#xff0c;在工作环境中基本使用不到&#xff0c;但是很多学校把这个当作编程入门的项目来做&#xff0c;故分享出本项目供初学者参考。 一、项目描述 ssm文章发布管理系统 系统有2权限&#xff1a;前台账…