LIKE 查找类似值
LIKE关键字用于逻辑表达式,返回一个布尔值
WHERE子句的格式:
WHERE
column_name LIKE String
其中,String可以包含通配符:
- %:匹配任意字符(包括零个字符)
- _:匹配单个字符
示例(搜索Person表中Name字段中以Tangent开头的行):
SELECT
Name
FROM
Person
WHERE
Name LIKE 'Tangent%';
相似地,NOT LIKE关键字可以达到相反的效果
IN 关键字
IN关键字用在逻辑表达式中,和=与OR的组合等价
WHERE
Name='A' OR Name='B'
WHERE
Name IN ('A','B')
--以上两种写法是等价的
BETWEEN 选取区间数据
BETWEEN A AND B会对数据(数值,字符串,日期)进行判定.
对字符串进行判定的时候,将根据ASCII码逐位判定.
示例:
WHERE
Age BETWEEN 18 AND 25
这条WHERE语句将对年龄处于18和25之间的行返回true
NOT BETWEEN会产生相反的结果
注意:不同的数据库管理系统对于BETWEEN的开闭区间的处理是不一致的,务必熟悉所使用的数据库管理系统
AS 别名
- 字段后的AS可以指定输出的列名称
- 表名称后的AS可以指定输出的表名称
SELECT
c.ID,c.Name
FROM
Class c;
AS其实是可以省略的
JOIN 多表关联
注意:下面的表格中,左表代表主表,右表代表从表
| INNER JOIN | 返回两个表中满足连接条件的记录(取交集),只有两表中匹配的行才会被返回 |
|---|---|
| LEFT JOIN | 返回左表中的所有记录,即使右表中没有匹配的记录(以左表为主) |
| RIGHT JOIN | 返回右表中的所有记录,即使左表中没有匹配的记录(以右表为主) |
| FULL OUTER JOIN | 返回两个表的并集 |
| CROSS JOIN | 返回两个表的笛卡尔积,每条左表记录与每条右表记录进行组合。 |
| SELF JOIN | 将一个表与自身连接。 |
| NATURAL JOIN | 基于同名字段自动匹配连接的表。 |
SELECT
column1,column2...
FROM
table1
JOIN
table2 ON Boolean;
JOIN子句会遍历两个表中所有行的组合,按照JOIN前的关键字返回ON关键字后面Boolean为true的行
UNION 合并结果集
UNION连接两个SELECT语句,返回两个结果集的合并
UNION返回的内容默认选取不同的值,若要保留重复的值,使用UNION ALL
注意:两个待合并的结果集必须有相同数量的列,列中也必须有相似的数据类型,请注意SELECT关键字后面返回的字段顺序
select
*
FROM
persons
UNION
select
*
FROM
persons_b;
NOT NULL 非空
NOT NULL关键字用在逻辑表达式中,来判断某一行的特定字段是否是空的
NOT NULL关键字用在建表语句中,来约束某一个字段不能是空的
CREATE TABLE table_name(
column int NOT NULL
);
SELECT
*
FROM
Persons
WHERE
Name IS NOT NULL
IS NULL 用在布尔表达式中,效果与IS NOT NULL相反
VIEW 视图
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。
CREATE VIEW view_name AS
SELECT
column1, column2, ...
FROM
table_name
WHERE
Boolean;
视图是基于查询结果生成的虚拟表,而不是实际存储数据的表.视图可以填入后面语句的table_name内
删除视图可以使用DROP VIEW关键字
DROP VIEW
view_name
虽然说是进阶篇,但还是一些很基础的东西,而且都是粗略介绍,下一篇会写一下SQL中的函数,重难点以后会单独写文章的(溜去写运转日志了)
