博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SQL基础-SELECT高级查询
阅读量:6074 次
发布时间:2019-06-20

本文共 3623 字,大约阅读时间需要 12 分钟。

hot3.png

SELECT高级查询

==SELECT 查询结果仅做展示用,并不能改变数据库真实数据!==

示例表(成绩表)

学号 姓名 语文 数学 英语
1 王晓明 86 88 64
2 赵小丫 94 72 90
3 李小丫 86 77 89
4 王晓 98 96 91

创建成绩表

create table 成绩表(学号 int primary key,姓名 varchar(20),语文 int,数学 int,英语 int);

成绩表中添加数据

INSERT INTO 成绩表 SET 学号="1",姓名="王晓明",语文="86",数学="88",英语="64";INSERT INTO 成绩表 SET 学号="2",姓名="赵小丫",语文="94",数学="72",英语="90";INSERT INTO 成绩表 SET 学号="3",姓名="李小丫",语文="86",数学="77",英语="89";INSERT INTO 成绩表 SET 学号="4",姓名="王晓",语文="98",数学="96",英语="91";

查询显示别名

一般用于便于查看临时建立别名

SELECT 姓名 as 真实姓名,语文 as 语文成绩 FROM 成绩表;
+----------+| 真实姓名 |+----------+| 王晓明   || 赵小丫   || 李小丫   || 王晓     |+----------+

模糊匹配

匹配符 释义
* 表示查找所有信息
% 表示任意0个或多个字符
_ 表示任意单个字符

WHERE 匹配

条件查询

SELECT * FROM 成绩表 WHERE 数学>90;

LIKE 匹配

匹配符示例

SELECT * FROM 成绩表;#表所有内容显示SELECT * FROM 成绩表 WHERE 姓名 LIKE '王晓%';#查询到【王晓明】和【王晓】所在行SELECT * FROM 成绩表 WHERE 姓名 LIKE '_小丫';#查询到【赵小丫】和【李小丫】所在行

范围匹配

匹配方式 释义
between 10 and 20 值在10到20之间,区间范围匹配
in(20,80,90) 自括号内抽取固定数值匹配
limit(3) 选择特定显示行
limit(1,3) 选择行后内容

匹配示例

SELECT * FROM 成绩表 WHERE 语文 BETWEEN 90 AND 100;#查询到语文成绩是【90到100区间】的人SELECT * FROM 成绩表 WHERE 英语 IN (90,91);#查询到英语成绩是【90】和【91】的人SELECT * FROM 成绩表 LIMIT 3;#置显示3行数据SELECT * FROM 成绩表 LIMIT 1,3;#显示【第1行后边的3行内容】

REGEXP 正则匹配符

==更多正则匹配符参考博文《正则表达式字符说明》==

匹配符 释义
^ 开头匹配
$ 结尾匹配
[] 括号内范围匹配
[^] 反义匹配

匹配示例

SELECT * FROM 成绩表 WHERE 姓名 REGEXP '^王';#查询到所有是【王】开头的姓名SELECT * FROM 成绩表 WHERE 姓名 REGEXP '丫$';#查询到所有以【丫】结尾的姓名SELECT * FROM 成绩表 WHERE 姓名 REGEXP '[赵李]小丫';#查询到姓【赵】和【李】,名字叫小丫的人SELECT * FROM 成绩表 WHERE 姓名 REGEXP '^[^王]';#查询到所有不是【王】开头的姓名

SELECT 运算符

运算符 释义
+
-
*
/
% 取余
SELECT 学号+1,姓名,语文-1,数学*2,英语/2 FROM 成绩表 ;
+--------+--------+--------+--------+---------+| 学号+1 | 姓名   | 语文-1 | 数学*2 | 英语/2  |+--------+--------+--------+--------+---------+|      2 | 王晓明 |     85 |    176 | 32.0000 ||      3 | 赵小丫 |     93 |    144 | 45.0000 ||      4 | 李小丫 |     85 |    154 | 44.5000 ||      5 | 王晓   |     97 |    192 | 45.5000 |+--------+--------+--------+--------+---------+
运算符 释义
> 大于
< 小于
= 等于
>= 大于等于
<= 小于等于
<>或!= 不等于
SELECT * FROM 成绩表 WHERE 语文=86;#查询所有语文成绩【等于86】的人SELECT * FROM 成绩表 WHERE 数学>80;#查询所有数学成绩【大于80】的人SELECT * FROM 成绩表 WHERE 英语<90;#查询所有英语成绩【小于90】的人

利用别名进行运算查询总成绩

SELECT 学号,姓名,语文+数学+英语 as 总成绩 FROM 成绩表;
+------+--------+--------+| 学号 | 姓名   | 总成绩 |+------+--------+--------+|    1 | 王晓明 |    238 ||    2 | 赵小丫 |    256 ||    3 | 李小丫 |    252 ||    4 | 王晓   |    285 |+------+--------+--------+
运算符 释义
and
or
not
SELECT * FROM 成绩表 WHERE 语文>90 and 数学> 90 and 英语>90;#查询到【满足语数英都大于90的三个条件】的人SELECT * FROM 成绩表 WHERE 英语>90 or 数学> 80;#查询到【英语>90】【或】【数学大于80】的人SELECT * FROM 成绩表 WHERE not 英语<90;#查询到【英语不小于90】的人

OPDER BY 排序

次序 释义
ASC 升序
DESC 降序
SELECT * FROM 成绩表 ORDER BY 语文 ASC;#语文成绩【从低到高】排列SELECT * FROM 成绩表 ORDER BY 数学 DESC;#数学成绩【从高到低】排列

GROUP BY 分组

一般分组配合函数使用,这里仅做分组示例

默认重复的内容归类到一组,但只显示分组中第一行数据

SELECT * FROM 成绩表 GROUP BY 语文;#按照姓名分组SELECT * FROM 成绩表 GROUP BY 3;#按照第二个数列分组

SELECT 聚合函数

一般需要 having 配合使用

where 和 having 差异对比

参数 用途 效率 后跟函数
WHERE 条件查询
HAVING 筛选查询

函数示例

函数 释义
COUNT(列名) 统计行数
SUM(列名) 统计总和
AVG(列名) 求平均值
MAX(列名) 求最大值
MIN(列名) 最小值
SELECT COUNT(姓名) as 语文成绩优异人数 FROM 成绩表 WHERE 语文>90;#查询统计【语文成绩90分以上的人数】SELECT SUM(语文)/COUNT(姓名) as 语文成绩平均值 FROM 成绩表;#查询语文成绩平均值【总和除以总人数】【SUM/COUNT】SELECT AVG(语文) as 语文成绩平均值 FROM 成绩表;#查询语文成绩平均值【AVG】SELECT MAX(语文) as 语文最高分 FROM 成绩表;#查询语文成绩最高分SELECT MIN(语文) as 语文最低分 FROM 成绩表;#语文成绩最低分

SELECT 特殊参数

参数 释义
and 复合查询
distinct 去重查询
is null 空行显示
ifnull(列名,0) 值为null归0处理
SELECT * FROM 成绩表 WHERE 语文>90 AND 数学>90;#查询语文成绩和数学成绩都大于90分的人SELECT DISTINCT 语文 FROM 成绩表;#查询语文成绩【不显示重复的行】SELECT * FROM 成绩表 WHERE 语文 is null;#查询语文成绩【值为空】的行SELECT sum(ifnull(语文,0)) as 语文总成绩 FROM 成绩表;#查询语文总成绩【值为null的空值按0处理】

转载于:https://my.oschina.net/zhaojunhui/blog/1925759

你可能感兴趣的文章
《Android深度探索(卷1):HAL与驱动开发》虚拟实验环境(Ubuntu Linux)免费下载,不需要CPU虚拟化支持...
查看>>
std::find ,set.find, multiset.find, map.find和multimap.find算法总结
查看>>
eclipse常用插件
查看>>
Silverlight获取DataGrid选中的行数据
查看>>
net包之IPConn
查看>>
同时开工两本书《大话设计模式》和《HADOOP实战》
查看>>
Linux的chattr与lsattr命令详解
查看>>
.NET Demon Provides Continuous Compilation and Testing for Visual Studio
查看>>
延迟加载
查看>>
js 验证身份证号码
查看>>
hdu 2768(最大独立集)
查看>>
[转]大话企业级Android应用开发实战 传感器
查看>>
Selectize – 用于标签和下拉列表功能的选择控件
查看>>
Java和Android Http连接程序:使用java.net.URL 下载服务器图片到客户端
查看>>
【技术贴】xp下改变7zip默认关联图标和美化教程
查看>>
XML wsdl soap xslt xsl ide
查看>>
常用文本框内容自动垂直居中,并且默认提示文字可单击为空(实例)!
查看>>
压缩与打包
查看>>
IC开短路测试(open_short_test),编程器测试接触不良、开短路
查看>>
asp.net读取txt并导入数据库
查看>>