MySQL数据库—DQL查询语句(一篇教会你快速找到想要的数据)

目录

▐ 特定列查询

▐ 逻辑处理

▐ 字符函数操作

▐ 分组函数统计

▐ 数学函数

▐ 日期函数

▐ 条件查询

▐ 排序

▐ 数量限制 

▐ 合并

▐ 分组查询


▐ 前言:

 •  DQL全称 Data Query Language 数据查询语言 

 •  可以从一个表中查询数据,也可以从多个表中查询数据。 

 •  基本语法:select 查询的列  from 表名  where 条件   排序   数量限制   分组......

📖 首先让我们先创建一个表,本篇文章的查询都以此表为例

-- 创建一个学生表
CREATE TABLE student(num INT PRIMARY KEY AUTO_INCREMENT,-- 学号 -主键NAME VARCHAR(10) NOT NULL,         -- 名字    
gender CHAR(1) NOT NULL,           -- 性别    
score INT NOT NULL,                -- 分数
birthday DATE,                     -- 出生日期
height DECIMAL(3,2)                -- 身高) -- 插入数据
INSERT INTO student(NAME,gender,score,birthday,height)
VALUE
('一鸣','男',84,'2005-4-5','1.75'),
('张三','男',76,'2005-7-4','1.81'),
('小李','女',68,'2005-1-12','1.71'),
('小张','女',54,'2004-8-23','1.64'),
('李四','男',90,'2004-9-6','1.68'),
('张三','男',80,'2006-12-9','1.77')

       就此我们的表就创建完成了,接下来会讲解对表的各种查询操作,上船~启航!

▐ 特定列查询

 •  select  查询列表  from  表名

-- 查找name,score列
SELECT NAME,score FROM student
-- 查找所有列 *
SELECT * FROM student

 

▐ 逻辑处理

 •  case  when  条件  then 结果1 else 结果2  end    可以有多个when

-- case  when  条件  then 结果1 else 结果2  end    可以有多个when
SELECT NAME ,(CASE WHEN score>=90 THEN '优秀'WHEN score>80 AND score<90 THEN'良好'ELSE '一般' END)AS '等级'FROM student
-- 使用as为列重命名

▐ 字符函数操作

 •  单行字符函数--会对查询的每条记录进行操作

 -- length():获取参数值的字节个数SELECT NAME,LENGTH(NAME) FROM student-- char_length()获取参数值的字符个数SELECT NAME,CHAR_LENGTH(NAME)AS NAME,gender FROM student-- concat(str1,str2,.....):拼接字符串  as 别名SELECT num,CONCAT(NAME,':',gender)AS NAME FROM student-- upper()/lower():将字符串变成大写/小写
SELECT UPPER(NAME),LOWER(NAME) FROM student-- substring(str,pos,length):截取字符串 位置从1开始
SELECT SUBSTRING(NAME,2,3) FROM student-- instr(str,指定字符):返回子串第一次出现的索引(indexof()),如果找不到返回0
SELECT INSTR(NAME,'三') FROM student-- trim(str):去掉字符串前后的空格或子串,trim(指定子串 from 字符串)
SELECT CHAR_LENGTH(TRIM(NAME)) FROM student
SELECT  TRIM('张' FROM NAME)  FROM student-- lpad(str,length,填充字符):用指定的字符实现左填充将str填充为指定长度
SELECT LPAD(NAME,5,'a') , RPAD(NAME,5,'b')FROM student
-- rpad(str,length,填充字符):用指定的字符实现右填充将str填充为指定长度-- replace(str,old,new):替换,替换所有的子串
SELECT REPLACE(NAME,'一','I') FROM student                  

分组函数统计

  •  sum 求和、avg 平均值、max 最大值、min 最小值、count 计数

-- sum 求和、avg 平均值、max 最大值、min 最小值、count 计数-- sum(),avg()只能用于数值类型-- max(),min()可以适用于所有类型-- count统计行数-- count(*) count(1) count(列名) 列的值为空不统计SELECT SUM(height),AVG(height),MAX(height),MIN(height),COUNT(*) FROM student-- 查询身高最高的
SELECT * FROM student WHERE height =(SELECT MAX(height)FROM student)

数学函数

 

 •  round( , 保留位数 )四舍五入
 
 •  ceil向上取整
 
 •  floor向下取整   
 
 •  truncate 截断,不会进行四舍五入
 
 •  mod(被除数,除数)
 
 •  rand()获取随机数 0~1之间的小数

-- round(数值):四舍五入
SELECT NAME,ROUND(height) FROM student
-- 指定保留小数位数
SELECT NAME,ROUND(height,1) FROM student-- ceil(数值):向上取整,返回>=该参数的最小整数SELECT NAME,CEIL(height),FLOOR(height) FROM student-- floor(数值):向下取整,返回<=该参数的最大整数
-- truncate(数值,保留小数的位数):截断,小数点后截断到几位, 不会四舍五入
SELECT NAME,TRUNCATE(height,1) FROM student-- mod(被除数,除数):取余,被除数为正,则为正;被除数为负,则为负
SELECT NAME, MOD(num,3) FROM student-- rand():获取随机数,返回0-1之间的小数
SELECT NAME, RAND() FROM student

▐ 日期函数

 •  str_to_date(字符串格式日期,格式):将日期格式的字符转换成指定格式的日期

 •  date_format(日期列,格式):将日期转换成字符串

 •  datediff(big,small):返回两个日期相差的天数

-- 日期格式化
SELECT NAME, YEAR(birthday),MONTH(birthday),DAY(birthday) FROM student-- 将字符串格式化为日期类型
SELECT STR_TO_DATE('2001-2-2','%Y-%m-%d') FROM student -- 将日期格式化为指定的字符串
SELECT DATE_FORMAT(birthday,'%Y-%m') FROM student-- 计算两个日期之间相差的天数
SELECT DATEDIFF(CURDATE(),birthday) FROM student

日期格式: 

 条件查询

 •  使用WHERE 子句,将不满足条件的行过滤掉,WHERE 子句紧随 FROM 子句

 •  语法:select <结果列>  from <表名>  where <条件>


 •  比较符号:   =  ,   != 或<>  ,   >  ,   <  ,   >=  ,   <=

-- select 结果列 from 表名 where 条件SELECT * FROM student WHERE num =2

 •  逻辑运算:  and (与)     or (或)     not (非)

 -- and 所有条件都满足 or满足其一即可SELECT * FROM student WHERE gender ='男'AND height>=1.75

 •  between ... and ...  两者之间  ( 包含临界值 )

 -- 包含临界值SELECT * FROM student WHERE height BETWEEN 1.70 AND 1.85

 •  in   判断某字段的值是否属于in列表中的某一项

 -- in (等价or) 否定在in前加notSELECT * FROM student WHERE height IN(1.71,1.81)

 •  IS NULL(为空的)或 IS NOT NULL(不为空的)

 -- is (not) nullSELECT * FROM student WHERE address IS NULL

 •  模糊查询:like  (效率低很少用)

 -- 模糊查询(效率低很少用)   %通配符-- likeSELECT * FROM student WHERE NAME LIKE '张%'

 排序

 •  查询结果排序使用 ORDER BY          order by 排序列 ASC/DESC

 •  ASC 升序 (默认)       DESC 降序

 •  可以给多个排序条件 (什么排序都没有,默认按主键升序排序)

-- ASC 升序(默认)    DESC降序SELECT * FROM student ORDER BY height DESCSELECT * FROM student ORDER BY height ASC-- 可以给多个排序条件

 数量限制 

 •  对查询的显示结果限制数目。limit 开始位置 , 查询的数量   (sql语句最末尾位置)

 •  实际应用场景:数据分页显示

-- limit 开始位置,查询的数量SELECT * FROM student LIMIT 0,2SELECT * FROM student LIMIT 2,2

📖 若设n为分页的页数,m为查询的数量,则总数为 (n-1)*2

 合并

 •  union        合并多个查询结果,可以去除重复数据.

 •  union all   只合并不去重 (效率更高)

📖     [SQL 语句 1]                     [SQL 语句 1] 

          UNION                              UNION ALL

          [SQL 语句 2]                     [SQL 语句 2]

 注意:合并时要求结果列相同.

 分组查询

  •  语法:select  列  from  表  where  筛选条件  group by  分组的列表  having  分组后的筛选 

-- 只筛选出同名的人
SELECT COUNT(*),NAME FROM student GROUP BY NAME HAVING COUNT(*)>1 

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

连锁收银系统批量调整商品价格教程

1、进入系统后台&#xff0c;系统后台登录网址&#xff1a; 2、点击商品>商品调价 3、将按模板整理好的商品价格数据导入即可。 Tips&#xff1a;每次导入的商品数量不要超过6000 条。

PHP基于B/S版 医院不良事件管理系统源码vscode+laravel8医院如何加强不良事件上报系统的管理 AEMS系统源码

PHP基于B/S版 医院不良事件管理系统源码vscodelaravel8医院如何加强不良事件上报系统的管理 AEMS系统源码 医院安全&#xff08;不良&#xff09;事件管理AEMS系统AEMS采用无责的、自愿的填报不良事件方式&#xff0c;有效地减轻医护人员的思想压力&#xff0c;实现以事件为主要…

ShardingSphere 5.x 系列【30】影子库

有道无术,术尚可求,有术无道,止于术。 本系列Spring Boot 版本 3.1.0 本系列ShardingSphere 版本 5.4.0 源码地址:https://gitee.com/pearl-organization/study-sharding-sphere-demo 文章目录 1. 影子库与全链路压测2. 核心概念3. 使用限制4. 执行原理4.1 DML 语句4.2 D…

【driver2】设备读写,同步和互斥,ioctl,进程休眠,时间和延时,延缓

文章目录 1.实现设备读写&#xff1a;write函数中一个进程写没问题&#xff0c;两进程写&#xff1a;第一个进程运行到kzalloc时&#xff0c;第二个进程也执行了kzalloc&#xff0c;只第二个进程地址保存在c中&#xff0c;第一个进程分配内存空间地址丢失造成内存泄漏。第一个进…

[渗透利器]全能工具=信息收集->漏洞扫描->EXP调用

前言 hxd开发的工具&#xff0c;大致模块有&#xff08;信息收集&#xff0c;漏洞扫描&#xff0c;暴力破解&#xff0c;POC/EXP&#xff0c;常用编码&#xff09; 工具使用 下载后解压 安装环境 pip install -r requirements.txt 注意&#xff0c;该工具继承了两种不同的使…

2024年5月6日优雅草蜻蜓API大数据服务中心v2.0.3更新

v2.0.3更新 2024年5月6日优雅草蜻蜓API大数据服务中心v2.0.3更新-修复改版后搜索框漏掉的bug-增加搜索框 提示&#xff1a;优雅草大数据中心已经 上线137天 稳定运行 1181555 次 累积调用 目前大数据中心用户呈现增长趋势&#xff0c;目标2024年11月底突破1亿次调用&#xf…

开源推荐榜【MalusAdmin基于 Vue3/TypeScript/NaiveUI 和 NET7 Sqlsugar 开发的后台管理框架】

简介 Malus是海棠的意思&#xff0c;顾名思义&#xff0c;海棠后台管理系统&#xff0c;读音与【马卢斯】相近&#xff0c;也可称作为马卢斯后台管理系统。 基于NET Core | NET7/8 & Sqlsugar | Vue3 | vite4 | TypeScript | NaiveUI 开发的前后端分离式权限管理系统,采用…

工业网关是做什么的?-天拓四方

随着信息技术的迅猛发展&#xff0c;物联网技术正日益融入我们生活的方方面面。而在工业领域&#xff0c;物联网技术的应用更是为传统制造业带来了翻天覆地的变化。其中&#xff0c;工业网关作为物联网的重要组成部分&#xff0c;正发挥着越来越重要的作用。那么&#xff0c;工…

ASP.NET MVC(二) HtmlHelper

强类型 》》》 Form Html.Action() 执行一个Action&#xff0c;并返回html字符串。 Html.ActionLink() 生成一个超链接。 》》》 htmlhelper 扩展方法 /// 扩展方法 三要素 静态类静态方法this 》》》》上面需要引入命名空间&#xff0c; 》》》 不需要引入命名空间 pu…

页面多开、谷歌浏览器解决不能批量打开问题、批量打开被限制

目录 问题原因谷歌浏览器解决办法来看效果 问题 我们使用批量打开页面的时候 只能打开第一个页面 原因 这种问题是因为 浏览器限制了浏览器的弹出 并不是人家页面功能不能用 谷歌浏览器解决办法 在浏览器输入这个路径 chrome://settings/content/popups?search%E9%87%…

TypeError报错处理

哈喽&#xff0c;大家好&#xff0c;我是木头左&#xff01; 一、Python中的TypeError简介 这个错误通常表示在方法调用时&#xff0c;参数类型不正确&#xff0c;或者在对字符串进行格式化操作时&#xff0c;提供的变量与预期不符。 二、错误的源头&#xff1a;字符串格式化…

AI神助攻!小白也能制作自动重命名工具~

我们平时从网上下载一些文件&#xff0c;文件名很多都是一大串字母和数字&#xff0c;不打开看看&#xff0c;根本不知道里面是什么内容。 我想能不能做个工具&#xff0c;把我们一个文件夹下面的所有word、excel、ppt、pdf文件重命名为文件内容的第一行。 我们有些朋友可能不会…