MySQL~DQL查询语句

news2024/9/22 19:09:47

一、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 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Angular —— Ng Serve Proxy让Ng Serve和你的服务器共存

ng serve是angular-cli的一个命令,用于在本地开发中启动一个测试服务器,自动编译和重新加载你的项目,并且在编译过程中,它会检查你代码中的一些错误,在控制台中提示你。 但是在实际项目,各个项目几乎必然会…

14 Linux实操篇-进程管理(重点)

14 Linux实操篇-进程管理(重点) 文章目录 14 Linux实操篇-进程管理(重点)14.1 进程的基本操作14.1.1 进程和程序14.1.2 父进程和子进程14.1.3 常见的Linux进程14.1.4 显示系统执行的进程-ps14.1.5 终止进程-kill/killall14.1.6 查…

应用在工业车间环境温湿度数据看板中的温度传感芯片

现在的制造生产行业不断的实现可视化生产,特别是一些特殊的生产行业需要对一些重点的场合或者生产环境进行环境监控,但是要是想要实时查看室内环境完全依靠人工来巡查是费时又费力的,要想解决这一难题还得引进现在的硬件环境数据监控看板,它是针对于现在制造业的一些特殊环境而…

EIGRP路由协议(红茶三杯CCNA)

EIGRP(Enhanced Interior Gateway Routing Protocol)增强型内部网关协议-Cisco独有 前身对比 特点: 1. 快速收敛-路由条目不过期,拥有备份路由 2. 高级距离矢量协议-具有距离矢量性和链路状态协议特征 3. 无类路由协议-可划分子…

P1118 [USACO06FEB] Backward Digit Sums G/S(dfs+思维杨辉三角)

1:题目分析 那么我只需要枚举1~n位置上的数,看哪个符合要求。 2:补充: 一个数只能用一次,因为结果是1~n的排列(最后组成肯定是1~n的每个数都出现过)。 3: ACcode(加注释)&#xff…

网格梯度离散化 gradient

欢迎关注更多精彩 关注我,学习常用算法与数据结构,一题多解,降维打击。 参考自polygon mesh proccessing这本书 重心坐标定理 定理证明点击前往 已经三角形三点上的函数值分别为gi,gj,gk。 可以利用插值得到g处的函数值。 g α g i β …

Redis优惠券秒杀超卖问题

Redis秒杀超卖问题 前言一、出现秒杀超卖的原因二、超卖解决方案使用乐观锁解决超卖问题程序中进行解决 前言 这是我认为b站上最好的redis教程,各方面讲解透彻,知识点覆盖比较全。 黑马redis视频链接:B站黑马redis教学视频 本文参考黑马redi…

多点测试激光焊缝透光率检测仪

聚丙烯(PP)是日常生活生产中常见的一种塑料,具有较高的耐冲击性,机械强度以及良好的抗腐蚀性,如能耐多种有机溶剂和酸碱腐蚀性液体,被广泛应用于家用电器的绝缘外壳、培养瓶、食品袋、饮料包装瓶等产品中。…

volley 学习笔记1--发送请求

一、概览 Volley 具有以下优势: 自动网络请求调度。 多个并发网络连接。 透明磁盘和具有标准 HTTP 缓存一致性的内存响应缓存。 支持请求优先级。 取消请求 API。您可以取消单个请求,也可以设置要取消的请求的时间段或范围。 可轻松自定义&#xff…

Docker学习笔记,包含docker安装、常用命令、dockerfile、docker-compose等等

😀😀😀创作不易,各位看官点赞收藏. 文章目录 Docker 学习笔记1、容器2、Docker 安装3、Docker 常用命令4、Docker 镜像5、自定义镜像5.1、镜像推送到阿里云5.2、镜像私有库 6、数据卷7、Docker 软件安装8、Docker File8.1、常见保…

如何为WordPress博客网站配置免费域名HTTPS证书

文章目录 如何为WordPress博客网站配置免费域名HTTPS证书前置条件:步骤1 申请免费的域名HTTPS证书步骤2 将HTTP证书配置到cpolar的配置文件中2.1 创建证书文件夹2.2 修改cpolar配置文件2.3 重启cpolar服务2.4 查看后台Wordpress隧道是否在线正常2.5 用浏览器打开站点…

php适合做erp吗?

首先我们来了解一下什么是ERP? ERP——Enterprise Resource Planning 企业资源计划系统,是指在信息技术基础上,以系统化的管理思想,为企业决策层及员工提供决策运行手段的管理平台。 ERP系统集中信息技术与先进的管理思想于一身…

HCIP——OSPF优化、拓展配置及选路规则

OSPF优化以及拓展配置 一、OSPF的优化1、汇总域间路由汇总域外路由汇总 2、特殊区域末梢区域完全末梢区域 NSSA非完全末梢区域Totally NSSA(完全的非完全末梢区域) 二、OSPF的拓展配置1、手工认证2、加快收敛3、沉默接口缺省路由 4、路由过滤5、路由控制5.1 修改优先级5.2 修改…

「2024」预备研究生mem-带绝对值的方程高次方程替代降次法

一、带绝对值的方程 二、高次方程替代降次法

Mybatis学习笔记,包含mybatis基本使用、关系映射、动态SQL、分页插件等等

😀😀😀创作不易,各位看官点赞收藏. 文章目录 MyBatis 学习笔记1、Mybatis Demo 程序2、Mybatis 核心配置文件3、Mybatis Mapper 传参映射4、Mybatis 查询结果5、Mybatis 关系映射处理5.1、多对一关系映射处理5.2、一对多关系映射处…

前后端分离开发流程

1、介绍 在前后端分离开发中,前端负责用户界面和交互逻辑的实现,后端则处理业务逻辑和数据持久化。这种开发模式的优势在于前后端可以独立进行开发,提高了开发效率,并且使得前后端可以采用不同的技术栈来实现各自的功能。 2、开…

golang 中的 cronjob

引言 最近做了一个需求,是定时任务相关的。以前定时任务都是通过 linux crontab 去实现的,现在服务上云(k8s)了,尝试了 k8s 的 CronJob,由于公司提供的是界面化工具,使用、查看起来很不方便。于是有了本文&#xff0c…

【技术积累】Vue.js中的核心知识

Vue的生命周期 Vue中的生命周期是指组件从创建到销毁的整个过程中,会触发一系列的钩子函数 Vue2中的生命周期 Vue2中的生命周期钩子函数是在组件的不同阶段执行的特定函数。这些钩子函数允许开发者在组件的不同生命周期阶段执行自定义的逻辑。 Vue2中的生命周期钩…

【雕爷学编程】MicroPython动手做(02)——尝试搭建K210开发板的IDE环境5

#尝试搭建K210的Micropython开发环境(Win10) #实验程序之三:更新频率演示 #尝试搭建K210的Micropython开发环境(Win10) #实验程序之三:更新频率演示from Maix import freqcpu_freq, kpu_freq freq.get() …

数学建模-蒙特卡洛模拟

%% 蒙特卡罗用于模拟三门问题 clear;clc %% (1)预备知识 % randi([a,b],m,n)函数可在指定区间[a,b]内随机取出大小为m*n的整数矩阵 randi([1,5],5,8) %在区间[1,5]内随机取出大小为5*8的整数矩阵 % 2 5 4 5 3 1 4 2 %…