千家信息网

如何设计高效合理的MySQl查询语句?23种常用类型汇总

发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作
千家信息网最后更新 2026年11月03日如何设计高效合理的MySQl查询语句?23种常用类型汇总

MySQL对于很多Linux从业者而言,是一个非常棘手的问题,多数情况都是因为对数据库出现问题的情况和处理思路不清晰。在进行MySQL的优化之前必须要了解的就是MySQL的查询过程,很多的查询优化工作实际上就是遵循一些原则让MySQL的优化器能够按照预想的合理方式运行而已。 那什么是 MySQL ,你真的了解吗?

1、什么是数据库 ?

数据库( Database)是按照数据结构来组织、存储和管理数据的仓库随着信息技术和市场的发展,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统。

主流的数据库有: sqlserver,mysql,Oracle、SQLite、Access、MS SQL Server等, 我 主要讲述的是 mysql 。

2、数据库管理是干什么用的?

a. 将数据保存到文件或内存

b. 接收特定的命令,然后对文件进行相应的操作

3、 MySQL常用查询语句

一、查询数值型数据

SELECT * FROM tb_name WHERE sum > 100;
查询谓词 :>,=,<,<>,!=,!>,!<,=>,=<

二、查询字符串
SELECT * FROM tb_stu WHERE sname = '小刘'
SELECT * FROM tb_stu WHERE sname like '刘%'
SELECT * FROM tb_stu WHERE sname like '%程序员'
SELECT * FROM tb_stu WHERE sname like '%PHP%'

三、查询日期型数据
SELECT * FROM tb_stu WHERE date = '2011-04-08'
注 :不同数据库对日期型数据存在差异: :
(1)MySQL:SELECT * from tb_name WHERE birthday = '2011-04-08'
(2)SQL Server:SELECT * from tb_name WHERE birthday = '2011-04-08'
(3)Access:SELECT * from tb_name WHERE birthday = #2011-04-08#

四、查询逻辑型数据
SELECT * FROM tb_name WHERE type = 'T'
SELECT * FROM tb_name WHERE type = 'F'
逻辑运算符 :and or not

五、查询非空数据
SELECT * FROM tb_name WHERE address <>" order by addtime desc
注 :<>相当于PHP中的!=

六、利用变量查询数值型数据
SELECT * FROM tb_name WHERE id = '$_POST[text]'
注 :利用变量查询数据时,传入SQL的变量不必用引号括起来,因为PHP中的字符串与数值型数据进行连接时,程序会自动将数值型数据转变成字符串,然后与要连接的字符串进行连接

七、利用变量查询字符串数据
SELECT * FROM tb_name WHERE name LIKE '%$_POST[name]%'
完全匹配的方法 "%%"表示可以出现在任何位置

八 、查询指定时间段的数据
SELECT 要查找的字段 FROM 表名 WHERE 字段名 BETWEEN 初始值 AND 终止值
SELECT * FROM tb_stu WHERE age BETWEEN 0 AND 18

九 、按月查询统计数据
SELECT * FROM tb_stu WHERE month(date) = '$_POST[date]' ORDER BY date ;
注: SQL语言中提供了如下函数,利用这些函数可以很方便地实现按年、月、日进行查询
year(data):返回data表达式中的公元年分所对应的数值
month(data):返回data表达式中的月分所对应的数值
day(data):返回data表达式中的日期所对应的数值

十 、查询前 n条记录
SELECT * FROM tb_name LIMIT 0,$N;
limit语句与其他语句,如order by等语句联合使用,会使用SQL语句千变万化,使程序非常灵活

十一 、查询后 n条记录
SELECT * FROM tb_stu ORDER BY id ASC LIMIT $n

十二 、查询从指定位置开始的 n条记录
SELECT * FROM tb_stu ORDER BY id ASC LIMIT $_POST[begin],$n
注意 :数据的id是从0开始的

十三 、查询统计结果中的前 n条记录
SELECT * ,(yw+sx+wy) AS total FROM tb_score ORDER BY (yw+sx+wy) DESC LIMIT 0,$num

十四、查询大于指定条件的记录
SELECT * FROM tb_stu WHERE age>$_POST[age] ORDER BY age;

十五 、显示数据表中重复的记录和记录条数
SELECT name,age,count(*) ,age FROM tb_stu WHERE age = '19' group by date

十六 、查询结果不显示重复记录
SELECT DISTINCT 字段名 FROM 表名 WHERE 查询条件
注 :SQL语句中的DISTINCT必须与WHERE子句联合使用,否则输出的信息不会有变化 ,且字段不能用*代替

十七 、对数据进行降序 /升序查询
SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段 DESC 降序
SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段 ASC 升序
注 :对字段进行排序时若不指定排序方式,则默认为ASC升序

十八 、对统计结果进行排序
函数 SUM([ALL]字段名) 或 SUM([DISTINCT]字段名),可实现对字段的求和,函数中为ALL时为所有该字段所有记录求和,若为DISTINCT则为该字段所有不重复记录的字段求和
如: SELECT name,SUM(price) AS sumprice FROM tb_price GROUP BY name

SELECT * FROM tb_name ORDER BY mount DESC,price ASC

十九 、 NOT与谓词进行组合条件的查询
(1)NOT BERWEEN … AND … 对介于起始值和终止值间的数据时行查询 可改成 <起始值 and="">终止值
(2)IS NOT NULL 对非空值进行查询
(3)IS NULL 对空值进行查询
(4)NOT IN 该式根据使用的关键字是包含在列表内还是排除在列表外,指定表达式的搜索,搜索表达式可以是常量或列名,而列名可以是一组常量,但更多情况下是子查询

二十 、对数据进行多条件查询
SELECT 字段名 FROM tb_stu WHERE 条件 ORDER BY 字段1 ASC 字段2 DESC …
注意 :对查询信息进行多条件排序是为了共同限制记录的输出,一般情况下,由于不是单一条件限制,所以在输出效果上有一些差别。

二十一、单列数据分组统计
SELECT id,name,SUM(price) AS title,date FROM tb_price GROUP BY pid ORDER BY title DESC
注 :当分组语句group by排序语句order by同时出现在SQL语句中时,要将分组语句书写在排序语句的前面,否则会出现错误

二十二、多列数据分组统计
多列数据分组统计与单列数据分组统计类似
SELECT *,SUM(字段1*字段2) AS (新字段1) FROM 表名 GROUP BY 字段 ORDER BY 新字段1 DESC
SELECT id,name,SUM(price*num) AS sumprice FROM tb_price GROUP BY pid ORDER BY sumprice DESC
注: group by语句后面一般为不是聚合函数的数列,即不是要分组的列

二十三、多表分组统计
SELECT a.name,AVG(a.price),b.name,AVG(b.price) FROM tb_demo058 AS a,tb_demo058_1 AS b WHERE a.id=b.id GROUP BY b.type;

关注 51Testing软件测试网,提升it技能,从不会到熟练只差一步。


数据 查询 字段 语句 条件 数据库 分组 统计 数值 排序 函数 字符 字符串 表达式 管理 变量 情况 存储 信息 升序 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 为想互联网科技怎么样 云信互联网科技有限公司 互联网与科技发展 互联网最新的科技有限公司 互联网医疗科技 互联网金融公司科技 宜安科技 互联网金融 小马过河互联网科技 狮子座互联网科技培训 一五八零互联网科技 互联网科技类展会 深圳卡尔迅互联网科技有限公司怎么样 无锡溥仪互联网科技有限公司 互联网科技博主是什么意思 互联网科技热点资讯 互联网保险科技创业 工业互联网山东科技大学 版纳互联网科技选哪家 中国科技和美国互联网 兰石爱特工业互联网科技分公司 互联网未来科技 深圳卡尔迅互联网科技有限公司怎么样 互联网教育科技公司vipkid 欧洲十大科技互联网公司 银川新华互联网科技职业技术培训学校图片 福建科技产业互联网发展 互联网科技公司有风险吗 玉溪互联网科技怎么选 未来五年的互联网科技 四川慕妮娅互联网科技有限公司
0