运算符的使用
AND
使用 SQL 中的逻辑运算符 AND 可以将 WHERE 子句中将两个或两个以上的条件结合起来,其结果是满足 AND 连接的所有条件的数据。
语法
SELECT `column_name`
FROM `table_name`
WHERE condition1 AND condition2;
OR
使用 SQL 中的逻辑运算符 OR 与 AND 关键字不同,OR 关键字,只要记录满足任意一个条件,就会被查询出来。
语法
SELECT `column_name`
FROM `table_name`
WHERE condition1 or condition2;
其中:
condition1 和 condition2 为设置的条件,最后返回的结果应满足 condition1 或 condition2 的数据。
NOT
使用 SQL 中的逻辑运算符 NOT 可以过滤掉 WHERE 子句中不满足条件的结果集。
语法
SELECT `column_name`
FROM `table_name`
WHERE NOT `condition`;
其中:
condition 为设置的条件,最后返回的结果应不满足 condition 。
IN
当我们需要查询单个表条件过多时,就会用多个 ‘OR’ 连接或者嵌套,这会比较麻烦,现在我们有 ‘IN’ 能更方便的解决这一问题。
示例代码
IN 用法:
SELECT *
FROM `table_name`
WHERE `column_name` IN `value`;
我们可以通过下面的实例来感受一下 IN 的用法。
假如我们想查询教师表 teachers 中教师国籍为中国 (CN) 或英国 (UK) 的所有教师信息,我们可以使用下面的 SQL 语句:
SELECT *
FROM `teachers`
WHERE `country` IN ('CN', 'UK');
NOT IN
这里的 ‘IN’ 也可以与逻辑运算符 ‘NOT’ 并用,组成 ‘NOT IN’,表示不在集合中的所有结果。
NOT IN 用法:
SELECT *
FROM `table_name`
WHERE `column_name` NOT IN value;
我们可以通过下面的实例来感受一下 NOT IN 的用法。
假如我们想查询教师表 teachers 中国籍 “country” 不为日本 (JP) 和美国 (USA) 的所有
教师信息,我们可以使用下面的 SQL 语句:
SELECT *
FROM `teachers`
WHERE `country` NOT IN ('JP', 'USA');
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`;
IS NULL
IS NULL使用 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;
LIKE
使用 LIKE 模糊查询
前面我们学习 BETWEEN AND 和比较运算符时,和文本操作类似,比如前面课程名称首字母的范围,这种方案虽然可行但是不稳定,不是直接对文本的操作。在这里我们学习使用 LIKE 更准确规范得解决文本比较问题。
LIKE 比较类似我们平时用到的搜索。
LIKE 用法:
SELECT *
FROM `table_name`
WHERE `column_name` LIKE `value`;
假如我们想查询课程表 courses 中以字母 ‘D’ 开头的所有课程,我们可以使用下面的 SQL 语句:
SELECT *
FROM `courses`
WHERE `name` LIKE 'D%';
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;
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 的用法。
假如我们想查询课程表 course 中学生人数 student_count 最少的三门课程信息。
我们可以使用下面的 SQL 语句:
SELECT *
FROM `courses`
ORDER BY `student_count`
LIMIT 3;
注意
这里 LIMIT 关键字的位置,需要放在 ORDER BY 关键字的后面,否则会报错。