高级查询(一)

一、where条件表达式

SELECT column1, column2… FROM tablename [WHERE condition];

name = “张三”
name like “%三”
新建一张表进行测试


1.查找语文成绩大于80分的学生
select * from chengji where chinese > 80;

2.查询数学成绩在60-90之间的学生信息()
select * from chengji where math between 60 and 90;

3.查询张三、王五、赵六3位同学的所有成绩
IN(set),查找在set集合中的所有元素
select * from chengji where id in (1,3,4); id = 1 id = 3 id=4

4.查询所有叫冰冰的学生的成绩
select * from chengji where name like “%冰冰”;

5.查找所有姓李的学生的成绩
select * from chengji where name like “李%”;

6.查找语文大于数学成绩,并且数学成绩及格的学生信息
select * from chengji where chinese > math and math >= 60;

查询英语成绩大于语文成绩的同学
select * from chengji where english > chinese;
查询总分大于200分 并且 数学成绩小于语文成绩的学生.

select id,name,(chinese + math + english) as sum from chengji where (chinese + math + english) > 200 and math < chinese;

  • 查询语文分数在 70-80之间的同学。
  • 查询总分为189,190,191的同学。
  • 查询所有姓李 或者 姓张 的学生成绩。
  • 查询所有叫冰冰的学生的成绩。
  • 查询数学比语文多30分的同学。

二、字段别名


语法格式:
select 列名 as 别名…
as关键字可以省略,例如:
select 列名 别名 …

三、排序

排序查询,针对某个字段(数值类型的字段),进行排序,再将排序之后的结果展示

语法格式:
order by 列名 排序方式; 根据指定的列名进行排序

排序方式:
升序 asc【默认】
降序 desc

代码演示:
根据数学成绩进行从小到大进行排序
select * from chengji order by math asc;

四、聚合函数

mysql提供了一些聚合函数,用来对某个列进行聚合操作,聚合操作包括:
count(),统计某一列的数量
sum(),统计某一列的和
avg(),统计某一列的平均值
max()/min,统计某一列的最大值、最小值

例如:
统计成绩表中,有多少学生?
select count(id) from chengji;

高级查询(二)

一、limit查询

limit有2种用法:
limit n; 限定查询n条记录,例如:limit 3; 限定查询前3条记录

2.limit offset, number;
offset,表示偏移量,略过(忽略)的数量
number,保留的数量
例如:
limit 0,3; 略过前面0条记录,保留3条记录
limit 3,5; 略过前面3条,保留5条

获取数学成绩是第二名的学生信息
select * from chengji order by math desc limit 1,1;

二、group by分组查询

使用group by 子句对列进行分组统计,通常group by和聚合函数搭配使用,表示统计的是每个分组的情况
打个比方,打仗胜利后清点战利品:
机关枪:5挺
手雷:100枚
步枪:300只
迫击炮:10架

先增加一些测试数据:
先删除已经存在的goods、category表

把素材中的category、goods表导入

group by 列,表示针对某一列进行分组统计

1.针对商品表进行分组(分类),也就是统计有哪些种类?
select * from goods group by cat_id;

2.统计每个分组(分类)里面的商品的数量
group by 和 聚合函数组合使用,表示统计的是每个分组里面的数量
select cat_id,count(goods_id) from goods group by cat_id;

三、where、having

where,后面跟的字段,必须是原表中存在的字段
查询的是原表的某个列,符合特定条件的记录

如果需要对查询的结果,进行再次过滤,可以使用having代替where

区别在于:
where,在查询之前,查询表中的某个列符合指定条件的记录(不符合条件的,就不查询)
having,查询之后,对查询的结果进行再次过滤

以雇员系统表为例进行练习:


查询每个部门的平均工资和最高工资
按照部门号,分组:
再统计分割分组(部门)的薪水
select deptno,avg(sal),max(sal) from emp group by deptno;


查询平均工资低于2000的部门号和它的平均工资[别名可用]
select deptno,avg(sal),max(sal) from emp group by deptno having avg(sal) < 2000;

请统计部门号大于10的各个部门平均工资,并且是平均工资大于1000的,并且按照平均工资从高到低排序 , 取出 前 2条

四、子查询

嵌入在其他查询语句中的select语句,称为子查询(嵌套查询)
一个select语句查询的结果作为另外select语句的查询条件【查询的字段的值】

需求:查询“GSM手机”下的商品有哪些?



1.通过”GSM手机”名称找到它所属的分类
select cat_id from category where cat_name = “GSM手机”;
2.再去goods表中查找哪些商品的cat_id = 3
select goods_id,goods_name,cat_id from goods where cat_id = (select cat_id from category where cat_name = “GSM手机”);

五、连接查询入门

前提:当我们需要查询的列【字段】,不在同一张表中时,就需要连接上其他表进行查询
例如:  查询 商品id、商品名称、分类名称

连接查询的语法格式:
select 表1.列,表2.列… from 表1 join 表2 ON 连接的条件;

select goods_id,goods_name,cat_name from goods join category on goods.cat_id = category.cat_id;
on goods.cat_id = category.cat_id; 表示通过goods表的cat_id 找到category表的cat_id

SQL语句高级查询一、二(刚入门 的也能看懂)相关推荐

  1. ORACLE---Unit04: SQL(高级查询)

    ---(重点复习:子查询.分页查询.decode) --- SQL(高级查询) --- 子查询 --- 子查询是嵌套在其它SQL语句当中的,目的是为嵌套的SQL提供数据,以便其执行. ---查看谁的工 ...

  2. Mybatis映射文件SQL语句模糊查询,#和$的区别和注意事项

    Mybatis映射文件SQL语句模糊查询 1. "%"#{value}"%" 在参数中不需要添加 %_ 推荐使用 2. '%${value}%' 在参数中不需要 ...

  3. 二见钟情之SQL语句嵌套查询

    这次机房收费系统折腾了七八次,刚开始的时候是因为不会,现在再改是因为自己不够满意,总觉得还能做得更好一点,所以就推倒重来:然后又推倒,又重来,貌似有瘾一样,不过确实该快点了,不然等自己满意了就该过年了 ...

  4. sql server高级查询及更新操作一

    sql server高级查询及更新操作一 题目要求 实现代码 题目要求 一.将素材中的"学生管理"数据库附加到SQL SERVER中,完成以下操作: 班级信息(班级编号 班级名称 ...

  5. SQL Server 高级技术(二)—— 安全

    SQL Server 高级技术(二)-- 安全 一.概述 SQL Server 广泛使用安全主体和安全对象管理安全,一个请求.服务器.数据库或架构资源的实体称为安全主体,每一个安全主体有唯一的安全标识 ...

  6. 如何在 Linux 上用 SQL 语句来查询 Apache 日志

    Linux 有一个显著的特点,在正常情况下,你可以通过日志分析系统日志来了解你的系统中发生了什么,或正在发生什么.的确,系统日志是系统管理员在解决系统和应用问题时最需要的第一手资源.我们将在这篇文章中 ...

  7. PHP获取MySQL执行sql语句的查询时间

    PHP获取MySQL执行sql语句的查询时间 1. $t1=microtime(true); mysql_query($sql); echo microtime(true)-$t1; 2. //计时开 ...

  8. SQL数据库高级查询命令(2)

    接上篇博文<SQL数据库高级查询命令(1)> use market go select distinct goodsname from orders -----查看orders表中有订单的 ...

  9. java sql范围查询语句,java类中写sql语句,查询条件包含换行

    java类中写sql语句,查询条件包含换行 detachedCriteria.add(Restrictions.or( Restrictions.like("chengBanDanWeiId ...

最新文章

  1. 解决svn uuid变更问题
  2. linux 源码安装 yum rpm区别
  3. Spring Cloud Alibaba基础教程:Sentinel使用Nacos存储规则
  4. 如何用 Netty 设计一个百万级推送服务?
  5. 在rancher服务器页面添加Host
  6. Android复习15【动画:创建资源文件夹、创建动画资源文件、组合动画、属性动画、材料设计新特性】
  7. 1.cocos2dx记忆卡片游戏代码、并将游戏移植到“华为荣耀”手机上、移植中的问题总结
  8. 利用树的先序和后序遍历打印os中的目录树
  9. 冒泡排序算法(C#)
  10. CCF201412-2 Z字形扫描(解法二)(100分)
  11. hdu 2188巴什博弈
  12. 诺基亚9.3 PureView或再度跳票:搭载高通骁龙875明年发布
  13. jmeter报“msg“:“Content type ‘application/x-www-form-urlencoded;charset=UTF-8‘ not supported“的解决方法
  14. 触发器、作业、序列、连接
  15. Java实现俄罗斯方块小游戏。(附完整源代码)
  16. 全球链界科技发展大会_科技界的女性-过去,现在和未来
  17. QOS中 PQ,CQ.RR,WFQ,CBWFQ,LLQ区分(下)
  18. qq空间个人档html代码,最新整理QQ空间全代码
  19. MFC使用Windows API实现U盘插拔检测,获取U盘容量,U盘内容移动删除,开启和关闭U盘以及获取盘符
  20. 【Jmeter】jmeter的安装与启动(win10)

热门文章

  1. android 清理 卡顿,手机卡顿还在乱清理?只需删除这3个“文件夹”,立刻腾出8G内存...
  2. 电力系统matlab程序设计,电力系统分析潮流计算课程序设计及其MATLAB程序设计
  3. soapui工具_Java 开发者不容错过的 12 种高效工具
  4. 二叉查找树(一)之 图文解析 和 C语言的实现
  5. Android客户端实现注册/登录详解(一)
  6. 复制图纸标题栏提示字串结果文本到另外的图纸
  7. ak47怎么得 rust_【CF手游】AK47-常胜重返战场,人人都是战友之星!
  8. Linux格式化硬盘 常用命令小记
  9. 去了美国回来才知道美国比中国差多了
  10. C#基础知识及题目练习 Day8 文件操作 FileStream StreamWriter 序列化和反序列化