SQL 21日自学通(V3.0)(PDF格式)-第72部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
SQL》 CREATE PUBLIC SYNONYM EMPLOYEES FOR RYAN。EMPLOYEES;
Synonym created。
SQL》 CREATE PUBLIC SYNONYM HISTORY FOR RYAN。HISTORY;
Synonym created。
SQL》 CREATE PUBLIC SYNONYM INVOICES FOR RYAN。INVOICES;
Synonym created。
SQL》 CREATE PUBLIC SYNONYM ORDERS FOR RYAN。ORDERS;
Synonym created。
SQL》 CREATE PUBLIC SYNONYM PRODUCTS FOR RYAN。PRODUCTS;
Synonym created。
SQL》 CREATE PUBLIC SYNONYM PROJECTS FOR RYAN。PROJECTS;
Synonym created。
SQL》 CREATE PUBLIC SYNONYM VENDORS FOR RYAN。VENDORS;
Synonym created
分析
几乎是马上 所有的数据库用户都可以通过公共同义字来访问为 RYAN 所拥有的表了
现在用户无需在执行查询的时候对表加以限制 限制的意思就是必须指定表的所有者 如
RYAN。VENDORS
但是如果公共同义字并不存在呢 假如 BRANDON 想访问所有为 RYAN 所拥有的表
来创建私有同义字时该如何做呢
INPUT/OUTPUT
SQL》 CONNECT BRANDON
ENTER PASSWORD: *******
CONNECTED。
SQL》 SET ECHO OFF
SQL》 SET FEEDBACK OFF
SQL》 SET HEADING OFF
SQL》 SPOOL PRIV_SYN。SQL
SQL》 SELECT 'CREATE SYNONYM ' || TABLE_NAME || ' FOR ' ||
368
…………………………………………………………Page 369……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
2 OWNER || '。' || TABLE_NAME || ';'
3 FROM ALL_TABLES
4 /
CREATE SYNONYM DUAL FOR SYS。DUAL;
CREATE SYNONYM AUDIT_ACTIONS FOR SYS。AUDIT_ACTIONS;
CREATE SYNONYM USER_PROFILE FOR SYSTEM。USER_PROFILE;
CREATE SYNONYM CUSTOMERS FOR RYAN。CUSTOMERS;
CREATE SYNONYM ORDERS FOR RYAN。ORDERS;
CREATE SYNONYM PRODUCTS FOR RYAN。PRODUCTS;
CREATE SYNONYM INVOICES FOR RYAN。INVOICES;
CREATE SYNONYM ACCT_REC FOR RYAN。ACCT_REC;
CREATE SYNONYM ACCT_PAY FOR RYAN。ACCT_PAY;
CREATE SYNONYM VENDORS FOR RYAN。VENDORS;
CREATE SYNONYM EMPLOYEES FOR RYAN。EMPLOYEES;
CREATE SYNONYM PROJECTS FOR RYAN。PROJECTS;
CREATE SYNONYM HISTORY FOR RYAN。HISTORY;
INPUT/OUTPUT
SQL》 SPOOL OFF
SQL》
SQL》 SET ECHO OFF
SQL》 SET FEEDBACK ON
SQL》 START PRIV_SYN。SQL
Synonym created。
Synonym created。
Synonym created。
Synonym created。
Synonym created。
Synonym created。
Synonym created。
Synonym created。
369
…………………………………………………………Page 370……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
Synonym created。
Synonym created。
Synonym created。
Synonym created。
Synonym created。
分析
几乎没做什么工作 BRANDON 就有了所有为 RYAN 所拥有的表的同义字 他不再需
要对表进行限制了
为你的表创建视图
如果你想为一组表创建视图 你需要做与下例类似的工作
INPUT
SQL》 SET ECHO OFF
SQL》 SET FEEDBACK OFF
SQL》 SET HEADING OFF
SQL》 SPOOL VIEWS。SQL
SQL》 SELECT 'CREATE VIEW ' || TABLE_NAME || '_VIEW AS SELECT * FROM ' ||
2 TABLE_NAME || ';'
3 FROM CAT
4 /
OUTPUT
CREATE VIEW ACCT_PAY_VIEW AS SELECT * FROM ACCT_PAY;
CREATE VIEW ACCT_REC_VIEW AS SELECT * FROM ACCT_REC;
CREATE VIEW CUSTOMERS_VIEW AS SELECT * FROM CUSTOMERS;
CREATE VIEW EMPLOYEES_VIEW AS SELECT * FROM EMPLOYEES;
CREATE VIEW HISTORY_VIEW AS SELECT * FROM HISTORY;
CREATE VIEW INVOICES_VIEW AS SELECT * FROM INVOICES;
CREATE VIEW ORDERS_VIEW AS SELECT * FROM ORDERS;
CREATE VIEW PRODUCTS_VIEW AS SELECT * FROM PRODUCTS;
370
…………………………………………………………Page 371……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
CREATE VIEW PROJECTS_VIEW AS SELECT * FROM PROJECTS;
CREATE VIEW VENDORS_VIEW AS SELECT * FROM VENDORS;
INPUT/OUTPUT
SQL》 SPOOL OFF
SQL》 SET ECHO OFF
SQL》 SET FEEDBACK ON
SQL》 START VIEWS。SQL
View Created。
View Created。
View Created。
View Created。
View Created。
View Created。
View Created。
View Created。
View Created。
View Created。
分析
在上边的 SQL 语句中生成了一个叫 VIEW。SQL 的文件 输出文件变成了一个 SQL 文
件 其中包括着对指定的表所创建的视图 在运行这个文件之后 我们可以看到视图已经
创建了
在一个计划中清除其所有的表的内容
清除表是在开发环境中出现的工作 为了有效地开发测试数据载入和 SQL 的性能 数
据是经常需要重新载入的 这一过程可以确定和清除 BUG 经常测试后的应用程序才会转
入生产环境中
下边的例子将清除一个工作中的所有的表的内容
INPUT
SQL》 SET ECHO OFF
371
…………………………………………………………Page 372……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
SQL》 SET FEEDBACK OFF
SQL》 SET HEADING OFF
SQL》 SPOOL TRUNC。SQL
SQL》 SELECT 'TRUNCATE TABLE ' || TABLE_NAME || ';'
2 FROM ALL_TABLES
3 WHERE OWNER = 'RYAN'
4 /
OUTPUT
TRUNCATE TABLE ACCT_PAY;
TRUNCATE TABLE ACCT_REC;
TRUNCATE TABLE CUSTOMERS;
TRUNCATE TABLE EMPLOYEES;
TRUNCATE TABLE HISTORY;
TRUNCATE TABLE INVOICES;
TRUNCATE TABLE ORDERS;
TRUNCATE TABLE PRODUCTS;
TRUNCATE TABLE PROJECTS;
TRUNCATE TABLE VENDORS;
如果你敢的话你就运行一下这个脚本
INPUT/OUTPUT
SQL》 SPOOL OFF
SQL》 SET FEEDBACK ON
SQL》 START TRUNC。SQL
Table Truncated。
Table Truncated。
Table Truncated。
Table Truncated。
Table Truncated。
Table Truncated。
Table Truncated。
372
…………………………………………………………Page 373……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
Table Truncated。
Table Truncated。
Table Truncated。
分析
你已经把所有的为 RYAN 所属的表的内容清除了 这很容易 如果你准备重新构建你
的表数据时你可以使用这项技术
技巧 当在一个计划中运行储如清除表之类的操作时 你必须对你将要清理的表做一个很
好的备份 即便你肯定你再也不需要它的时候也要这样做 是后也许会有人坚持要
求你恢复原来的数据
使用 SQL 来生成 SHELL 脚本
你也可以使用 SQL 来生成其它形式的脚本 比如说 SHELL 脚本 例如 ORACLE
RDBMS 服务可能会运行于 UNIX 环境下 这是比 PC 环境更大的代表 所以 UNIX 需要
对文件进行更为有效的管理 通过创建脚本你可以很容易地管理数据库的文件
下边的工作是删除在一个数据库中的表空间 尽管可以使用 SQL 来删除表空间 但是
与表空间相关的事实的的数据文件却必须在操作系统中才能删除
下一步是生成一个 SQL 脚本来删除表空间
INPUT
SQL》 SET ECHO OFF
SQL》 SET FEEDBACK OFF
SQL》 SET HEADING OFF
SQL》 SPOOL DROP_TS。SQL
SQL》 SELECT 'DROP TABLESPACE ' || TABLESPACE_NAME || ' INCLUDING
CONTENTS;'
2 FROM SYS。DBA_TABLESPACES
3 /
OUTPUT
DROP TABLESPACE SYSTEM INCLUDING CONTENTS;
DROP TABLESPACE RBS INCLUDING CONTENTS;
373
…………………………………………………………Page 374……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
DROP TABLESPACE TEMP INCLUDING CONTENTS;
DROP TABLESPACE TOOLS INCLUDING CONTENTS;
DROP TABLESPACE USERS INCLUDING CONTENTS;
然后你需要生成一个脚本文件以在表空间删除后在操作系统中删除数据库文件
INPUT/OUTPUT
SQL》 SPOOL OFF
SQL》 SPOOL RM_FILES。SH
SQL》 SELECT 'RM …F ' || FILE_NAME
2 FROM SYS。DBA_DATA_FILES
3 /
rm …f /disk01/orasys/db01/system0。dbf
rm …f /disk02/orasys/db01/rbs0。dbf
rm …f /disk03/orasys/db01/temp0。dbf
rm …f /disk04/orasys/db01/tools0。dbf
rm …f /disk05/orasys/db01/users0。dbf
SQL》 spool off
SQL》
分析
现在你已经生成了两个脚本 你可以运行脚本来删除表空间 然后在操作系统中运行
SHELL 脚本来删除相关的数据文件 你会发现有很多种方法来用 SQL 生成和管理非 SQL
的脚本
再建表和索引
尽管有许多工具可以帮助你再建表和索引 然而对于这目的你可以直接使用 SQL 来完
成 你可以从数据字典中获得所有的你需要重建的表和索引的信息 但是要有效地完成这
个工作没有过程语言 如