7)where子句 焦点速读
where子句:根据条件表达式从数据源中筛选符合条件的记录select字段列表from数据源where条件表达式;1、比
select 字段列表 from 数据源 where 条件表达式;
1、比较运算符:
> < >= <= = !=(<>)
注意等于是单个等于号,不等于也可以用<>表示;
例如,查找及格的项:
(资料图片仅供参考)
select * from choose where score>=60;
例如:查找 张三 的考试成绩信息,需要用到内连接;
select s.student_no 学号,s.student_name 名字, c.score 成绩 from student s join choose c on s.student_no=c.student_no where s.student_name = "张三";
2、where实现内连接:
from 这儿使用逗号代替join;
select 字段列表 from 表1,表2 where 关联条件;
select student_no 学号,student_name 名字,c.class_no 班级名 from student s, classes c where s.class_no=c.class_no;
3、is null判断是否为空
注意这儿的判断是否为空,不能用 =null 或者 != null ,这个表示 此条件永远为 null,通俗讲就是永远为false;
例如 列出没有班级的学生:也是需要先用大外连接
select c.class_no 班号,class_name 班级名,department_name 院名,s.* from classes c left join student s on c.class_no=s.class_no;
可以看到测控班没有学生,那么使用where子句进行筛选;
select c.class_no 班号,class_name 班级名,department_name 院名,s.* from classes c left join student s on c.class_no=s.class_no where s.student_no is null;
4、between...and:
格式:表达式 between 值1 and 值2
select * from choose where score between 70 and 90;
select * from choose where choose_time between "2023-05-25 21:34:11" and "2023-05-25 21:34:41";
5、in:
格式:表达式 in (值1,值2,...)
select ch.student_no 学号,c.course_name 课程名,ch.score 成绩 from course c join choose ch on c.course_no=ch.course_no where c.course_name in ("c++","MySQL");
6、like:
格式:表达式 like "模式"
通配符:% :匹配任意长度的任意字符; _ :匹配一位任意字符;
select student_no 学号, student_name 姓名 from student where student_name like "张%";
注意:当碰到要查找的字符本身含有_时,查找时,会认为这个是通配符;
例如,查找user_为开头的,,若查找时格式为 ’user_%‘,并不是以这个为开头,而是‘user’开头的,会把_当作通配符处理;
select table_schema,table_type,table_name from information_schema.tables where table_name like "user_%";
可以看到第一项为users,并不是user_开头的;
处理方法:
1)此时需要我们将其转义为下划线, 即使用转义字符 "\",所以格式为:这种方法是关系型数据库MySQL独有的,不适合于其他关联性数据库;
select table_schema,table_type,table_name from information_schema.tables where table_name like "user\_%";
可以看到正如我们想要的一样;
2)我们也可以自定义通配符;适合于其他关联性数据库;
select table_schema,table_type,table_name from information_schema.tables where table_name like "user#_%" escape "#";
一样的效果;
7、and运算符
1)代替between and;
select * from choose where score>=60 and score<=90;
2)where内连接,查找信息
select s.student_no 学号,s.student_name 姓名,c.score 成绩 from student s,choose c where s.student_no=c.student_no and s.student_name="张三";
3)三表内连接;
格式:
select 字段列表 from 表1,表2,表3 where 关联条件1 and 关联条件2;
例如 检索所有学生信息:
select s.student_name 姓名,s.student_no 学号,c.course_name 课程,ch.score 成绩 from student s,course c,choose ch where s.student_no=ch.student_no and c.course_no=ch.course_no;
8、or:
select ch.student_no, c.course_name,ch.score from course c,choose ch where c.course_no=ch.course_no and (c.course_name="c++" or c.course_name="MySQL");
9、not:
格式:not 逻辑表达式 或者 !(逻辑表达式)
select * from course where up_limit!=60;select * from course where !(up_limit=60);select * from course where not(up_limit=60);
10、运算符取反:
1):is null 取反;将有学生的班级列出;
select distinct c.* from student s right join classes c on c.class_no=s.class_no where s.student_no is not null;
2)in 取反,not in,要注意为null的情况;
select * from student where class_no in(1,2);select * from student where class_no not in(1,2);
但是当in中有null的时候:
select * from student where class_no in(1,2,null);select * from student where class_no not in(1,2,null);
可以看到当in有null时,对它取反,得到 空结果集;
产生原因:
上述 is null 判断为空时说过,=null 和 != null 的情况,其结果都是false;必须要用is null 判断空;
class_no in(1,2,null) ==> class_no == 1 or class_no == 2 or class_no == null; 此处第三个条件 class_no == nul 条件永远为false; ==> class_no == 1 or class_no == 2 class_no not in(1,2,null) ==> class_no != 1 and class_no != 2 and class_no != null ;此处第三个条件 class_no != nul 条件永远为false;那么该条件与后最终就是false; ==> null
因此,当对有null值的in取反时,其结果集就是空的;
关键词:
[ 相关文章 ]
where子句:根据条件表达式从数据源中筛选符合条件的记录select字段列表from数据源where条件表达式;1、比
微笑的好滋味——读《樱桃树与红裙摆》
5月25日上午,北京青年报记者从中国国家话剧院获悉,曾因影片《城南旧事》《美丽上海》荣膺金鸡奖最佳女配
茴香有“大茴香”和“小茴香”之别,它们都是厨房的常用调料,是烧鱼、炖肉、制作卤制品时的必需之品,既可
“在小小的绘本世界挖呀挖呀挖,种阅读的种子,开幸福的花……”近日,温江区涌泉第四幼儿园中三班里,孩子
2023年真是烂剧扎堆了。好作品是有,冷不丁来一部,可烂剧那可真是一个接着一个上。而且还是烂出了“新高度
汽车现在已经越来越普及,基本上都快实现每家每户都有汽车了,那么汽车这么多的情况之下,我们在用车的过程
桥头镇2023年秋季公办幼儿园第二轮招生公告公办幼儿园2023年秋季第二轮招生即将开始。为顺利开展第二轮的招
黄俊:逢低布局波段操作
1、00:33故事片:情不自禁02:32故事片:绝处逢生04:08故事片:血泪情仇06:02光影星播客1
“你们国家在伊拉克又犯下多少罪行?!他们被逮捕了吗?(英国前首相)托尼·布莱尔当时说伊拉克有大规模杀
5月25日,副市长王继周带领农业、农机、交通、水利等部门负责同志到舞阳县调研乡村建设和“三夏”生产工作
蔡依林出生时间,蔡依林生日是什么时候很多人还不知道,现在让我们一起来看看吧!1、本名:蔡宜凌英文名:J
一、阿尔巴尼亚-斯库台すごいsugaoyi意思很多。有「厉害」「好棒!」「了不起!」「太好了!」比如看到足球队
你们好,最近小品发现有诸多的小伙伴们对于水星路由器密码查看器,水星路由器密码这个问题都颇为感兴趣的,
原标题:产品改善厅职工提技艺工人日报-中工网记者王伟伟摄5月25日,山东日照的一家工厂内,技术工人正在流
1、隋文帝仅有策问,隋炀帝开考十科。2、唐朝考试科目很多,常设科目主要有明经、进士、明法、明字、明算。
1、“移徙”的意思是:意思是搬动住处;迁移。2、读音:yíxǐ2、词性:通常在句中用作动词,修饰主语或宾
游客们在参加陶艺研学活动。 盛巧荣摄 曹家畈的柴窑。 李开旺摄 曹家畈一隅。 李开旺摄
《东京上空三十秒》是二战美国飞行员“泰德·威廉·罗森的一部二战回忆录。法律出版社出版发行。本文到此结
[ 相关新闻 ]
Copyright 2015-2022 亚洲医院网 版权所有 备案号:京ICP备2021034106号-51 联系邮箱:5 516 538 @qq.com