零基础学习数据库SQL教程(二)( 比较运算符 逻辑运算符 特殊条件 ORDER BY与LIMIT)

2023-05-16

上接:

零基础学习数据库SQL教程(一)

写在前面的话:本文章内容是自己在LintCode网站SQL教程学习过程中做的学习总结,以便自己复习和大家学习,如果去刷此网站的题,也可以把此文作为参考答案来使用。例题的答案是本人所写,并且已经运行成功,大家可以放心学习。

目录

一. 比较运算符

二.逻辑运算符

1. 使用 AND 连接多条件

2.使用 OR 连接多个条件

3.使用 NOT 过滤不满足条件的数据

三.特殊条件

1. 使用 IN 查询多条件

2. 使用 NOT IN 排除

3. 使用 BETWEEN AND 查询两值间的数据范围

4. 使用 IS NULL 查询空数据

5. 使用 LIKE 模糊查询

四.ORDER BY与LIMIT

1. 使用 ORDER BY 对数据进行排序

2. 使用 LIMIT 限制输出行数


一. 比较运算符


比较运算符用于比较运算,判断逻辑是否成立。

比较运算符的使用方式如下:

 A operator B

其中 operator 是比较运算符,用于对 AB 进行比较运算。

常用的比较运算符有 =(等于) 、!=(不等于)、 <>(不等于)、<(小于)、<=(小于等于)、>(大于)、>=(大于等于),其中 !=<> 在特殊情况下用法是不同的,这里暂时不提。

比较运算符常常与 WHERE 在一起使用。WHERE 用于逻辑判断,WHERE 后面写判断的条件,满足条件的语句会被筛选出来。

WHERE 比较运算符的使用方式如下:

 WHERE A operator B

例题1:请编写 SQL 语句,查询教师表 teachers 中教师年龄大于 20 岁的所有教师信息。

答案:

select *
from teachers
where age>20

例题2:请编写 SQL 语句,查询教师表 teachers 中教师国籍 country 为中国 (CN) 的所有教师姓名,并返回满足查询条件的全部教师姓名

答案:

select name
from teachers
where country='CN'

二.逻辑运算符

1. 使用 AND 连接多条件

使用 SQL 中的逻辑运算符 AND 可以将 WHERE 子句中将两个或两个以上的条件结合起来,其结果是满足 AND 连接的所有条件的数据。

语法

 SELECT `column_name` 
 FROM `table_name` 
 WHERE condition1 AND condition2;

其中: condition 为设置的条件,最后返回的结果应为满足 condition1condition2 的数据。

例题1:请编写 SQL 语句,查询课程表 courses 中课程创建时间 created_at'2020-01-01' (包括) 到 '2020-05-01' (不包括) 之间的所有课程名称和课程创建时间

答案:

select name,created_at
from courses
where created_at>='2020-01-01' and created_at< '2020-05-01'

例题2:请编写 SQL 语句,查询课程表 courses 中教师 id 为 4,且上课人数在 500 以上(不包括 500 人)的所有课程信息。

答案:

select *
from courses
where teacher_id='4' and student_count>'500'

2.使用 OR 连接多个条件

使用 SQL 中的逻辑运算符 OR 与 AND 关键字不同,OR 关键字,只要记录满足任意一个条件,就会被查询出来。

语法:

 SELECT `column_name` 
 FROM `table_name` 
 WHERE condition1 or condition2;

其中: condition1condition2 为设置的条件,最后返回的结果应满足 condition1condition2 的数据。

例题:请编写 SQL 语句,从 courses 表中,选取课程名为 'Web' 或者 'Big Data' 的课程信息,如果这两门课程同时存在,请将这两门课程的信息全部返回。

答案:

select *
from courses
where name='Web' or name='Big Data'

3.使用 NOT 过滤不满足条件的数据

使用 SQL 中的逻辑运算符 NOT 可以过滤掉 WHERE 子句中不满足条件的结果集。

语法

 SELECT `column_name` 
 FROM `table_name` 
 WHERE NOT `condition`;

其中: condition 为设置的条件,最后返回的结果应不满足 condition

例题:题目要求查询课程表 courses 中,教师 id teacher_id 不为 3,且学生人数 student_count 超过 800 的所有课程,最后返回满足条件的课程的所有信息。

答案:

select *
from courses
where not (teacher_id=3 or student_count<=800)

三.特殊条件

1. 使用 IN 查询多条件

当我们需要查询单个表条件过多时,就会用多个 'OR' 连接或者嵌套,这会比较麻烦,现在我们有 'IN' 能更方便的解决这一问题。

IN 用法:

 SELECT *
 FROM `table_name`
 WHERE `column_name` IN `value`;

例题:请编写 SQL 语句,查询课程表 courses 中开课日期为 2021-01-01 或者 2021-01-03 的所有课程信息。

表定义: courses (课程表

答案:

select *
from courses
where created_at in('2021-01-01','2021-01-03')

2. 使用 NOT IN 排除


前面我们已经学习了逻辑运算符,这里的 'IN' 也可以与逻辑运算符 'NOT' 并用,组成 'NOT IN',表示不在集合中的所有结果。

NOT IN 用法:

 SELECT *
 FROM `table_name`
 WHERE `column_name` NOT IN value;

例题:请编写 SQL 语句,查询课程表 courses 中所有教师 id teacher_id 不为 1 或 3 的所有课程,并返回满足查询条件的课程名称。

答案:

select name
from courses
where teacher_id not in ('1','3')

3. 使用 BETWEEN AND 查询两值间的数据范围


BETWEEN AND 会选取介于两个值之间的数据范围。这些值可以是数值、文本或者日期。

请注意,在不同的数据库中,BETWEEN 操作符会产生不同的结果!

在某些数据库中,BETWEEN 选取介于两个值之间但不包括两个测试值的字段。

在某些数据库中,BETWEEN 选取介于两个值之间且包括两个测试值的字段。

在某些数据库中,BETWEEN 选取介于两个值之间且包括第一个测试值但不包括最后一个测试值的字段。

因此,请检查您的数据库是如何处理 BETWEEN 操作符!

我们这里选用的是 MySQL 的支持,BETWEEN 选取介于两个值之间且包括两个测试值的字段,即

BETWEEN 200 AND 250 选取结果会包括 200 和 250

示例代码

BETWEEN AND 用法:

 SELECT *
 FROM `table_name`
 WHERE `column_name` BETWEEN `value` AND `value`;

例题:请编写 SQL 语句,查询课程表 courses 中学生数量在 50 到 55 之间的所有课程信息。

答案:

select *
from courses
where student_count between 50 and 55

4. 使用 IS NULL 查询空数据


NULL 值代表遗漏的未知数据。默认的,表的列可以存放 NULL 值。 如果表中的某个列是可选的,那么我们可以在不向该列添加值的情况下插入新记录或更新已有的记录。这意味着该字段将以 NULL 值保存。

NULL 用作未知的或不适用的值的占位符。

注释:无法比较 NULL 和 0;它们是不等价的。

无法使用比较运算符来测试 NULL 值,比如 =、!= 或 <>。

我们必须使用 IS NULL 和 IS NOT NULL操作符。

示例代码

IS NULL 用法:

 SELECT *
 FROM `table_name`
 WHERE `column_name` IS NULL;

例题:请编写 SQL 语句,查询教师表 teachers 中,国籍为 'CN' 或 'JP' 且 email 信息不为空的所有教师信息。

答案:

select *
from teachers
where (country in ('CN','JP'))and (email is not null)

5. 使用 LIKE 模糊查询


前面我们学习 BETWEEN AND 和比较运算符时,和文本操作类似,比如前面课程名称首字母的范围,这种方案虽然可行但是不稳定,不是直接对文本的操作。在这里我们学习使用 LIKE 更准确规范得解决文本比较问题。

LIKE 比较类似我们平时用到的搜索。

示例代码

LIKE 用法:

 SELECT *
 FROM `table_name`
 WHERE `column_name` LIKE  `value`;

对于SQL 中的通配符有以下类型:

通配符描述
%替代 0 个或多个字符
_替代一个字符
[charlist]字符列中的任何单一字符
或 [!charlist]不在字符列中的任何单一字符

例题:请编写 SQL 语句,查询教师表 teachers 中,所有使用 qq 邮箱的教师名字和邮箱

答案:

select name,email
from teachers
where email like '%@qq.com'

四.ORDER BY与LIMIT

1. 使用 ORDER BY 对数据进行排序


在前面的学习中,我们学习了如何对表中的数据进行简单的查询,仔细观察后可以发现,检索出的数据并不是以纯粹的随机顺序显示的,在没有对其进行排序时,数据以它在表中出现的顺序显示,一般为数据最初添加到表中的顺序。

当我们想要查询具有明确排序的数据时,ORDER BY 关键字就可以帮助到我们。

ORDER BY 关键字用于对结果集按照一个列或者多个列进行排序,其具有 ASC(升序)和 DESC(降序)两个关键字,且默认按照升序排列。

  • ASC :按升序排列,ORDER BY 默认按照升序对记录进行排序,因此升序的关键字 ASC 可以省去不写。

  • DESC:按降序排列,如果需要按照降序对记录进行排序,可以使用 DESC 关键字。

基本语法

 SELECT `column_name`, `column_name`
 FROM `table_name`
 ORDER BY `column_name`, `column_name` ASC|DESC;

例题1:请编写 SQL 语句,查询教师表 teachers 中教师年龄 age 的唯一值,并将结果进行升序排序。

答案:

select distinct age
from teachers
order by age

例题2:请编写 SQL 语句,查询教师表 teachers 中的中国教师,并按照年龄降序排序。

答案:

select *
from teachers
where country='CN'
order by age desc

2. 使用 LIMIT 限制输出行数


在前面的学习中我们知道 SELECT 语句返回所有匹配的行。可是当我们数据非常多时,如果只希望返回有限个数的数据的时候我们该怎么办呢?这时候 LIMIT 子句就能帮助到我们。

LIMIT 子句用于 SELECT 中,对输出结果集的行数进行约束,LIMIT 接收2个参数 offset 和 count,两个参数都是整型数字,但通常只用一个。

基本语法

 SELECT `column_name`, `column_name`
 FROM `table_name`
 LIMIT `offset` , `count`;
  • offset :是返回集的初始标注,起始点是0,不是1哦

  • count :制定返回的数量

注意

LIMIT 关键字的位置,需要放在 ORDER BY 关键字的后面,否则会报错。

例题:请编写 SQL 语句,从教师表(teachers)中查询一条年龄最大的中国教师的信息。

答案:

select *
from teachers
where country='CN'
order by age desc
limit 1

下接:

零基础学习数据库SQL教程(三)

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

零基础学习数据库SQL教程(二)( 比较运算符 逻辑运算符 特殊条件 ORDER BY与LIMIT) 的相关文章

  • 电信行业的三大系统 BSS OSS MSS的区别和解释

    BSS Business support system 业务支撑系统 OSS Operation support system 运营支撑系统 MSS Management Support System 管理支撑系统 前二者又合称BOSS B
  • IDEA 写C++ 的工具了解一下

    https www jetbrains com clion download download thanks html platform 61 windowsZip
  • Rancher入门到精通-2.0 F0821 09:57:22.864380 7 main.go:72] Port 80 is already in use. Please check the fla

    F0821 09 57 22 864380 7 main go 72 Port 80 is already in use Please check the flag http port 由于 80 端口被占用
  • linux驱动模块加载错误(insmod: can‘t insert ‘xxx.ko‘: invalid module format)的原因之一:内核或者配置不一致

    问题现象 xff1a insmod方式加载某个驱动ko模块 xff0c 提示insmod can 39 t insert 39 xxx ko 39 invalid module format 问题原因之一 xff08 也可能是概率较大的一个
  • Python中的按位运算符和如何表示各进制数

    python中的按位运算符 在Python中 xff0c 按位运算符用于对二进制数中的每一位进行操作 Python中的按位运算符包括以下几个 xff1a 1 按位与 xff08 amp xff09 xff1a 对操作数的每一个二进制位执行逻
  • Python打包函数zip——整理电影票房(学习笔记)

    文章目录 1 zip函数2 案例演示 1 zip函数 zip 函数用于将可迭代的对象作为参数 xff0c 将对象中对应的元素打包成一个个元组 xff0c 然后返回由这些元组组成的列表 如果各个迭代器的元素个数不一致 xff0c 则返回列表长
  • Conda 使用

    常用命令 查看已创建的虚拟环境 conda info envs C Users xxx gt conda info envs conda environments base E Anaconda3 cusum E Anaconda3 env
  • lz4压缩

    收集的资料 xff1a https gitee com zhengnianli EmbedSummary lz4 在我们嵌入式开发中 xff0c 通信中有些数据量较大的数据可以压缩之后再进行传输 压缩算法有很多 xff0c 常用的有如下几种
  • MySQL gbk中文md5加密

    在MySQL中自带md5 函数可以进行md5加密 xff0c 但是加密字段默认为utf 8格式 select md5 39 这是一串加密数据 39 输出结果 xff1a ca53cf805e403f238b60935e8b68f0f3 可以
  • crosstab 、pivot_table 、groupby比较

    所用数据前五条 目标 生成数据透视图 crosstab pd crosstab index 61 data 39 admit 39 columns 61 data 39 prestige 39 以上代码用于计数 xff0c 如要展示其他数据
  • numpy 矩阵创建

    mat xff1a 分号用于隔开数据 matrix 将ndarray 转为矩阵 bmat 将小矩阵合并成大矩阵 矩阵特有属性与说明 属性 说明 T 返回自身转置H返回自身的共轭转置I返回自身的逆矩阵A返回自身数据的二位数组 xff08 没有
  • numpy 矩阵复制

    纵向复制 横向复制
  • excel 中“万”字处理

    61 IF ISNUMBER FIND 34 万 34 M2 SUBSTITUTE M2 34 万 34 34 34 10000 M2 函数中的3个M2为需要处理单元格所在位置 结果展示如下
  • python groupby 不同列聚合

    dataframe 在groupby后有时候需要对不同的列按照不同的聚合方式聚合 聚合方法如图 xff1a num agg中输入各列数据的聚合方式 可用于多条件groupby
  • dataframe 中万字处理

    df 39 点赞 39 apply lambda x float str x replace 39 万 39 39 39 10000 if 39 万 39 in str x else x astype int
  • VSCode之CMake使用

    一 准备工作 下载 对应平台的VScode安装C 43 43 扩展 安装Cmake 工具扩展 并行需要安装 Cmake xff0c 编译器 xff0c 调试器和构建工具 cmake version 虽然咱们使用VSCode编辑代码 xff0
  • 运行apt-get update后出现错误

    一般错误是如下两种 xff1a 1 一般如果你的ubuntu是中文的设定了地区的 xff0c 错误是如下 xff1a W 无法下载http ppa launchpad net deluge team ppa ubuntu dists nat
  • 表达式求值(含括号的复杂运算)

    具体解析看注释 span class token macro property span class token directive keyword include span span class token string lt bits
  • HttpClient模拟登录总结(不能跳转及跳转后不能登录)

    最近在写一个模拟登录的程序 xff0c 从网上找了很多资料 xff0c 都没能有一个完整的例子可成功跳转登录后的页面 xff0c 现把我的代码拿来与大家分享一下 xff0c 希望可以帮到一些人吧 其原理是 xff1a 通过HttpClien
  • JestonTX2更新软件源

    JestonTX2刷机后需要更新软件源 更新软件源后 xff0c 才可以正常安装QT等软件 软件源记录文件放在以下文件中 cd etc apt source list 可以使用gedit打开此文件 sudo gedit etc apt so

随机推荐