MySQL--Select条件判断、in、not in、and、or、以及like匹配字符语句查询


      更多关于数据库知识请加关注哟~~。若需联系和想安装MySQL请加博主:
      QQ:3327908431
      微信:ZDSL1542334210

        前言:select语句通俗易懂,但是每当它遇到冤家—条件判断、and、or、条件匹配的时候,就稍微绕点了,此处阁下是如何做的?不妨远程观战博主如何?

1、创建用于查询的表格

(1)学生信息表stu

create table stu (s_id varchar(3), s_name varchar(4),
	s_sex varchar(1),s_age int,s_bothday varchar(11));
insert into  stu values
("001","李华","男",23,'1996-8-16'),
("002","王二","男",24,'1997-3-16'),
("003","赵敏","女",23,'1990-5-26'),
("004","张莹莹","女",22,'1995-2-16'),
("005","朱亚军","男",25,'1999-8-16'),
("006","马科","男",28,'1993-12-16');

(2)学生成绩表scores

create table scores(s_id varchar(3),
	c_id varchar(2),score int);
insert into scores values 
("001","01",135),
("005","01",120),
("003","01",110),
("002","01",90),
("005","02",140),
("001","02",125.5),
("004","02",100),
("006","02",90),
("002","03",102),
("005","03",100.6),
("001","03",100),
("003","03",95.6),
("004","03",83),
("003","02",80),
("006","03",79.5);

2、Select条件判断+and+in+not in

此处依然采用例子的形式讲解
题目一:查找学生编号不为001和002的学生信息
       分析:只需要筛选出学生编号不为001或者002即可,代码为:

select * from stu where s_id not in (001,002); #方法一
select * from stu where s_id != 001 and s_id !=002; #方法二
select * from stu where s_id not between 1 and 2; #方法三
select * from stu where (s_id=001)+(s_id=002)=0; #方法四
select * from stu where (s_id !=001)*(s_id !=002); #方法五
# 003	赵敏	女	23	1990-5-26
# 004	张莹莹	女	22	1995-2-16
# 005	朱亚军	男	25	1999-8-16
# 006	马科	男	28	1993-12-16

       这里,in表示在里面;not in 表示不在里面;not between 1 and 2 表示不在第一条和第二条记录里面;(s_id=001)+(s_id=002)=0表示消除001和002两条记录;(s_id !=001)*(s_id !=002)表示和and同意。

3、Select语句–And+or

题目二:查询学生编号为001或者002的课程编号为01的成绩信息

select * from scores where s_id in (001,002) and c_id=01; #方法一
select * from scores where (s_id =001 or s_id=002) and c_id =01; #方法二
#  001	01	135
#  002	01	90

       这里,in (001,002) and c_id=01表示s_id是001或者002的同时c_id为01,还是那句话in(001,002)表示要么是001,要么是002,没有哪个s_id即是001又是002;(s_id =001 or s_id=002) and c_id =01表示s_id为001或者002的同时c_id=01。

4、Select语句–条件字符匹配like

题目三:查询名字中含有“亚”字的学生信息

select * from stu where s_name like '%亚%'; #法一
# 005	朱亚军	男	25	1999-8-16
select * from stu where s_name like '_亚_'; #法二
# 005	朱亚军	男	25	1999-8-16

题目四:查询名字中含有“华”字的学生信息

select * from stu where s_name like '%华%';
# 001	李华	男	23	1996-8-16
select * from stu where s_name like '_华_';
# 不会输出结果,没有匹配到

       这里,’%华%‘是匹配出名字里面带有’华’的名字,只要带有‘华’字,就匹配出来。而’-华-'是必须‘华’字旁边都存在字符,否则没法匹配。

5、文末彩蛋–轻松一刻

       记得小学时候,我有一女同学叫晶晶,她特别羡慕我们班主任老师,特别喜欢与崇拜他,于是就暗恋这个老师,有一天她终於鼓起勇气,跟老师表白,老师一直开导他,说他这样不对等等,可是晶晶当时很倔强,就是不听,还说什麽爱情是不分年龄之类的话,最后老师受不了了。就说:“我不要小孩子啦!”,这时候只见晶晶露出一脸满足的笑容,说:“老师.我一定会很小心很小心的!?”。但是现在人晶晶呢住我们这栋楼,事实证明她当时很大意,因为和我们哪个班主任老师没成…就是这么个情况。

          博友们好,今天到这里就结束啦每篇文章都有最后的文末彩蛋–轻松一刻哟感谢观看,我是Jetuser-data[学习更多MySQL知识请加关注]
链接: [https://blog.csdn.net/L1542334210]
CSND:L1542334210
在这里插入图片描述
祝大家工作顺利!阖家欢乐!

发布了29 篇原创文章 · 获赞 53 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/L1542334210/article/details/101485973
今日推荐