mysql--浅谈查询1
这是对自己学习燕十八老师mysql教程的总结,非常感谢燕十八老师。
依赖软件:mysql5.6
系统环境:win
在谈查询之前,先说一个特别重要的概念
一定将列名看成变量,既然是变量就可以运算
一定将列名看成变量,既然是变量就可以运算
一定将列名看成变量,既然是变量就可以运算
重要的事说三遍
select5种语句之where语句
- # 作用:条件查询
# 语法- select 查询项 from 表名 where 表达式;
- 表达式为真,则取出对应的查询项
- # where应用场景
- 各种条件查询场合,如按学号查询学生,上线时间查产品等
1、比较运算符
1、等于(=)
- # 查询商品id为32的商品
- select goods_id,cat_id,goods_name,shop_price
- from goods
- where goods_id=32;
2、不等于(!=/<>)
- # 查询不属于第三个栏目的商品
- select goods_id,cat_id,goods_name
- from goods
- where cat_id!=3;
3、大于(>)
- # 本店价格高于3000的商品
- select goods_id,cat_id,shop_price,goods_name
- from goods
- where shop_price>3000;
4、小于(<)
- # 本店价格低于或等于100的商品
- select goods_id,cat_id,shop_price,goods_name
- from goods
- where shop_price<100;
5、在某个集合内(in)------>离散型
- # 查出在栏目4或者栏目11内的商品信息 不用or
- select goods_id,cat_id,goods_name
- from goods
- where cat_id in (4,11);
6、在某个范围内(between...and...)------>连续型
- # 取出商品价格在100和500之间的商品,包含100,500 不用and
- select goods_id,cat_id,shop_price,goods_name
- from goods
- where shop_price between 100 and 500;
7、不在某个集合内(not in)------>离散型
- #查询不在第3栏和不在第11栏的商品
- select goods_id,cat_id,good_name
- from goods
- where cat_id not in (3,11);
8、列名看成变量并计算
- #取出本店价格比市场价省的钱,并且省200以上的
- select goods_id,cat_id,market_price-shop_price,goods_name
- from goods
- where market_price-shop_price >200;
2、逻辑运算符
1、逻辑与(and / &&)
- #查询不在第3栏和不在第11栏的商品
- select goods_id,cat_id,goods_name
- from goods
- where cat_id!=3 and cat_id!=11;
2、逻辑或(or / ||)
- #查询价格大于100且小于300,或者大于3000且小于4000的商品
- select goods_id,cat_id,shop_price,goods_name
- from goods
- where shop_price between 100 and 300 or shop_price between 3000 and 4000;
3、逻辑非(not / !)
- # 查看价格小于500的商品 用>=和not
- select goods_id,shop_price,goods_name
- from goods
- where shop_price not (shop_price>=500);
3、模糊匹配(like)
% 通配任意多个字符
_ 通配任意单一字符
- # 查询以诺基亚开头的商品名
- select goods_id,cat_id,goods_name
- from goods
- where goods_name like '诺基亚%';
在这介绍两个字符串函数
cancat() :字符串拼接函数
substring() : 字符串剪切函数
- # 取出诺基亚开头的商品并将诺基亚改成HTC
- select goods_id,cat_id,concat('HTC',substring(goods_name,4))
- from goods
- where goods_name like '诺基亚%';
- # 将诺基亚开头的商品名称改成HTC开头的
- update goods set goods_name=concat('HTC',substring(goods_name,4))
- where godds_name like '诺基亚%';
select5种语句之group语句
- # 作用:分组
- # 语法
- select 查询项 from 表名
- group by 列名(字段);
注意:查询项必须是分组中有的或者统计函数等函数处理后的结果,否则语意上不对- # 示例
- select goods_id,cat_id,goods_name
from goods- group by cat_id;
常配合group语句使用的统计函数(统计函数也可以单独使用)
1、max:求最大值
- #示例
- # 查询第三个栏目下最贵的价格
- select goods_id,cat_id,max(shop_price),goods_name
- from goods
- group by cat_id;
2、min:求最小值
- #示例
- # 查询第三个栏目下最便宜的价格
- select cat_id,min(shop_price),goods_name
- from goods
- group by cat_id;
3、sum:求总和
- # 一次计算完每个栏目下的库存量之和
- select cat_id,sum(goods_number)
- from goods
- group by cat_id;
4、avg:求平均值
- # 按cat_id分组 计算每个栏目下的商品的平均价格
- select cat_id,avg(shop_price)
- from goods
- group by cat_id;
5、求总行数
- # select count(*) from 表名:绝对行数,包括null行
- # select count(列名) from 表名:不包括null行的行数
- # Innodb引擎的表用count(*)效率低 每一行都去数
- 示例
- select count(goods_id)
- from goods;
select5种语句之having语句
having和where的异同
相同点:两者都是可以筛选数据
不同点:where针对表中的列发挥作用,查询数据
having针对查询结果中的列发挥作用,筛选数据
- # 语法
- select 查询项 from 表名 having 表达式
- # 示例
- # 取出折扣大于200的,类型=3
- # as 后面的变量是对前面表达式的命名
- select goods_id,cat_id,(market_price-shop_price) as discount
- from goods
- where cat_id=3
- having discount>200;
select5种语句之order语句
desc:降序排列
asc:升序排列
- # 作用:排序
- # 语法
- select 查询项 from 表名 order by 列名 desc/asc
- # 示例
- # 多字段排序
- select goods_id,cat_id,shop_price,goods_name
- from goods
- order by cat_id desc,shop_price asc;
select5种语句之limit语句
- # 作用: 限制条数
- # 语法
- select 查询项 from 表名 limit 偏移量,条目量
- # 示例
- # 查询出goods表中的前5条数据
- select goods_id,cat_id,shop_price,goods_name
- from goods
- limit 5;
- # 查询出goods表中价格在前3到前5的商品
- select goods_id,cat_id,shop_price,goods_name
- from goods
- order by shop_price desc
- limit 2,3;
select5种语句之间的使用顺序关系
where <——— group by <———— having <———— order by <———— limit
如果出现了多个查询语句顺序必须如上(等级从左到右依次递减)
小练习:
有如下表及数据
要求:查询出2门及2门以上不及格者的平均成绩
- # 数字之间的比较运算符结果为1/0
- select name,sum(score<60) as gk, avg(score) as avg_score
- from stu
- group by name
- having gk>=2;
- 由于mysql版本的变化,语法可能存在一定的变化,欢迎指出错误和评论区讨论
mysql--浅谈查询1的更多相关文章
- Python 基于python+mysql浅谈redis缓存设计与数据库关联数据处理
基于python+mysql浅谈redis缓存设计与数据库关联数据处理 by:授客 QQ:1033553122 测试环境 redis-3.0.7 CentOS 6.5-x86_64 python 3 ...
- MySQL浅谈 LEFT JOIN
On条件(在“A left join b on conditional_expr”)决定如何从table B 中检索数据行(Matching-State); 如果B中没有行匹配On 条件,额外的B的所 ...
- mysql浅谈--事务ACID特性
mysql MySQL 是最流行的关系型数据库管理系统,在 WEB 应用方面 MySQL 是最好的 RDBMS(Relational Database Management System:关系数据库管 ...
- 浅谈MySQL中优化sql语句查询常用的30种方法 - 转载
浅谈MySQL中优化sql语句查询常用的30种方法 1.对查询进行优化,应尽量避免全表扫描,首先应考虑在 where 及 order by 涉及的列上建立索引. 2.应尽量避免在 where 子句中使 ...
- MySql主从配置实践及其优势浅谈
MySql主从配置实践及其优势浅谈 1.增加两个MySQL,我将C:\xampp\mysql下的MYSQL复制了一份,放到D:\Mysql2\Mysql5.1 修改my.ini(linux下应该是my ...
- 浅谈SQL优化入门:1、SQL查询语句的执行顺序
1.SQL查询语句的执行顺序 (7) SELECT (8) DISTINCT <select_list> (1) FROM <left_table> (3) <join_ ...
- 浅谈mysql innodb缓存策略
浅谈mysql innodb缓存策略: The InnoDB Buffer Pool Innodb 持有一个存储区域叫做buffer pool是为了在内存中缓存数据和索引,知道innodb buffe ...
- 浅谈MySQL存储引擎-InnoDB&MyISAM
存储引擎在MySQL的逻辑架构中位于第三层,负责MySQL中的数据的存储和提取.MySQL存储引擎有很多,不同的存储引擎保存数据和索引的方式是不同的.每一种存储引擎都有它的优势和劣势,本文只讨论最常见 ...
- MYSQL优化浅谈,工具及优化点介绍,mysqldumpslow,pt-query-digest,explain等
MYSQL优化浅谈 msyql是开发常用的关系型数据库,快速.稳定.开源等优点就不说了. 个人认为,项目上线,标志着一个项目真正的开始.从运维,到反馈,到再分析,再版本迭代,再优化… 这是一个漫长且考 ...
- 浅谈mysql配置优化和sql语句优化【转】
做优化,我在这里引用淘宝系统分析师蒋江伟的一句话:只有勇于承担,才能让人有勇气,有承担自己的错误的勇气.有承担错误的勇气,就有去做事得勇气.无论做什么事,只要是对的,就要去做,勇敢去做.出了错误,承担 ...
随机推荐
- Java类加载器( 死磕7)
[正文]Java类加载器( CLassLoader )死磕7: 基于加密的自定义网络加载器 本小节目录 7.1. 加密传输Server端的源码 7.2. 加密传输Client端的源码 7.3. 使 ...
- Eliminates these repeated computation in multi aggregations query
https://github.com/pingcap/tispark/commit/dcca23bfa1aa0c356a4280d82bc8301c0de08318 scala> spark.s ...
- SE18 BADI定义 / SE19 BADI 实现
明天花30分 再研究下这个: 如果你知道一个BADI名称,可以: 1)使用SE18,输入该BADI名称后,选择Interface,然后查看对应的接口实施样例代码(Example implementat ...
- Codeforces Round #401 (Div. 2) D Cloud of Hashtags —— 字符串
题目链接:http://codeforces.com/contest/777/problem/D 题解: 题意:给出n行字符串,对其进行字典序剪辑.我自己的想法是正向剪辑的,即先对第一第二个字符串进行 ...
- 重学DSP:对于卷积的理解
最近,我发现自己对于一个事情,如果不给自己一个说服自己的理由,就会出现不能理解,不能记住,以至于不会使用或者“盲目”应用的情况. 但是,我学的这个学科就是应当建立在对信号作用过程的理解上面的. 下面, ...
- 让ansbile和docker愉快的在一起
引自: http://cloud.51cto.com/art/201510/494328.htm
- Java中的final和static
final final可以用在类.方法.变量上. 1.final用在类上,表明当前类它不能被继承,没有子类. 2.final用在方法上,表明当前方法不能被override,不能被重写. 3.final ...
- oracle下 启动subversion命令 及 oracle相关服务启动备忘
linux shell下 svnserve - d -r + 目录 例如:svnserve -d -r /svn 启动 svn服务. 访问svn://192.168.0.120/kjcg 测试. ...
- Intellij IDEA 弹窗License activation 报 this license BIG3CLIK6F has been cancelled 错误的解决。
this license BIG3CLIK6F has been cancelled 具体如下: 对,没错,这个激活码本来可以使用到2018年的,但是,忽然间就不能用了.经查询吧. 还得修改个系统配置 ...
- HDU2159(完全背包)
FATE Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u Description ...