### Oracle SQL 学习笔记关键知识点解析 #### 一、SQL 并行查询 并行查询是Oracle数据库中一种提高查询性能的技术,特别是在处理大型数据集时尤其有效。通过利用多处理器或多核架构的能力,Oracle可以同时执行多个任务,从而显著减少查询时间。 **关键点:** - **启用并行DML**: 在执行并行查询或更新操作之前,需要通过`ALTER SESSION ENABLE PARALLEL DML`命令来启用当前会话的并行数据操作。 - **并行提示**: 可以使用SQL提示(`/*+PARALLEL(table, degree)*/`)来指定特定查询的并行度。其中`table`是要查询的表名,`degree`是并行度,通常是CPU核心数的倍数。 - 示例: `SELECT /*+PARALLEL(a, 4)*/ * FROM table_name a` 表示对表`a`进行并行度为4的查询。 - 多表连接时可以分别指定每个表的并行度: `SELECT /*+PARALLEL(a, 4) PARALLEL(b, 4) PARALLEL(c, 4)*/ a.*, b.*, c.* FROM table_name1 a, table_name2 b, table_name3 c` - **并行插入**: 同样可以通过SQL提示指定并行度来进行并行插入操作。 - 示例: `INSERT /*+PARALLEL(t, 4)*/ INTO table_name t` #### 二、表分区数据删除 Oracle支持表分区,这有助于优化大数据量表的操作性能。对于分区表,可以单独对某个分区进行操作,例如删除分区数据。 **关键点:** - **删除分区数据**: 使用`ALTER TABLE ... TRUNCATE PARTITION`命令可以删除指定分区的数据。 - 示例: `ALTER TABLE masamk.tb_mk_sc_user_mon TRUNCATE PARTITION mk_user_mon_||trim(iv_month)` 用于删除名为`mk_user_mon_`加上`iv_month`修剪后的值所对应的分区。 #### 三、MINUS 和 INTERSECT 操作 这两个操作符用于比较和筛选来自两个查询的结果集。 **关键点:** - **MINUS**: 该操作符返回出现在第一个查询但不出现于第二个查询的结果集。 - 示例: `SELECT column1, column2 FROM table1 MINUS SELECT column1, column2 FROM table2` - **INTERSECT**: 该操作符返回两个查询共有的结果集。 - 示例: `SELECT column1, column2 FROM table1 INTERSECT SELECT column1, column2 FROM table2` #### 四、NULLS LAST 排序选项 在ORDER BY子句中使用NULLS LAST选项可以将NULL值排在非NULL值之后。 **关键点:** - **NULLS LAST**: 当在ORDER BY子句中指定NULLS LAST时,NULL值会被放在排序结果的末尾。 - 示例: `ORDER BY column NULLS LAST` #### 五、NVL 系列函数 NVL系列函数用于处理NULL值。 **关键点:** - **NVL**: 如果第一个参数为NULL,则返回第二个参数;否则返回第一个参数。 - 示例: `NVL(column, 'default_value')` - **NVL2**: 如果第一个参数为NULL,则返回第三个参数;否则返回第二个参数。 - 示例: `NVL2(column, 'value_if_not_null', 'value_if_null')` - **NULLIF**: 如果两个参数相等,则返回NULL;否则返回第一个参数。 - 示例: `NULLIF(column1, column2)` #### 六、限制用户会话数 为了控制系统资源,可以设置每个用户的最大会话数。 **关键点:** - **创建Profile**: 使用`CREATE PROFILE`命令创建一个包含最大会话数限制的Profile。 - 示例: `CREATE PROFILE one_session LIMIT SESSIONS_PER_USER N;` (N为指定的最大会话数) - **应用Profile**: 使用`ALTER USER`命令将创建的Profile应用到指定用户上。 - 示例: `ALTER USER username PROFILE one_session;` - **启用资源限制**: 使用`ALTER SYSTEM`命令全局启用资源限制功能。 - 示例: `ALTER SYSTEM SET RESOURCE_LIMIT = TRUE;` #### 七、字段参照 在创建表时,可以指定一个字段参照另一个表的字段,形成外键约束。 **关键点:** - **创建主表**: 定义一个表,并为主键字段创建唯一索引或设置为PRIMARY KEY。 - 示例: `CREATE TABLE resources (resource_name VARCHAR2(10) PRIMARY KEY, ...);` - **创建参照表**: 创建一个新的表,并为参照字段添加REFERENCES约束。 - 示例: `CREATE TABLE schedules (resource_name REFERENCES resources, ...);` #### 八、绑定变量的使用 绑定变量是一种用于动态SQL执行的变量,可以提高SQL执行效率并增强安全性。 **关键点:** - **定义绑定变量**: 在SQL*Plus环境中,可以使用`VARIABLE`命令定义绑定变量。 - 示例: `VARIABLE emplno VARCHAR2(10);` - **赋值绑定变量**: 使用`EXECUTE :variable := value`命令给绑定变量赋值。 - 示例: `EXECUTE :emplno := '1234567890';` - **使用绑定变量**: 在SQL语句中,可以用`:`符号加变量名的形式引用绑定变量。 - 示例: `SELECT * FROM emp WHERE empno = :emplno;` - **DDL语句**: DDL语句(如CREATE TABLE)不支持使用绑定变量。 - **PL/SQL中的批量绑定变量**: - **FORALL循环**: FORALL语句用于执行批量更新、插入或删除操作。 - 示例: `FORALL i IN 1..x.COUNT INSERT INTO t VALUES (x(i));` - **BULK COLLECT**: BULK COLLECT用于收集多个结果到集合中。 - 示例: `SELECT * BULK COLLECT INTO emp_table FROM emp;` 以上就是Oracle SQL学习笔记中的关键知识点解析。希望这些内容能够帮助读者更好地理解和掌握Oracle SQL的相关技术。
- dai07122012-02-23值得学习,很详细的SQL介绍与应用
- 粉丝: 0
- 资源: 39
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助