0005 《SQL必知必会》笔记01-SELECT语句
1、SELECT基本语句:
SELECT 字段名1,···,字段名n FROM 表名
2、检索所有字段,用"*"替换字段名,这会导致效率低下
SELECT * FROM 表名;
3、去除重复项,“DISTINCT”作用于所有字段
SELECT DISTINCT 字段名1,···,字段名n FROM 表名;
4、若检索结果过多,可限定结果的条数
SELECT 字段名 FROM 表名 WHERE ROWNUM<=n;
5、对检索出的数据进行排序,ASC为升序,也为默认排序方式;DESC为降序。ORDER BY 语句一定是最后一条语句。如果不排序,那么不能认为检索出的数据的顺序有任何意义
SELECT 字段名 FROM 表名 ORDER BY 字段名1 ASC|DESC,```,字段名n ASC|DESC;
6、WHERE 子句,操作符如下,语法都为:WHERE 字段名 操作符 值;注意Oracle至少默认不支持“!<”和“!>”
操作符 | 说明 | 操作符 | 说明 |
= | 等于 | ||
!= | 不等于 | <> | 不等于 |
< | 小于 | > | 大于 |
<= | 小于等于 | >= | 大于等于 |
BETWEEN AND | 双侧闭区间 | IS NULL | 空值 |
7、WHERE子句的多条件过滤——AND,多个子条件同时满足
WHERE 子条件1 AND ··· AND 子条件n
8、WHERE 子句的多条件过滤——OR,满足任意一个条件
WHERE 子条件1 OR ···OR 子条件n
9、WHERE子句——IN操作符,满足IN的任意个值,与OR类似,但有如下优点:语法更清楚直观;更易管理求值顺序;比一组OR执行快;可以包含其他SELECT语句,能动态建立WHERE子句。
WHERE 字段名 IN(值1,···,值n)
10、NOT操作符:否定其后面的条件。在复杂语句中,NOT非常有用
WHERE NOT 条件;
11、AND的求值优先级高于OR,可以用"()"改变优先级
12、模糊匹配Like操作符,通配符——“%”,匹配0~n个字符;“_”,匹配一个字符。特别注意:Oracle会用空格来补全字段,最好是用TRIM()、RTRIM()、LTRIM()去掉空格
WHERE 字段名 LIKE ‘带%的字符串’
13、《SQL必知必会》降到了“[]”通配符,但是Oracle貌似不支持,或者说默认不支持,待学到后面确定了再改这条。
14、关于通配符:(1)不要过度使用通配符,(2)通配符不要放在开始处,会非常慢,(3)注意通配符的位置,放错地方,可能会返回意外的数据