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. 7.Java基础_Java数据输入

    import java.util.Scanner; public class Output { public static void main(String[] args){ Scanner sc=n ...

  2. (day52)四、视图层、模板层

    目录 一.视图层 (一)Request和Response对象 (1)Request对象 (2)Response对象 (二)JsonResponse对象 (1)前后端分离 (2)json_dumps_p ...

  3. Semantic 3D

    Semantic 3D 这个数据级别的训练集有一个小BUG,是这个neugasse_station1_xyz_intensity_rgb.7z, 解压之后的名字是station1_xyz_intens ...

  4. LG3205/BZOJ1996 「HNOI2010」合唱队 区间DP

    区间DP 区间DP: 显然是一个区间向左右拓展形成的下一个区间,具有包含关系,所以可以使用区间DP. 状态设计: 考虑和关路灯一样设计状态 因为不知道当前这个区间是从哪个区间拓展而来,即不知道这个区间 ...

  5. Winform重写键盘按键事件

    /// <summary> /// 重写键盘处理事件,处理退出和回车按钮 /// </summary> protected override bool ProcessCmdKe ...

  6. x1

    //程序功能: //要求客户从键盘输入一个整数,判断其是奇是偶 #include <stdio.h> int main(){ int x; printf("输入一个整数:\n&q ...

  7. [LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会

    [LOJ 2133][UOJ 131][BZOJ 4199][NOI 2015]品酒大会 题意 给定一个长度为 \(n\) 的字符串 \(s\), 对于所有 \(r\in[1,n]\) 求出 \(s\ ...

  8. 数据仓库010 - MySQL查看所有存储过程,函数,视图,触发器

    .查询数据库中的存储过程和函数 方法一: select `name` from mysql.proc where db = 'your_db_name' and `type` = 'PROCEDURE ...

  9. 爬虫——控制台抓包和requests.post()发送请求

    控制台抓包 打开方式及常用选项 1.打开浏览器,F12打开控制台,找到Network选项卡 2.控制台常用选项 1.Network: 抓取网络数据包 1.ALL: 抓取所有的网络数据包 2.XHR:抓 ...

  10. idea修改svn地址

    1.不能直接修改idea中的svn路径 2.需要先修改小乌龟地址,先找到本地的项目文件右键