简单查询:SQL单表查询处理
单表查询的步骤:
1、从FROM子句中提到的表开始;
2、如果有一条WHERE子句,将它的搜索条件应用到表的每一条记录,保留搜索条件为TRUE的那条记录,并去掉搜索条件为FALSE和NULL的那些记录;
3、对每条保留的记录,计算选择列表中每项的值,以生成一条查询结果记录。对于每个字段引用,使用当前记录中字段的值;
4、如果指定了SELECT DISTINCT,消除所生成的查询结果中的任何重复记录;
5、如果有一条ORDER BY子句,按指定的顺序排序查询结果;
SQL的搜索条件
1、比较测试:(=,<>,<,<=,>,>=)
select * from A where B>C
依据ANSI/ISO SQL规范,不等比较测试被写成“A<>B”,但是有些数据库使用的是“A!=B”。一个搜索条件可以产生TRUE,FALSE或NULL值,只有搜索条件产生TRUE的那些记录才被包含在查询结果中。
2、范围测试:(NOT)BETWEEN...AND...
select * from A where B between C and D
BETWEEN的测试包括范围的端点,以上语句相当于:
select * from A where B>=C and B<=D
3、组成员测试:(NOT)IN
select * from table where X in (A,B,C,D)
4、模式匹配测试:LIKE
select * from table where A like '%XXX%'
通配符:(%:匹配任何顺序的0个或者多个字符);(_:匹配任何单个字符);
转义字符*:在搜索条件的ESCAPE子句中,转义字符被指定为单字符常量字符串:
like 'A$B%BC%' escape '$' :“A%BC”开头
5、NULL值测试:IS NULL
select * from table where A is null;
NULL值测试不生成NULL值,它总是生成TRUE或FALSE。
6、复合搜索条件:AND、OR、NOT
AND、OR、NOT的真值表:
AND的真值表 | |||
AND | TURE | FALSE | NULL |
TRUE | TURE | FALSE | NULL |
FALSE | FALSE | FALSE | FALSE |
NULL | NULL | FALSE | NULL |
OR的真值表 | |||
OR | TRUE | FALSE | NULL |
TRUE | TRUE | TRUE | TRUE |
FALSE | TRUE | FALSE | NULL |
NULL | TRUE | NULL | NULL |
NOT的真值表 | |||
NOT | TRUE | FALSE | NULL |
FALSE | TRUE | NULL |