数据库原理
投影运算
SELECT
使用:
SELECT 查询目标
正常查询
SELECT DISTINCT 查询目标
消重查询
SELECT *
泛查询
SELECT 查询目标 AS 别名
or SELECT 查询目标 别名
查询并赋予别名
SELECT 函数表达式or函数
查询计算表达式
对应投影运算,指定查询结果中所需要的属性或表达式
FROM
使用:
FROM 关系列表
对应笛卡尔积,给出查询所涉及的表,表可以是基本表、视图或查询表
WHERE
使用:
WHERE 选择运算(包括连接运算所转化的选择运算)
对应选择运算(包括连接运算所转化的选择运算),指定查询结果元组所需要满足的选择条件
WHERE 常用的选择运算
比较运算
>, >= , <, <=, =, <> (或!=或者≠)
使用:
WHERE <目标> 比较运算符 <值>
比较目标与值
WHERE 函数表达式(值) 比较运算符 函数表达式(值)
函数表达式的比较运算
范围查询
[NOT] BETWEEN <值1> AND <值2>
使用:
BETWEEN <值> AND <值2>
用于查询属性值在某一个范围内的元组
NOT BETWEEN <值1> AND <值2>
用于查询属性值不在某一个范围内的元组
集合查询
[NOT] IN <集合>
使用:
<目标> IN ('值1','值2')
用于查询属性值在某个集合内的元组
<目标> NOT IN ('值1','值2')
用于查询属性值不在某个集合内的元组
注意:
IN 后面是集合,可以是具体的集合,也可以是查询出来的元组集合
空值查询
IS [NOT] null
使用:
<目标> IS NULL
用于查询属性值为空值
<目标> IS NOT NULL
用于查询属性值不为空值
注意:
IS 不能用"="代替
字符匹配查询
[NOT] LIKE <匹配字符串>
使用:
[NOT] LIKE <匹配字符串>
用于字符匹配查询
[NOT] LIKE <匹配字符串> ESCAPE '<转义字符>'
例子:
LINKE '08\_' ESCAPE '\' /*用于查询带有08_的值,通配符可以是任意的*/
注意:
1. 匹配字符串必须用一对引号括起来
2. 在中文SQL-Server中,如果匹配字符串为汉字,则一个下划线代表一个汉字;如果是西文,则一个下划线代表一个字符。
3. 如果匹配字符串中不含有%和_,则LIKE与比较运算符“=”的查询结果一样
4. 如果查询字串中本身要包含%和_,必须使用“ESCAPE<换码字符>"短语,对通配符进行转义处理。
如果在LIKE前没有NOT,则查询指定的属性列值与<匹配字符串>相匹配的元组;
如果在LIKE前有NOT,则查询指定的属性列值不与<匹配字符串>相匹配的元组。
<匹配字符串>可以是一个具体的字符串,也可以包括通配符%和_
%表示任意长度的字符串(任意字符)
ab%,表示所有以ab开头的任意长度的字符串;
zhang%ab,表示以zhang开头,以ab结束,中间可以是任意个字符的字符串。
符号_(下划线)表示任意一个字符(一个字符)
ab_,表示所有以 ab开头的3个字符的字符串,其中第3个字符为任意字符;
a__b表示所有以a开头,以b结束的4个字符的字符串,且第2、3个字符为任意字符。
逻辑查询
AND OR NOT
SQL提供AND、OR和NOT逻辑运算符分别实现逻辑与、逻辑或和逻辑非运算
使用:
WHERE <表达式> OR <表达式> OR ...
WHERE <表达式> AND <表达式> AND ...
NOT 参考上面 [NOT]
low()函数
将大写字母转换为小写字母
year()函数
提取日期中的年份
getdate()函数
获取当前系统日期
注意
SELECT 和 FROM 是必须的,其他是可选的
排序运算
ORDER BY
使用:
ORDER BY <表达式1> [ASC|DESC][, <表达式2> [ASC|DESC] ,... ]
<表达式1>, <表达式2>, … 可以是属性、函数或表达式
默认为ASC排序
按降序排序,必须指明DESC选项
该运算含义是:
在查询结果中首先按<表达式1>的值进行排序
在<表达式1>值相等的情况下再按<表达式2>值排序
依此类推
month()
函数表示提取日期表达式的月份