1.Where 条件查询
比较运算符:
运算符
说明
>
 
<
 
=
 
>=
 
<=
 
!=或<>
 
In
在某集合内
between
在某范围内
In举例:
列出商品表里面cat_id列为4和5的列:
select goods_id,cat_id,goods_name from goods where cat_id in (4,10);
Between举例:
列出商品表里面商品价格在2000-3000元之间的商品
select * from goods where shop_price between 2000 and 3000;
逻辑运算符:
运算符
说明
not 或 !
逻辑非
or  或||
逻辑或
and  或&&
逻辑与
And和or举例:
列出商品价格在3000-5000之间或者在500-1000之间的商品:
select * from goods where shop_price >=3000 and shop_price <=5000 or shop_price >=500 and shop_price <=1000;
not举例:
列出cat_id 不是4和5的栏目:
select  * from goods where cat_id not in (4,5);
模糊查询:
案例:想查找“诺基亚”开头的所有商品
Like
%------通配任意字符
_------通配单个字符
select * from goods where goods_name like ‘诺基亚%’
2.Group by 分组
统计函数:
求最大:max()
求最小:min()
求总和:sum()
求平均:avg()
求总行数:count()
 
案例:查询每个栏目下面最贵的商品价格(cat_id即栏目)
select cat_id,max(shop_price) from goods group by cat_id;
案例:查询商品的库存总和
select  sum(goods_shuliang) from goods;
案例:查询商品的平均价格
select avg(shop_price) from goods;
案例:查询本店有多少商品,即多少行
select count(*) from goods;
复杂一点的:体会把列名当成变量看
案例:查询每个栏目下面积压的货款(货款=shop_price*goods_shuliang,栏目就是cat_id)
select cat_id,sum(shop_price * goods shuliang) from goods group by cat_id;
给列取别名:
select cat_id as lanmu from goods;
3.Having  筛选
where和having 的比较:where 对原始表起作用,对查询出来的结果不起作用,having则对查询出来的结果起作用,可以对查询出来的结果进行筛选。
案例:查询出本店价格比市场价低多少钱,并且把低200元以上的商品选出来:
select goods_id,goods_name,market_price – shop_price as sheng from goods having sheng > 200;
或者
select goods_id,goods_name,market_price – shop_price as sheng from goods where market_price – shop_price >200;
但是如果是以下这样,就是错误的。
select goods_id,goods_name,market_price – shop_price as sheng from goods where sheng > 200;
同上题,只不过查第三个栏目下比市场价低200元以上的商品
Select goods_id,cat_id,market_price – shop_price as sheng from goods where cat_id =3 having sheng >200;
更复杂一点:
案例:查询积压货款超过2万元的栏目,以及该栏目积压的货款
select  cat_id,sum(goods_shuliang * shop_price) as k from goods group by cat_id having k>20000;
更复杂案例:
设有成绩表stu如下:
姓名 科目 分数
张三 数学 90
张三 语文 50
张三 地理 40
李四 语文 55
李四 政治 45
王五 政治 30
赵六 地理 100
赵六 英语 99
赵六 化学 98
试查询两门及两门以上不及格同学的平局分
要求:只见一次select 完成
select 姓名,sum(分数<60) as gk,avg(分数) as pj from stu group by name having gk >= 2 ;
 
思路:
1.先查所有人的平均分,
select 姓名,avg(分数) from stu group by name;
2.看每个人的挂科情况
select 姓名,分数<60 from stu;
3.计算每个人的挂科科目
select 姓名,sum(分数<60) from stu group by name;
然后
select 姓名,sum(分数<60) as gk,avg(分数) as pj from stu group by name having gk >= 2 ;
4.Order by  排序
默认为升序排列:order by asc;
降序排列:order by shop_price desc;
select * from goods order by shop_price desc;
5.Limit     限制结果条数
limit [offset],[N]
offset:偏移量(可选)
N:取出条目
 
取第4-6行:
Limit 3,3;
取前三行:
Limit 3;
limit 0,3;
5个子句是有顺序要求的:where,group by,having,order by,limit
 
思考:取出每个栏目下的最贵的商品?
select * from (select goods_id,cat_id,goods_name,shop_price from goods order by cat_id asc,shop_price desc) as tmp group by cat_id;
注解:红色部分用小括号扩起来的部分是查询结果,我们用小括号扩起来就是把他当成一张表看,并且去别名为tmp,然后通过select * from对这张临时表进行查询。
 
 

五、select的5种子句的更多相关文章

  1. mysql中select五种子句和统计函数

    select 五种子句顺序 where 条件 group by 分组 having 把结果进行再次筛选 order by  排序 limit  取出条目 统计函数  max(列名)  求最大 min( ...

  2. mysql---select的五种子句学习(where、group by、having、order by、limit)

      mysql---select的五种子句学习(where.group by.having.order by.limit) 分类: Mysql学习2012-09-27 16:14 1533人阅读 评论 ...

  3. select 5种子句介绍

    一.Where 条件查询 ①where expression 用法:expression为真,则该行取出 运用场合 各种条件查询场合,如按学号查学生,按价格查商品,按发布时间查新闻等 ②select ...

  4. 小贝_mysql select5种子句介绍

    mysql select5种子句介绍 简要 一.五种字句 二.具体解释五种字句 一.五种字句 where.group by.having.order by.limit 二.具体解释五种字句 2.1.理 ...

  5. oracle数据库【表复制】insert into select from跟create table as select * from 两种表复制语句区别

    create table  as select * from和insert into select from两种表复制语句区别 create table targer_table as select ...

  6. 【SQL必知必会笔记(3)】SELECT语句的WHERE子句数据过滤操作

    上个笔记主要介绍了利用SELECT语句检索单个/多个/所有列,并利用DISTINCT关键字检索具有唯一性的值.利用LIMIT/OFFSET子句限制结果:以及利用ORDER BY子句排序检索出的数据,主 ...

  7. select into from和insert into select from两种表复制语句区别

    select into from和insert into select from两种表复制语句都是将源表source_table的记录插入到目标表target_table,但两句又有区别. 第一句(s ...

  8. SQL SELECT TOP, LIMIT, ROWNUM 子句

    SQL SELECT TOP, LIMIT, ROWNUM 子句 SQL SELECT TOP 子句 SELECT TOP 子句用于规定要返回的记录的数目. SELECT TOP 子句对于拥有数千条记 ...

  9. mysql之select+五种子句的理解

    select 可以包含很复杂,很丰富的逻辑,最能考验一个人的逻辑思维能力和sql语句的掌握程度,我是这么认为,以前的很多次面试几乎都死在它手上,所以才有了今天的这篇日志,下定决心把它学好. where ...

随机推荐

  1. 新版本的node,全局配置

    配置环境变量: 1.在你安装node环境目录下 即是node_modules同级目录中. 创建两个文件夹[node_global]及[node_cache] node_cache:缓存目录 node_ ...

  2. (一)JVM快速回顾总结

    1,JVM内存结构(JVM体系概述,java8后的JVM) 2,GC的作用域(方法区和线程堆) 3,常见的垃圾回收算法 (1)引用计数 循环引用问题 (1) 那些对象可以作为GC_Root 虚拟机栈( ...

  3. 浅谈js的类数组对象arguments

    类数组对象:arguments总所周知,js是一门相当灵活的语言.当我们在js中在调用一个函数的时候,我们经常会给这个函数传递一些参数,js把传入到这个函数的全部参数存储在一个叫做arguments的 ...

  4. Html学习之十四(阴影文字的设计)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  5. 第十六周博客作业 <西北师范大学| 周安伟>

    第十六周作业 助教博客链接https://home.cnblogs.com/u/zaw-315/ 作业要求链接https://www.cnblogs.com/nwnu-daizh/p/10980707 ...

  6. shell的几个实战脚本例子(欠)

    如何让shell实现 可选择性执行 的功能 巡检内存使用率 批量创建用户 场景:公司想要做测试,需要10000个用户 数据库里查询学生成绩 #如何登录mysql数据库 #如何写sql对数据进行操作 # ...

  7. Python 对象比较(is & ==)

    Python 对象有 3 要素 id type value id 对象在内存中的地址 可以通过 id() 获取 比较 只有同一个对象 id 才会相同 id 通过 is 比较 示例: a = list( ...

  8. CF1041C Coffee Break

    CF1041C Coffee Break 题目大意: 给定nn个数和一个kk,这nn个数都不超过mm 每次从没被去掉的数里面选一个数aa,去掉aa,然后可以任意一个b(b>a+k)b(b> ...

  9. Win10安装 oracle11g 出现INS-13001环境不满足最低要求解决方法

    Win10安装 oracle11g 出现INS-13001环境不满足最低要求 首先,打开你的解压后的database文件夹,找到stage,然后cvu,找到cvu_prereq.xml文件,用note ...

  10. 第02组 Beta冲刺(1/5)

    队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 初步任务分配 提交记录(全组共用) 接下来的计划 完善接口文档 还剩下哪些任务 学习软工的理论课 学习代码评估.测试 燃尽 ...