Introduction to Oracle9i:SQL 学习笔记1
1,Introduction
名词解释:
RDBMS 关系型数据库
ORDMS 对象关系型数据库
Projection 投影
Selection 选择
Joining 链接
statement 语句,计算机程序指令
syntax 语法
clause 子句,从句,条款
2,列别名
AS "" 可以显示固定格式和内容,如"Name","Annual Salary"
ME? NUMBER(P,S) P是数值部分的全部长度,S是小数部分的长度,小数点不算长度。
3,LIKE 项目
% 匹配0个或多个字符
_ 匹配1个字符
ESCAPE 不匹配ESCAPE指定字符对应的%或_
4,NULL的排序
ASC升序时,NULL在最后
DESC降序时,NULL在最前
5,Order By
可以对列,表达式或列别名进行排序。
6,NULL
NVL (expr1, expr2):expr1为NULL,返回expr2;不为NULL,返回expr1。
NVL2 (expr1, expr2, expr3) :expr1不为NULL,返回expr2;为NULL,返回expr3。
NULLIF (expr1, expr2):相等返回NULL,不等返回expr1 。
COALESCE(expr1, expr2, ...,exprn):返回第一个不为空的expr。
7,Group By
ME? 当使用Group By时,不会对Group By的项目进行排序。
8,COUNT
COUNT(*) 包含空值
COUNT(expr) 不包含空值
COUNT(DISTINCT expr) 不包含空值和重复的列
ME? COUNT(1)不包含空值
ME? COUNT(*),COUNT(1),COUNT(expr)大数据量的性能比较
数据量为12,000,000条,COUNT(*),COUNT(1),COUNT(pk)基本相同,
都使用了INDEX FAST FULL SCAN。
而如果使用COUNT(no_idx),会进行全表扫描,非常慢。
9,HAVING
ME? 不要求和Group By同时出现
但是HAVING认为检索对象为1组,单独使用没有意义。
10,&和&&
ME? 是否可以组成动态SQL文
ME? &和&&的区别
11,多表更新
UPDATE table
SET column1 = (subquery1),
column2 = (subquery2)
WHERE conditon;
12, ME? INSERT INTO (subquery)功能
ME? WHERE condition WITH CHECK OPTION
13,默认值的关键字
DEFAULT
14,ME? MERGE的性能与UPDATE NOTFOUND INSERT的性能比较。
15,LOCK MODE
ME? Exclusive 排他模式
ME? Share 共享模式
相关数据字典V$LOCK