mysql 查询模型(重要)
来源:互联网 发布:袁弘老婆的淘宝店铺 编辑:程序博客网 时间:2024/06/06 00:37
查询模型(重要)
列就是变量,在每一行上,列的值都在变化.
Where条件是表达式,在哪一行上表达式为真,
哪一行就取出来
比如下面的条件, shop_price在不同的行,有不同的值.
在哪一行时,shop_price>5000如果为真,则这行取出来.
查询结果集--在结构上可以当成表看
COUNT:
select count(*) from 表名, 查询的就是绝对的行数,哪怕某一行所有字段全为NULL,也计算在内.
而select couht(列名) from 表名,
查询的是该列不为null的所有行的行数.
用count(*),count(1),谁好呢?
其实,对于myisam引擎的表,没有区别的.
这种引擎内部有一计数器在维护着行数.
Innodb的表,用count(*)直接读行数,效率很低,因为innodb真的要去数一遍.
GROUP BY :
思考:
全班同学排队,
校长对老师说: 统计班级同学的姓名和平均年龄[返回1行]
语义上的疑问: 平均年龄好算,只有一个结果,但是,把谁的姓名和平均年龄放在一块返回呢?
语义上就解释不通,但是mysql中却偏偏可以取姓名,而且是把队伍的第一位同学的姓名返回.
这是mysql的一个特点,出于可移植性和规范性,不推荐这么写.
严格的讲,以group by a,b,c 为列,则select的列,只能在a,b,c里选择,语义上才没有矛盾.
having
Order by :
当最终结果集出来后,可以进行排序.
排序的语法:
Order by 结果集中的列名 desc/asc
例:order by shop_price desc ,按价格降序排列
Order by add_time asc ,按发布时间升序排列.
多字段排序也很容易
Order by 列1 desc/asc , 列2 desc/asc , 列3 desc,asc
思考: 取出每个栏目下的最新的商品???
20分钟,1个select语句实现,
良好的理解模型
Where 表达式 ,把表达式放在行中,看表达式是否为真
列: 理解成变量,可以运算
取出结果: 可以理解成一张临时表
子查询
Where型子查询: 指把内层查询的结果作为外层查询的比较条件.
典型题:查询最大商品,最贵商品
Where型子查询
如果 where 列=(内层sql),则内层sql返回的必是单行单列,单个值
如果 where 列 in (内层sql), 则内层sql只返回单列,可以多行.
From 型子查询: 把内层的查询结果当成临时表,供外层sql再次查询
典型题:查询每个栏目下的最新/最贵商品
Exists子查询 : 把外层的查询结果,拿到内层,看内层的查询是否成立.
典型题: 查询有商品的栏目
- mysql 查询模型(重要)
- MySQL索引原理及慢查询优化(重要)
- Mysql的查询模型
- 【MySQL之查询】***重要***数据库查询优化经验总结
- MySQL重要概念图解(重要)
- 57.avi 模型分析(重要)
- MySql的加密算法(重要)
- mysql重要
- mysql选取数据类型的标准(重要)
- MySQL详解--锁(重要)
- MultiTermQuery查询、FuzzyQuery查询(重要)
- 重要资料查询网址
- HQL连接查询【重要】
- hibernate重要查询语句
- 重要查询语句
- 36 Guah(ASP商业模型中的重要问题)
- 模型查询
- 【重要】Linux I/O模型
- 对uboot中BSS段的理解
- GreenMail邮件测试服务器
- 1001 小Q系列故事——屌丝的逆袭
- bochs安装备忘
- ubuntu linux安装双系统的方法-Win7、XP下均可
- mysql 查询模型(重要)
- java引入Android NinePatch技术的意义
- vs2010,VC6.0添加自定义消息步骤
- 手机游戏繁荣时代,团队的N条死路
- Form Tags ->Form Tag Themes
- A. Shooshuns and Sequence
- Convenience Is not an -ility
- Continuous Learning
- Deploy Early and Often