电子商务网站开发策划案,wordpress后台 菜单,wordpress 网络电台,常德网站优化推广前言 数据库是用来存储数据#xff0c;更新#xff0c;查询数据的工具#xff0c;而查询数据是一个数据库最为核心的功能#xff0c;数据库是用来承载信息#xff0c;而信息是用来分析和查看的。所以掌握更为精细化的查询方式是很有必要的。本文将围绕数据的高级查询语句展… 前言 数据库是用来存储数据更新查询数据的工具而查询数据是一个数据库最为核心的功能数据库是用来承载信息而信息是用来分析和查看的。所以掌握更为精细化的查询方式是很有必要的。本文将围绕数据的高级查询语句展开。
排序、分组、子查询、视图、多表查询左连接、右连接、内连接 查询语法 使用select语句用order by 来对表进行排序
ASC升序排列默认可以不加
DESC降序排列需要添加
select id,name from info ORDER BY id;
select id,name from info ORDER BY id desc; 排序时尽量用数字列排序文字的话会将相同的排在一起其他没什么区别 order by 结合where条件过滤
select name,score from info where address南京西路 order by score desc;
例题查id 姓名 成绩根据性别都是等于女的然后按照id进行降序排列
select id,name,score from info where sex女 order by id desc;select id,name,score from info where sex女 order by score desc,id desc;
#只有第一个参数出现相同值的时候第二个参数才会按照指定要求进行排序否则不生效。
and/or 且和或
select * from info;
select * from info where score 70 and score 90;
例如找分数大于80小于90的项
select * from info where score 80 or score 90;
嵌套条件
select * from info where score 70 and (score 75 and score 90);
select * from info where score 70 or (score 75 and score 90); 例题嵌套条件满足性别是男在次基础上筛选成绩在80-90之间
select * from info where sex男 and (score 70 and score 90); 去重查询
select distinct address from info;
select distinct sex from info;
例题根据地址去重过滤出成绩等于90且性别是男
select distinct address from info where sex男 and (score 90); group by 语句 count()统计有多少行sum()列的值相加求和avg()对列的值求平均数max()过滤出列的最大值min()过滤出列的最小值
分组的时候可以按照一个字段也可以按照多个字段对结果进行分组处理。 语法
语法
select count(name),sex from info group by sex; 例题根据where条件筛选 score 80
select count(name),score,sex,name from info where score 80 group by sex; 例题以地址为分组对score求和
select sum(score),address from info group by address; 例题算出男生女生的平均成绩
select avg(score),sex from info group by sex; 例题分别求出男生组和女生组的成绩最低的人
select min(score),name,sex from info group by sex,name;select min(score) as min_score,sex,name a from info group by sex,name; group by实现条件过滤
group by 不可用使用where只能使用having语句实现条件过滤
select avg(score),address from info group by address having avg(score) 60; 例题
用地址分组id倒叙排列求成绩平均值50
select avg(score),id,address from info group by address desc having avg(score) 50 order by id desc; 例题统计name的行数计算出学生的个数把成绩也查出来按照统计出来的学生个数升序排列。按照地址分组学生的成绩70
select count(name),score,sex,address from info group by address having score 70 order by count(name); 例题按照性别分组求出男生女生的最大成绩最大成绩是否超过75分满足条件的过滤出来
select max(score),sex from info group by sex having max(score) 75; group by语句 一般是结合聚合函数一起使用
使用聚合函数必须要加group by 分组的条件要进行筛选要选用多个重复值的列过滤条件要用having语句过滤条件。 limit 限制输出的结果记录
limit 限制输出的结果记录查看表中的指定行 语法
select * from info limit 3;
#只看前3行select * from info limit 1,4;
#查看第2到5行 select * from info limit 5,3;
#查看6到8行 select * from info order by id desc limit 3;
#倒叙查看后3行 通配符 通配符主要用于替换字符串中的部分字符通过部分字符的匹配将相关的结果查询出来
通配符和like一起使用使用where语句一起来完成查询。 %:表示0个1个或者多个
_:表示单个字符
select * from info where address like 山%;
#以山为开头 #以路为结尾
select * from info where address like %路;
#以路为结尾 #表示内容包含 %c%
select * from info where address like %路%; #表示查找单个字符_
select * from info where name like 刘__;
#表示查找单个字符_
select * from info where name like 杨_婷;
#表示查找单个字符_select * from info where name like __婷;
#表示查找单个字符_#下划线只能是单个字符 例题以山开头匹配后面2个字符
select * from info where address like 山%__; 别名 设置别名alias as
在MySQL 查询时表的名字或者字段太长可以使用别名来进行代替方便书写增加可读性
select name as 姓名,score as 成绩 from info;
#as可加可不加 create table test as select * from info;
#使用as语句复制表的时候约束不会被复制过来
select * from test;
desc test;
desc info; 使用as复制表约束不会被复制过来 可以给表起别名但是注意别名不能和数据库中的其他表重名可能会有冲突。 列的别名在结果中可以显示但是表的别名在结果中没有显示只能用于查询。