SQL学习(二、运算符,函数,子查询)
1、WHERE 语句
WHERE 子句用于提取那些满足指定标准的记录。
WHERE 子句的语法:
SELECT column_list
FROM table_name
WHERE condition;
下面的 SQL 语句从 "customers" 表中选择 ID 等于 "6" 的记录:
SELECT*
FROMcustomers
WHEREID
=
6;
2、SQL 运算符
比较运算符和逻辑运算符在 WHERE 子句中用于筛选要选择的数据。
WHERE 子句中可以使用以下运算符:
运算符 |
描述 |
= |
等于 |
<> |
不等于。注释:在 SQL 的一些版本中,该操作符可被写成 != |
> |
大于 |
< |
小于 |
>= |
大于等于 |
<= |
小于等于 |
BETWEEN |
在某个范围内 |
LIKE |
搜索某种模式 |
IN |
指定针对某个列的多个可能值 |
例如, 下面的 SQL 语句列出了 ID 不等于 "8" 的所有记录。
SELECT * FROM customers
WHERE ID <> 8;
3、BETWEEN 运算符
BETWEEN 操作符选取介于两个值之间的数据范围内的值。这些值可以是数值、文本或者日期。
BETWEEN子句的语法如下:
SELECT column_name(s)
FROM table_name
WHEREcolumn_name
BETWEENvalue1
ANDvalue2;
下面的 SQL 语句选择 ID 介于 2 和 6 之间的所有记录:
SELECT * FROM customers
WHERE ID BETWEEN 2 AND 6;
4、文本值
SQL 使用单引号来环绕文本值(大部分数据库系统也接受双引号)。
下面的 SQL 语句选择城市等于 “New York” 的所有记录。
SELECTID
, FirstName, LastName, City
FROM customers
WHERE City =
'New York'
5、逻辑运算符
逻辑运算符可用于组合两个布尔值,并返回 true,false 或 null 的结果。
可以使用以下运算符:
运算符 |
描述 |
AND |
如果两个表达式结果都为 true,则为 true |
OR |
如果任一表达式结果为 true,则为 true |
IN |
如果操作数等于表达式列表之一,则为 true |
NOT |
如果表达式结果为 true,则返回 false;否则如果表达式的结果为 false,则返回 true。 |
使用 SELECT 语句检索数据时,请使用 WHERE 子句中的逻辑运算符来组合多个条件。
如果要选择满足所有给定条件的行,请使用逻辑运算符 AND
下面的 SQL 语句从 "customers" 表中选择年龄大于等于 "20" 且小于等于 "30" 的所有记录:
SELECTID
, FirstName, LastName, Age
FROM customers
WHEREAge >=
20AND
Age <=
30;
6、OR 运算符
如果要选择满足至少一个给定条件的行,则可以使用逻辑 “OR” 运算符。
下表描述了逻辑 OR 运算符的功能:
条件 1 |
条件 2 |
结果 |
True |
True |
True |
True |
False |
True |
False |
True |
True |
False |
False |
False |
下面的 SQL 语句从 "customers" 表中选择城市为 "New York" 或者 "Los Angeles" 的所有客户:
SELECT * FROM customers
WHERE City = 'New York' OR City = 'Los Angeles';
7、结合 AND & OR
你可以把 AND 和 OR 结合起来测试查询中的多个条件。
当结合这些条件时,重要的是使用圆括号来组成复杂的表达式。
下面的 SQL 语句从 "customers" 表中选择城市为 "Chicago" 且年龄为 "25" 或 "28" 的所有客户:
SELECT*
FROMcustomers
WHERECity =
'Chicago'
AND(Age=
25OR
Age=
28);
8、IN 运算符
当你需要比较具有多个值的列时,将使用 IN 运算符。
IN 运算符允许您在 WHERE 子句中规定多个值。
例如,你可能需要选择来自纽约,洛杉矶和芝加哥的所有客户。
使用 OR 运算符,SQL 语句将如下所示:
SELECT*
FROMcustomers
WHERECity =
'New York'
ORCity =
'Los Angeles'
ORCity =
'Chicago';
9、IN 运算符
你可以在单个 IN 条件下实现相同的结果,而不需要多个 OR 条件。
使用 IN 运算符,SQL 语句将如下所示:
SELECT*
FROMcustomers
WHERECity
IN(
'New York',
'Los Angeles',
'Chicago');
10、NOT IN 运算符
NOT IN 运算符允许你从结果集中排除特定值的列表。
如果我们在之前的查询中的 IN 之前添加 NOT 关键字,那么居住在这些城市的客户将被排除在外:
SELECT*
FROMcustomers
WHERECity
NOTIN
(
'New York',
'Los Angeles',
'Chicago');
11、CONCAT() 函数
CONCAT() 函数用于连接两个或多个文本值,并返回连接字符串。
我们将 FirstName 与 City 连接起来,用逗号分隔:
SELECTCONCAT
(FirstName,
', ', City)
FROMcustomers;
12、AS 关键字
一个连接导致一个新的列。默认列名称将是 CONCAT 函数。
你可以使用 AS 关键字为结果列分配自定义名称:
SELECTCONCAT
(FirstName,
', ', City)
ASnew_column
FROM customers;
当你运行查询时,列名称已更改
13、算术运算符
算术运算符对数值操作数执行算术运算。算术运算符包括加法(+),减法(-),乘法(*)和除法(/)
我们要为每位员工的工资增加 500,并选取结果。
SQL 语句将如下所示:
SELECT ID, FirstName, LastName, Salary+500 AS Salary
FROM employees;
14、UPPER() 函数
UPPER() 函数将指定字符串中的所有字母转换为大写。
LOWER() 函数将字符串转换为小写。
下面的 SQL 语句将所有 "LastName" 转换为大写:
SELECTFirstName,
UPPER(LastName)
ASLastName
FROM employees;
如果字符串中的字符不是字母,则此函数对它们没有影响。
15、SQRT() 和 AVG() 函数
SQRT() 函数返回参数中给定值的平方根。
下面的 SQL 语句显示计算每个员工工资的平方根:
SELECTSalary,
SQRT(Salary)
FROM employees;
执行输出结果如下:
类似地,AVG() 函数返回数值列的平均值:
SELECTAVG
(Salary)
FROMemployees;
执行输出结果:
16、SUM() 函数
SUM() 函数返回数值列的总数。
例如,我们要获取 employees 表中所有工资的总和,SQL 语句将如下所示:
SELECTSUM
(Salary)
FROMemployees;
17、子查询
当一个查询是另一个查询的条件时,称之为 子查询。
例如,我们想要知道所有工资大于平均值的员工名单。
首先,我们计算出所有工资的平均值:
SELECTAVG
(Salary)
FROMemployees;
当我们已经知道工资平均值为 “3450” 时,我们可以使用 WHERE 来列出大于该平均值的工资。
SQL 语句如下所示:
SELECTFirstName, Salary
FROMemployees
WHERESalary >
3450
ORDERBY
Salary
DESC;
DESC 关键字按降序排列结果,ASC 关键字按升序排列结果。
18、子查询
单个子查询将更容易地返回相同的结果。
SELECTFirstName, Salary
FROMemployees
WHERESalary > (
SELECTAVG
(Salary)
FROMemployees)
ORDERBY
Salary
DESC;
注意:将子查询括在括号中。另外,子查询结尾处没有分号,因为它是单个查询的一部分。
19、LIKE 操作符
LIKE 操作符用于在 WHERE 子句中搜索列中的指定模式。
SELECT column_name(s)
FROM table_name
WHEREcolumn_name
LIKEpattern;
SQL 的模式匹配允许你使用 “_” 匹配任何单个字符,而使用 “%” 匹配任意数目字符(包括零个字符)。
下面的 SQL 语句选择 FirstName 以字母 “D” 开头的所有员工:
SELECT*
FROMemployees
WHEREFirstName
LIKE'D%'
;
执行输出结果:
下面的 SQL 语句选择 LastName 以 “s” 为结尾的所有员工:
SELECT*
FROMemployees
WHERELastName
LIKE'%s'
;
执行输出结果:
% 通配符可以在同一模式中多次使用
20、MIN() 函数
MIN() 函数返回指定列的最小值。
例如,我们想要知道员工的最低工资,SQL 语句如下所示:
SELECTMIN
(Salary)
ASSalary
FROMemployees;
结果返回最低工资。
所有的 SQL 函数都可以组合在一起来创建单个表达式。
(详细内容见 ”W3school SQL微课 ‘’)