77范文网 - 专业文章范例文档资料分享平台

OCP认证考试指南全册Oracle Database 11g练习与知识点 - 图文(9)

来源:网络收集 时间:2019-08-28 下载这篇文档 手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:或QQ: 处理(尽可能给您提供完整文档),感谢您的支持与谅解。点击这里给我发消息

ALTER TABLE orders ADD CONSTRAINT fk_customer_id FOREIGN KEY (customer_id) REFERENCES customers(customer_id) 练习7-7 创建视图

在此练习中,使用处于HR模式的数据创建一些简单视图和复杂视图。可以使用SQL*Plus,也可以使用SQL Developer。

(1) 作为用户HR连接到数据库

(2) 对EMPLOPEES和DEPSRTMENT表创建视图。删除其中的所有个人信息: CREATE VIEW emp_anon_v AS SELECT hire_date,job_id,salary,commission_pct,department_id FROM hr.employees; CREATE VIEW dept_anon_v AS SELECT department_id,department_name,location_id FROM departments; (3) 创建联接与聚合着两个简单视图的复杂视图。注意。可以在视图的基础上再创建视

图。 CREATE VIEW dep_sum_v AS SELECT E.DEPARTMENT_ID, COUNT(1) STAFF, SUM(E.SALARY) AS SALARIES, D.DEPARTMENT_NAME FROM EMP_ANON_V E JOIN DEPT_ANON_V D ON E.DEPARTMENT_ID = D.DEPARTMENT_ID GROUP BY E.DEPARTMENT_ID, D.DEPARTMENT_NAME; (4) 通过查询确认视图有效

练习7-8 创建和使用同义词

在本练习中,将用HR模式中的对象创建和使用私有同义词。可以使用SQL*Plus或SQL Developer。

(1) 作为用户HR连接到数据库

(2) 为【练习7-7】中创建的三个视图创建同义词:

CREATE SYNONYM emp_s FOR emp_anon_v; CREATE SYNONYM dept_s FOR dept_anon_v; CREATE SYNONYM dsum_s FOR dep_sum_v; (3) 确定同义词等同于底层对象: SQL> describe emp_s; Name Type Nullable Default Comments -------------- ------------ -------- ------- -------- HIRE_DATE DATE JOB_ID VARCHAR2(10) SALARY NUMBER(8,2) Y COMMISSION_PCT NUMBER(2,2) Y DEPARTMENT_ID NUMBER(4) Y SQL> describe emp_anon_v; Name Type Nullable Default Comments -------------- ------------ -------- ------- -------- HIRE_DATE DATE JOB_ID VARCHAR2(10) SALARY NUMBER(8,2) Y COMMISSION_PCT NUMBER(2,2) Y DEPARTMENT_ID NUMBER(4) Y (4) 通过对同义词而不是视图运行【练习7-7】中的语句来确认同义词有效(甚至到产生

相同错误的程度) SELECT * FROM dsum_s; INSERT INTO dept_s VALUES(99,'Temp Dept',1800); INSERT INTO emp_s VALUES(SYSDATE,'AC_MGR',10000,0,99); UPDATE emp_s SET salary=salary*1.1; ROLLBACK; SELECT MAX(salaries/staff) FROM dsum_s; (5) 删除两个视图 DROP VIEW emp_anon_v; DROP VIEW dept_anon_v; (6) 查询基于已删除视图的复杂视图

SELECT * FROM dep_sum_v; ORA-04063: view \可以注意到查询失败。 (7) 尝试重新编译被破坏的视图 ALTER VIEW dep_sum_v COMPILE; 此次编译尝试也会失败 (8) 删除DEP_SUM_V视图 DROP VIEW dep_sum_v; (9) 查询已删除视图的同义词 SELECT * FROM emp_s;

ORA-00980: synonym translation is no longer valid 该查询会失败。 (10) 重新编译被破坏的同义词

ALTER SYNONYM emp_s COMPILE; 注意,虽然这样做不会抛出错误,而是从第(9)步开始重新运行查询。该同义词无疑仍然处于破坏状态。

(11) 通过删除同义词进行整理: DROP SYNONYM emp_s; DROP SYNONYM dept_s; DROP SYNONYM dsum_s; 练习7-9 创建和使用序列

在本练习中,创建一些序列并使用它们。需要两个并发会话,可用使用SQL Developer或者SQL*Plus。

(1) 在单独的会话中作为WEBSTORE登录到数据库两次。将其中一次登录看着A会话,

另一次看做B会话。

(2) 在A会话中,创建如下所示的序列:

CREATE SEQUENCE seql START WITH 10 NOCACHE MAXVALUE 15 CYCLE; NOCACHE的使用会降低性能。如果指定了MAXVALUE,那么有必要用CYCLE防止达到MAXVALUE时出错。

(3) 在适当的会话中按正确的顺序执行表中的命令,以观察NEXTVAL和CURRVAL的

使用以及序列的循环。 步骤 第1步 第2步 第3步 第4步 第5步 第6步 第7步 第8步 第9步 SELECT dual;--10 在A会话中 seql.nextval FROM SELECT dual;--11 SELECT dual;--12 seql.nextval FROM SELECT dual;--13 SELECT dual;--12 seql.currval FROM SELECT dual;--14 SELECT dual;--15 seql.nextval FROM SELECT dual;--14 SELECT dual;--1 seql.nextval FROM 在B会话中 seql.nextval FROM seql.nextval FROM seql.nextval FROM seql.currval FROM 第10步 SELECT seql.nextval FROM

dual;--2 (4) 创建一个带主键的表: CREATE TABLE seqtest ( c1 NUMBER, c2 VARCHAR2(10) ); ALTER TABLE seqtest ADD CONSTRAINT seqtest_pk PRIMARY KEY (c1); (5) 创建一个序列来生成主键值:

CREATE SEQUENCE seq_test_pk_s; = CREATE SEQUENCE seq_test_pk_s MINVALUE 1 MAXVALUE 999999999999999999999999999 START WITH 1 INCREMENT BY 1 CACHE 20; (6) 在A会话中,向新表中插入一行并提交: INSERT INTO seqtest VALUES(seq_test_pk_s.nextval,'first'); COMMIT; (7) 在B会话中,向新表插入一行并不提交: INSERT INTO seqtest VALUES (seq_test_pk_s.nextval,’second’); (8) 在A会话中,插入第三行并提交: INSERT INTO seqtest VALUES(seq_test_pk_s.nextval,'third'); COMMIT; (9) 在B会话中,回滚第二个插入: ROLLBACK; (10) 在B会话中查看表的内容: SELECT * FROM seqtest;

这就演示了在事务控制机制外部递增序列并立即发布下一个值。 (11) 整理表和序列: DROP TABLE seqtest; DROP SEQUENCE seq_test_pk_s; DROP SEQUENCE seql; (12) 使用SQL Developer或SQL*Plus连接到WEBSTORE模式并创建三个将在后面练习

中使用的序列(必须首先以特权用户如SYSTEM的身份连接,将“CREATE SEQUENCE”权限授予WEBSTORE用户)。 CREATE SEQUENCE prod_seq; CREATE SEQUENCE cust_seq; CREATE SEQUENCE order_seq;

本章知识点回顾

分类主要的数据库对象

? 有些对象包含数据,主要是表和索引

? 编程对象(如存储过程)和函数是可执行的代码 ? 视图和同义词是能够访问其它对象的对象 ? 表是保存使用列定义的行的二维结构

? 表在模式中。模式名和表名形成唯一标识符。

列举类可用的数据类型

? 最常见的字符数据类型有VARCHAR2、NUMBER和DATE ? 还有其它许多数据类型

创建简单的表

? 可以从头开始或者使用子查询创建表

? 创建之后,可以添加、删除或者修改列定义 ? 表定义可以包含列的默认值

创建和使用临时表

? 只有插入行的会话才能够访问临时表中的行 ? 针对临时表的DML不生成重做数据 ? 临时表只存在于会话的PGA或临时段

? 临时表只在会话期间或事务期间(具体取决于创建方式)保存行 约束

? 可以在创建表时定义约束,也可以在随后添加

? 可以与列一起定义约束,或者在列之后的表级别定义约束。 ? 表级别约束可能比内联定义的约束更复杂 ? 表只能有一个主键。但可以有许多唯一键 ? 主键的功能等同于UNIQUE加上NOT NULL ? 唯一约束不阻止多个空值的插入 ? 外键约束定义表之间的关系 索引

? 要实施唯一约束和主键约束,就必须使用索引 ? B*树索引不包含NULL,但位图索引包含NULL

? B*树索引可为唯一索引,也可为非唯一索引,这些将取决于是否接受重复键值。 ? B*树索引适用于基数大的列,而位图索引适用于基数小的列。 ? 位图索引可以采用复合形式,可以基于函数,也可以降序排列。 ? B*树索引可以是唯一的、压缩的和反向键。 视图

? 简单视图有一个明细表(或基表),既不使用函数也不使用聚合

百度搜索“77cn”或“免费范文网”即可找到本站免费阅读全部范文。收藏本站方便下次阅读,免费范文网,提供经典小说教育文库OCP认证考试指南全册Oracle Database 11g练习与知识点 - 图文(9)在线全文阅读。

OCP认证考试指南全册Oracle Database 11g练习与知识点 - 图文(9).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印 下载失败或者文档不完整,请联系客服人员解决!
本文链接:https://www.77cn.com.cn/wenku/jiaoyu/688776.html(转载请注明文章来源)
Copyright © 2008-2022 免费范文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ: 邮箱:tiandhx2@hotmail.com
苏ICP备16052595号-18
× 注册会员免费下载(下载后可以自由复制和排版)
注册会员下载
全站内容免费自由复制
注册会员下载
全站内容免费自由复制
注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: