【DAY2|SQL自学打卡】条件查询

我使用的学习平台:牛客刷题网

推荐的原因:能够在线编程,非常方便,有题,还能判断对错,也能看到各路大神的解题思路。

SLogan:利用有限的时间,撸起袖子加油干!

       学习界面:点击此处有惊喜!
在这里插入图片描述

前言

上次做的是基础查询,今天要做的是条件查询,让我们一起回顾一下知识点
1、查询结果去重
使用DISTINCT关键字(放于SELECT后边,目标列名的前面)
2、查询结果限制返回行数
使用LIMIT子句
①如果只给定一个参数,它表示返回最大的记录行数目。

②如果给定两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数目。
LIMIT 0,2表示从第一条数据开始(0代表第一条),显示2条数据

③为了检索从某一个偏移量到记录集的结束所有的记录行,可以指定第二个参数为 -1。
初始记录行的偏移量是 0(而不是 1)。

3、将查询后的列名重命名
列名 | 表达式 【AS】 新列名

SLogan:利用有限的时间,撸起袖子加油干!既要面包也要玫瑰!!!

一、学习过程

1、条件查询

在这里插入图片描述
[^1]: 图来自于牛客网

【SQL36】查找后排序
在这里插入图片描述
解题思路:
  由题意可知,首先取出device_id和age两列的信息,然后按照age进行升序排序。取信息非常容易,就是SELECT device_id,age FROM user_profile; 那么排序就需要用到排序子句排序子句为:

排序子句:
ORDER BY <列名> [ASC | DESC ]
[,<列名> … ]

(ASC表示升序排序,DESC表示降序排序)

代码如下:

SELECT device_id,age FROM user_profile
ORDER BY age ASC;

结果:
在这里插入图片描述

【SQL37】查找后多列排序
在这里插入图片描述

解题思路:
  由题意可知,首先取出device_id,age和gpa三列的信息,先按照gpa进行升序排序,再按照年龄升序排序输出。那么和上一题同理,有两个排序,根据先后顺序用逗号(英文符号)隔开,即可。

注意:ORDER后的顺序和SELECT后的列名需要保持一致!

排序子句为:
ORDER BY <列名> [ASC | DESC ]
[,<列名> … ]

(ASC表示升序排序,DESC表示降序排序)

代码如下:

SELECT device_id,gpa,age FROM user_profile
ORDER BY gpa ASC,age ASC;

结果:
在这里插入图片描述

【SQL38】查找后降序排序
在这里插入图片描述

解题思路:
  由题意可知,首先取出device_id,age和gpa三列的信息,依次按照gpa,age进行降序排序,输出结果。那么和上一题同理,有两个排序,根据先后顺序用逗号(英文符号)隔开,DESC表示降序排序

排序子句为:
ORDER BY <列名> [ASC | DESC ]
[,<列名> … ]

(ASC表示升序排序,DESC表示降序排序)

代码如下:

SELECT device_id,gpa,age FROM user_profile
ORDER BY gpa DESC,age DESC;

结果:
在这里插入图片描述

2、基础操作符

在这里插入图片描述

【SQL6】查找学生是北大的学生信息
在这里插入图片描述

解题思路:
  由题意可知,要筛选“北京大学”学生的信息,然后返回相应的device_id和universuty。

这里涉及到一个知识点:
WHERE 子句
用于规定选择的标准。

代码如下:

SELECT device_id,university FROM user_profile
WHERE university='北京大学'

注意:北京大学需要用单引号引起来!!

结果:
在这里插入图片描述

【SQL7】查找年龄大于24岁的用户信息
在这里插入图片描述
解题思路:
  由题意可知,要筛选年龄大于24岁的用户信息,然后返回相应的device_id,gender,age和universuty。

这里同样需要用到WHERE子句进行条件筛选!

代码如下:

SELECT device_id,gender,age,university FROM user_profile
WHERE age>24

结果:
在这里插入图片描述

【SQL8】查找某个年龄段的用户信息
在这里插入图片描述

解题思路:
  由题意可知,要筛选年龄大于等于20岁且小于等于23岁的用户信息,然后返回相应的device_id,gender,age。

这里同样需要用到WHERE子句进行条件筛选!
但是因为有数值范围,所以需要用到BETWEEN AND 子句

代码如下:

SELECT device_id,gender,age FROM user_profile
WHERE age BETWEEN 20 AND 23

结果:
在这里插入图片描述

【SQL9】查找除复旦大学的用户信息
在这里插入图片描述

解题思路:
  由题意可知,要筛选除复旦大学以外的用户信息,然后返回相应的device_id,gender,age和university。

这里同样需要用到WHERE子句进行条件筛选!
介绍两种方法:
列名 [NOT] IN(常量1, 常量2,…常量n)
SELECT device_id,gender,age,university FROM user_profile WHERE university NOT IN ('复旦大学')
WHERE 列名 != 常量
SELECT device_id,gender,age,university FROM user_profile WHERE university != '复旦大学'

代码如下:

SELECT device_id,gender,age,university FROM user_profile
WHERE university NOT IN ('复旦大学')

结果:
在这里插入图片描述
【SQL10】用WHERE过滤空值练习
在这里插入图片描述

解题思路:
  由题意可知,要筛选年龄为空(NULL)的的用户信息,然后返回相应的device_id,gender,age和university。

这里同样需要用到WHERE子句进行条件筛选!

介绍两种方法:
①判断取值为空的语句格式为:列名 IS NULL
②判断取值不为空的语句格式为:列名 IS NOT NULL

代码如下:

SELECT device_id,gender,age,university FROM user_profile
WHERE age IS NOT NULL

结果:
在这里插入图片描述

3、高级操作符

在这里插入图片描述
【SQL11】高级操作符练习(1)
在这里插入图片描述
解题思路:
  由题目可知,筛选条件为男性(male)且(AND)GPA大于3.5的用户信息,输出device_id,gender,age,university,gpa.


知识点拓展:多重条件查询

在WHERE子句中可以使用逻辑运算符ANDOR来组成多条件查询。

①使用AND谓词的语法格式如下:

布尔表达式1 AND 布尔表达式2 ANDAND 布尔表达式n

只有当全部的布尔表达式均为真时,整个表达式的结果才为真;
只要有一个布尔表达式的结果为假,则整个表达式结果即为假。

②使用OR谓词的语法格式如下。

布尔表达式1 OR 布尔表达式2 OROR 布尔表达式n

表示只要其中一个布尔表达式为真,则整个表达式的结果即为真;
只有当全部布尔表达式的结果均为假时,整个表达式结果才为假。

代码如下:

SELECT device_id,gender,age,university,gpa FROM user_profile
WHERE gender='male' and gpa>3.5

结果:

在这里插入图片描述

【SQL12】高级操作符练习(2)
在这里插入图片描述

解题思路:
  与上一题道理一样,唯一的区别就是用OR来筛选
代码如下:

SELECT device_id,gender,age,university,gpa FROM user_profile
WHERE university='北京大学' OR gpa > 3.7

结果:
在这里插入图片描述

【SQL13】Where in 和Not in
在这里插入图片描述

解题思路:
  和【SQL9】类似,考察的是WHERE IN 的用法,列名 IN(常量1, 常量2,…常量n)
代码如下:

SELECT device_id,gender,age,university,gpa FROM user_profile
WHERE university IN ('北京大学','复旦大学','山东大学')

注意:SQL中对字符都是用单引号!!
结果:
在这里插入图片描述

【SQL14】操作符混合运用
在这里插入图片描述

解题思路:
  此题考察的是综合能力,gpa大于3.5的山东大学用户当中有一个AND 关系,gpa大于3.8的复旦大学同学当中也有一个AND 关系,两者结合起来是一个OR的关系,用括号括起来就不会出错啦!

代码如下:

SELECT device_id,gender,age,university,gpa FROM user_profile
WHERE (university='山东大学' and gpa>3.5) 
OR (university='复旦大学' and gpa>3.8)

注意:SQL中对字符都是用单引号!!
结果:
在这里插入图片描述

【SQL15】查看学校名称中含北京的用户
在这里插入图片描述
解题思路:
  本题要求筛选出所有大学当中带有“北京”的用户信息,那么就需要用到一个新的知识点——
字符匹配
一般形式为:列名 [NOT ] LIKE

匹配串中可包含如下四种通配符:
_:匹配任意一个字符;
%:匹配0个或多个字符;
[ ]:匹配[ ]中的任意一个字符(若要比较的字符是连续的,则可以用连字符“-”表 达 );
[^ ]:不匹配[ ]中的任意一个字符。

注意:SQL中对字符都是用单引号!!
代码如下:

SELECT device_id,age,university FROM user_profile
WHERE university LIKE '%北京%'

结果:
在这里插入图片描述

总结

  首先,今天这篇文章写了有小1万字,对我来说是一个很大的突破,也希望这篇博客对大家有帮助,学习真的是一个需要坚持的过程,门槛越低的东西往往最容易得到,没有多大的竞争力;相反,门槛越高的东西,往往需要时间的积淀和日复一日的坚持,竞争力往往也是这样体现出来的。想要写好一篇博客真的不太容易,我今天第一次接触MD编辑器,接触到了很多前端的知识点,收获满满,会越来越熟练的,想要发表博客,不懂的话没办法做分享,这是一个双向的过程。
  我会继续分享我的学习过程,也希望大家能够监督!指正!

      欢迎小伙伴们和我一起坚持打卡,评论区互相监督!

      牛客——不见不散!

猜你喜欢

转载自blog.csdn.net/m0_62279905/article/details/127145413
今日推荐