SQL学习笔记
1. 1. 一张表不能同时和复数张表外连接。
2.只有当同一张表的多个连接条件均为外连接时,外连接才起作用。
3.同一张表的多个外连接条件中,只要一个不满足条件,该表的记录则为空。
4.使用集合函数的SQL中,可用HAVING指定集合后结果的条件。
例:SELECT x,SUM(i) FROM A GROUP BY x HAVING SUM(i) > 100
5.排序操作中,NULL在SQLSERVER中被作为最小值,在ORACLE ,DB2中被作为最大值。
ORACLE9i中,可用NULLS FIRST,NULLS LAST来改变NULL 记录的位置。
例:SELECT * FROM foo ORDER BY a DESC NULLS LAST
6.WHERE条件中的子查询,会与主表中的记录逐条匹配,因此效率低下。
7.INSERT ALL(*ORACLE)可以同时登录多条记录,可以同时登录多张表。
语法中SELECT 是必须的。例:INSERT ALL INTO foo VALUES(1,2) INTO
foo VALUES(3,4) SELECT * FROM DUAL
INSERT ALL
WHEN a < 10000 THEN
INTO bar1
ELSE
INTO bar2
SELECT a,b FROM foo
8.(*ORACLE) 符合条件的记录存在时更新,不存在时登录。
MERGE INTO bar USING foo ON (foo.a = bar.a)
WHEN MATCHED THEN UPDATE SET bar.b = foo.b,bar.c = foo.c
WHEN NOT MATCHED THEN INSERT(bar.a,bar.b,bar.c)
VALUSE(foo.a,foo.b,foo.c)
9. SELECT FOR UPDATE OF 锁记录
SELECT * FROM foo ,bar WHERE foo.a = bar.a AND bar.b = abc FOR UPDATE
OF foo.a NOWAIT
10. LOCK TABLE 锁表
11. 记录集合差运算MINUS,只取得主表中,从表中没有的记录。
例:SELECT a FROM foo MINUS SELECT a FROM bar
12. 记录集合交集运算INTERSECT ,取出两张表中都存在的记录。
例:SELECT a FROM foo INTERSECT SELECT a FROM bar
13. 字符串连接运算符:
例:SELECT 姓名 '(' 性别 ')' FROM 个人信息