一、走进Oracle
1:oracle 数据库产品是免费的,但 oracle 服务是收费的;
2:oracle 全局数据库名可以取 org.tech.orcl,前2部分为域,最后一部分为sid;
3:oracle 产品安装完成后,scott 用户默认为锁定状态,如果需要使用就要把 scott 用户的锁定单选框取消;
二、SQL数据操作和查询
1:oracle 中的五种命令(DDL,DML,DQL,TCL,DCL) ;
2:oracle 代码中,使用 / 来执行缓冲区中的语句;
3:CREATE TABLE 表名 AS SELECT 语句 ;
5:转义 like 中的字符使用 ESCAPE;
6:在进行 INSERT INTO 语句使用 UNION 时,不能使用序列;
6:外联接中的 “(+)” 在哪张表右边则该表为补充表;
三、子查询和常用函数
1:oracle 中的伪列 ROWID 是表中没列的物理地址;
2:当 WHERE 指定 ROWNUM 时,不能大于;
3:当 ROUND 函数的第二个参数小于0时,则从各位开始,往左省略;TRUNC 函数也一样;
4:ROUND 可以四舍五入日期,详情参考http://docs.oracle.com/cd/E11882_01/server.112/e26088/functions154.htm#
5:若使用 EXTRACT 提取日期中的特定部分时,对于 DATE,只能提取年、月、日,若要提起时、分、秒,则用 SYSTIMESTAMP,该类型的 HOUR 没加上时区,所以比中国小8小时;
四、表空间,数据库对象
1:oracle 可以为表、视图、序列、过程、函数、程序包登指定一个别名,且分两种;
2:序列的升序的最大值为10的27次方;
3:创建视图时使用 FORCE 无基表创建视图,和WITH READ ONLY 使视图为只读;
4:一个数据库由若干表空间组成,一个表空间由若干数据文件组成;
5:创建表空间需要考虑数据库对分区的管理;
6:创建表时可以使用 PARTITION BY 指定表分区;
五、PL/SQL 程序设计
1:PL/SQL 块中 DECLARE 部分可以省略,但最好还是带上;
2:PL/SQL中的求幂运算用 “**”,且不等运算支持 “!=”;
3:声明变量时顺带赋值时可以用 “:=” 和 “DEFAULT”,但 “DEFAULT” 只能用在声明部分;
4:SELECT INTO 语句可以同时赋予多个值,但 SELECT 部分和 INTO 部分的数量必须一样;
5:若字符串里需再用字符串,则内部字符串用两个单引号表示;
6:PL/SQL中的标量数据类型 SIGNTYPE 的值 -1 一半可用于表示该数据行被删除,即可省略一字段;
7:使用属性数据类型时需要引用表的 SELECT 权限;
8:使用 CASE 进行匹配时,若加了 selector,则主体必须有一项匹配 selector,且 WHEN 至少出现一次;
9:PL/SQL语句块的 EXCEPTION 部分通常置于最后,且可使用 RAISE 关键字手动引发异常;
10:用户可手动抛出自定义异常,且自定义异常码限制在-20000到-20999;
11:用户可用 PRAGMA EXCEPTION_INIT 将自定义异常注册进系统内部;
八、使用复合数就类型
1:记录表中的成员不能为空;
2:记录表中的成员类型可以为任意,如果为 %ROWTYPE 则需要单独赋值;
4:9i 之前索引本的下标只能为 PLS_INTEGER 和 BINARY_INTEGER 类型,之后可以为 VARCHAR2;
5:DELETE 可以删除集合元素的值,但下标还在;
6:变长数组和嵌套表一样,但大小不超过初始化的范围;
7:FORALL 的 VALUES OF 字句中的集合的值只能是 PLS_INTEGER 或 BINARY_INTEGER 类型;
九、使用游标
1:当游标到达最后则不会有任何动作,只取最后一次有效值;
2:游标的批处理集合对象不需要进行初始化;
十一、开发子程序
1:输入参数不能赋值;
2:参数不能有长度;
3:函数必须有返回类型;
4:游标参数用 sys_refcursor;
十二、开发包
1:使用包时需要定义包规范和包体;
2:包规范类似借口,只能声明;
3:包内部可以可以定义游标类型和静态游标,但不可以定义游标变量;
4:包重载与 JAVA 中的重载类似,但包重载返回类型必须相同;
5:包体和包规范属于同一作用域,但包规范时公共的,而包体是私有的;