最近打算把9i 的OCP教程看一遍,作一些简单的笔记,作为备忘。
PL/SQL看似简单,但实际使用起来还是很很多技巧和误区的。以下记录的是复习过程中想到的、和容易出现错误的地方。
这些东西在教程大部分是没有记载的。
第一章:编写基本的SQL语句
1.1 SELECT语句
1) 基本语法
SELECT *|{[DISTINCT] column|expression [alias],...}
FROM table;
2) 几个需要注意的地方
Ø 如果SQL语句中需要用到DISTINCT,则该关键字只能出现在紧接着SELECT的地方(在聚合函数中使用除外)
Ø SQL语句一般不区分大小写,但包含在单引号中的字符是区分大小写的。
1.2 几个概念
1) KEYWORD
关键字,如select、where、from等。
2) CLAUSE
子句。包括select子句、where子句、from子句、order by子句、group by子句、having子句等。如
select id,count(1) from t where id=1 group by id having count(1)>0 order by id;
每一个颜色代表一个子句。
3) STATEMENT
完整的SQL句子。
1.3 写SQL的几个规则(有些不是必须,但为了可读性强最好遵循)
1) 关键字大写,其他小写
2) 缩进
3) 同一个关键字或字段名、列名不能写在两行中。
1.4 算术表达式
1) 算术表达式可以包含列名、数值、算术运算符
2) 算术表达式可用于除from子句以外的所有子句
1.5 空值NULL
1) NULL不等于0,也不等于’’,NULL与NULL也不相等。
NULL=NULL、NULL<>NULL都不成立。
2) 只有NOT NULL和主键可以避免NULL值;UNIQUE约束下列也可以包含一个或多个NULL值。
3) 判断一个某表达式是否为NULL,只能用EXPR IS (NOT) NULL的形式,不能用EXPR=NULL。
1.6 字段别名
1) 包含了空格或其他特殊字符的别名要用双引号括起来。
2) 可以用AS关键字定义别名,也可以不用
3) 如果在定义别名时不加双引号,则别名在显示时(heading)时会把别名全部转换为大写;如果加了双引号,则在显示时与包含在双引号中的内容是一样的。
4) 别名可以用于同层的order by子句中,但不能用于同层的where子句、group by子句中。
1.7 DISTINCT关键字
1) 如果SQL语句中需要用到DISTINCT,则该关键字只能出现在紧接着SELECT的地方(在聚合函数中使用除外)
2) 如果DISTINCT关键字后接了多个字段,则ORACLE会对这些字段的组合进行唯一性过滤。
1.8 SQL与iSQL*PLUS
1) SQL是语言,iSQL*Plus是工具
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/231499/viewspace-63768/,如需转载,请注明出处,否则将追究法律责任。