admin管理员组文章数量:1794759
MySQL【知识改变命运】05
1:where的基本用法练习(比较运算符)
基本操作:查询英语<60的同学
如果english为NULL,会自动过滤掉,NULL比较特殊
查询语⽂成绩⾼于英语成绩的同学
这个过程:先读取表中每行记录,然后把where 条件进行筛选,然后把符合条件的记录放在临时表中,最终返回给客户端;
总分在 200 分以下的同学
我们都知道可以给列改名
那如果我们用修改后的别名作为条件可以使用吗?
where语句是不能用别名当作过滤条件: 因为第一步:from 找到这个表 第二步:定位符合条件的数据行 where 第三步:根据过滤后的结果集中抽取要显示的列,表达式 所有在执行where字句时,select 后指定的别名还没有定义;
1.1 :逻辑运算符
运算符 | 操作效果 |
---|---|
AND | 多个条件必须都为 TRUE(1),结果才是 TRUE(1) |
OR | 有一个条件为TURE(1),结果才是TRUE(1) |
NOT | 条件为 TRUE(1),结果为 FALSE(0) |
查询语⽂成绩⼤于80分且英语成绩⼤于80分的同学
查询语⽂成绩⼤于80分或英语成绩⼤于80分的同学
NULL值特殊,会自动过滤
AND和OR 的优先级
得出结论:NOT>AND>OR 范围查询 语⽂成绩在 [80, 90] 分的同学及语⽂成绩
这两种写法其实都是一个意思
数学成绩是 78 或者 79 或者 98 或者 99 分的同学及数学成绩
模糊查询
NULL的查询 查看语文成绩为NULL
查看语文成绩不为NULL的记录
NULL与其他值运算运算结果还是NULL
总结注意: •WHERE条件中可以使⽤表达式,但不能使⽤别名 • AND的优先级⾼于OR,在同时使⽤时,建议使⽤⼩括号()包裹优先执⾏的部分 •过滤NULL时不要使⽤等于号(=)与不等于号(!= , <>) • NULL与任何值运算结果都为NULL
2:Order by 排序
语法:
代码语言:javascript代码运行次数:0运行复制-- ASC 为升序(从⼩到⼤)
-- DESC 为降序(从⼤到⼩)
-- 默认为 ASC
SELECT ... FROM table_name [WHERE ...] ORDER BY {col_name | expr } [ASC |
DESC], ... ;
按数学成绩从低到⾼排序(升序)
如果值为NULL呢?
我们可以发小NULL排在最小位,如果值是负数呢
得出结论NULL值会排到最后。 查询同学各⻔成绩,依次按数学降序,英语升序,语⽂升序的⽅式显⽰
类似于查字典,先会排math ,然后English,最后chinese 查询同学及总分,由⾼到低排序
我们思考个问题oder by是否能那别名排序呢?
再where 里面没办法用别名判断,为什么在oder by里面可以呢? 原因: 第一步:先from; 第二步:select 定位数据: 第三步:排序; 所有其实在排序之前已经完成了别名的转化。 所有语文成绩不为NULL的同学,按语⽂成绩从⾼到低排序
注意 • 查询中没有ORDER BY ⼦句,返回的顺序是未定义的,永远不要依赖这个顺序 • ORDER BY ⼦句中可以使⽤列的别名进⾏排序 • NULL 进⾏排序时,视为⽐任何值都⼩,升序出现在最上⾯,降序出现在最下⾯
补充的一些话:在数据库里面如果没有order by子句 或着 主键 就不会进行排序,虽然mysql底层会进行类似的排序,但是因为版本不同可能会造成一些麻烦,所有建议设置主键或者order by。
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。 原始发表:2024-10-17,如有侵权请联系 cloudcommunity@tencent 删除数学mysqlnull排序数据本文标签: MySQL知识改变命运05
版权声明:本文标题:MySQL【知识改变命运】05 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1754745042a1705869.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论