前言
- 参考文献:《SQL基础教程(第二版)》MICK著
- 本SQL系列旨在建立一个数据库相关知识点备忘录,帮助博主快速上手SQL,同时也希望能够为考前参见SQL考试的同学提供一些微薄的帮助
1. 列查询
基本SELECT语句:
SELECT <列名1>, <列名2> ...
FROM <表名>;
SELECT
子句(clause)列举了希望从表中查询出列的名称FROM
子句(clause)指定表名称- 查询多列时,需要使用逗号进行分隔
1)查询结果中列的顺序和SELECT
子句中的顺序相同
2)查询出全部列,使用星号(*),采用此方式输出则无法设定列的显示顺序,默认按照表设计结构显示
2. 列别名
SELECT <列名1> AS <别名1>,
<列名2> AS <别名2> ...
FROM <表名>;
- 使用AS为列设定别名
- 别名可使用中文,且需要 双引号括起来
3. 查询常数
- 支持字符串常数、数字常数和日期常数
- 必须使用 单引号将上述常数括起来
4. DISTINCT删除重复行
SELECT DISTINCT <列名1>,<列名2>
FROM <表名>;
NULL
也被视为一类数据,即,若NULL
存在多行时,也会被合并为一条NULL
数据DISTINCT
关键字支持在多列之前使用DISTINCT
关键字只能用在第一个列名之前
5. WHERE条件表达式
SELECT <列名>, ...
FROM <表名>
WHERE <条件表达式>;
执行顺序:
- 首先通过
WHERE
子句查询出符合指定条件的记录 - 然后再选取出
SELECT
语句指定的列
WHERE
用法注意事项:
WHERE
子句必须紧跟在FROM
子句后
6. 注释
注释时用来标识说明或者注意事项的部分
- 单行注释:
--
- 多行注释:
/*
和*/
之间
注意:MySQL中需要在--
之后加入半角空格,才会生效
7. 算术运算符
四则运算的主要算术运算符:
- +
- -
- *
- /
注意:所有包含NULL的四则计算,结果肯定是NULL
8. 比较运算符
(一)比较运算符:
运算符 | 含义 |
---|---|
= | 和~等于 |
<> | 和~不相等 |
>= | 大于等于~ |
> | 大于~ |
< | 小于~ |
<= | 小于等于~ |
- 注意:不等号在左,等号在右
很多RDBMS可以使用!=
来表示不等于功能,主要原因如下:
- 不符合 ANSI SQL 标准:在 ANSI SQL 标准中,不等于应该使用
<>
符号表示,而不是!=
符号。因此,使用!=
符号可能会使代码与标准不兼容,增加代码的维护难度。 - 可读性差:在 SQL 语句中,
=
符号通常用于表示相等,因此使用!=
符号来表示不等于可能会导致混淆。相比之下,<>
符号更容易理解和阅读。 - 数据库引擎不支持:有些数据库引擎可能不支持
!=
符号,这可能会导致在某些数据库中无法使用该符号。- MySQL 4.0 及更早版本:在这些版本中,
!=
符号不是有效的 SQL 运算符,应该使用<>
符号表示不等于。 - Microsoft SQL Server 2000 及更早版本:在这些版本中,
!=
符号不是有效的 SQL 运算符,应该使用<>
符号表示不等于。 - SQLite 2:在 SQLite 2 中,
!=
符号不是有效的 SQL 运算符,应该使用<>
符号表示不等于。
- MySQL 4.0 及更早版本:在这些版本中,
(二)对字符串使用不等号时的注意事项:
- 字符串类型的数据原则上按照字典顺序进行排序,不能与数字的大小顺序进行混淆
- 不等号的使用场景:不等号通常用于比较字符串的大小关系,例如查询所有字符串大于或小于某个特定值的记录。
- 大小写敏感性:在许多数据库引擎中,字符串比较是大小写敏感的,这意味着 “ABC” 和 “abc” 是不同的字符串。因此,在使用不等号时,需要注意字符串的大小写是否与预期相符。如果需要进行大小写不敏感的字符串比较,可以使用
LOWER()
函数将所有字符串转换为小写字母进行比较 - 字符集:不同的字符集可能具有不同的字符排序规则,这可能会影响到字符串的比较结果。例如,在某些字符集中,“é” 可能会被视为与 “e” 不同的字符。因此,需要在使用不等号时考虑字符集的影响。
(三)不能对NULL使用比较运算符:
- 应使用
IS NULL
或者IS NOT NULL
9. 逻辑运算符
(一)逻辑运算符
- NOT:表示否定
- AND(并且):在其两侧的查询条件都成立时整个查询条件才成立
- OR(或者):在其两侧的查询条件**有一个成立时(两个条件都成立时)**整个查询条件才成立
注意:AND运算符的优先级高于OR运算符,建议使用半角括号进行限定
(二)真值表
以下是一个真值表的例子,包括了基本的逻辑运算符(AND和OR)的真值表:
A | B | A AND B | A OR B | NOT A |
---|---|---|---|---|
true | true | true | true | false |
true | false | false | true | false |
false | true | false | true | true |
false | false | false | false | true |
注解:
- 真值表用于确定逻辑表达式中变量的取值组合时的逻辑值,即 true 或 false。
- 在上面的表中,A 和 B 是变量的值,它们的取值可以是 true 或 false。
- 然后根据变量 A 和 B 的取值,计算出逻辑运算符 AND、OR 和 NOT 的真值,这些结果也是 true 或 false。
在上述表格中,对于每种逻辑运算符,都列出了所有可能的取值组合及其结果。例如,当 A 和 B 均为 true 时,A AND B
的结果为 true。同样地,当 A 为 false 时,NOT A
的结果为 true。这个表格可以方便地帮助我们在进行逻辑表达式的计算和推导时,确定变量的取值组合时的逻辑值,进而得到表达式的结果。
(三)逻辑积与逻辑和
-
逻辑积又称为 AND 运算,表示两个逻辑表达式都为真时,整个逻辑表达式为真;
-
逻辑和又称为 OR 运算,表示两个逻辑表达式中至少有一个为真时,整个逻辑表达式为真。
下面是逻辑积和逻辑和的真值表:
A | B | A AND B | A OR B |
---|---|---|---|
0 | 0 | 0 | 0 |
0 | 1 | 0 | 1 |
1 | 0 | 0 | 1 |
1 | 1 | 1 | 1 |
其中,A 和 B 分别表示两个逻辑表达式,A AND B
表示逻辑积,A OR B
表示逻辑和。上表中的 0 和 1 分别表示逻辑表达式为假和为真,下面分别展示逻辑积和逻辑和的真值表详细运算过程。
A | B | 积 | A AND B |
---|---|---|---|
1 | 1 | 1 * 1 | 1 |
1 | 0 | 1 * 0 | 0 |
0 | 1 | 0 * 1 | 0 |
0 | 0 | 0 * 0 | 0 |
A | B | 和 | A OR B |
---|---|---|---|
1 | 1 | 1 + 1 | 1 |
1 | 0 | 1 + 0 | 1 |
0 | 1 | 0 + 1 | 1 |
0 | 0 | 0 + 0 | 0 |
- 注意,此处的
1+1=1
运算与通常的整数运算并不相同。只是因为真值中只存在0和1两种情况,所有才有这样的结果
A | B | A AND B | A OR B |
---|---|---|---|
真 | 真 | 真 | 真 |
真 | 假 | 假 | 真 |
真 | 不确定 | 不确定 | 真 |
假 | 真 | 假 | 真 |
假 | 假 | 假 | 假 |
假 | 不确定 | 假 | 不确定 |
不确定 | 真 | 不确定 | 真 |
不确定 | 假 | 假 | 不确定 |
不确定 | 不确定 | 不确定 | 不确定 |