友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第66部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
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 来完
成 你可以从数据字典中获得所有的你需要重建的表和索引的信息 但是要有效地完成这
个工作没有过程语言 如 PL/SQL 或 SHELL 脚本 的支持是不行的
我们可以在一个 SHELL 脚本中使用内嵌的 SQL 过程语言函数中需要插入适当的语
法成份 比如逗号 脚本必须足够地聪明以知道哪里是最后一个逗号 因为在最后一个逗
号的后边就没有逗号了 脚本也必须知道在哪些地方需要放置括号 在用数据字典重新生
374
…………………………………………………………Page 375……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
成对象的时候 SEEK 工具是很有用的 不管你是使用 C Perl shell scripts COBOL 还是
PL/SQL
总结
直接地从数据库中生成语句可以避免许多单调乏味的输入 SQL 语句的工作 不管你做
什么工作 使用 SQL 生成技术都可以在你的某个工作阶段减少你的工作量
如果你已经学习了今天的基本内容— — 尽管这些例子是使用 ORACLE 来完成的 你可
以在其它的关系数据库系统中应用这一概念 请检查你的数据库解释器和数据字典的结构
以找出它们与本书中例子的不同之外 如果你开明的话 你会发现许多生成 SQL 脚本的方
法 从简单的语句到高度复杂的系统管理中都有
问与答
问 我如何才能决定是手工写 SQL 还是来生成它
答 问你自己下边的问题
你解决问题时使用该语句的频繁程度如何
在写母语句是否比写子语句耗用更多的时间
问 生成 SQL 语句时我有哪些表可供选择
答 你可以选择任何一个你可以访问的表 这不管这些表是否为你所有或它是否在数
据字典中 你可以选择所有在你数据库中的有效对象 比如视图或快捷方式
问 我在生成 SQL 语句是是否有限制
答 对于大多数的语句你既可以手工写出也可以生成 请检查你的解释器看一下看它
是否有输出到文件选项以及输出格式是否是你所需要的 切记 在生成输出文件后你应该
手工修改一下文件的内容
校练场
1 你生成 SQL 的来源有哪两个
2 下边的 SQL 语句是否可以工作 它会输出什么
SQL》 SET ECHO OFF
375
…………………………………………………………Page 376……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
SQL》 SET FEEDBACK OFF
SQL》 SPOOL CNT。SQL
SQL》 SELECT 'COUNT(*) FROM ' || TABLE_NAME || ';'
2 FROM CAT
3 /
3 下边的 SQL 语句是否可以工作 它会输出什么
SQL》 SET ECHO OFF
SQL》 SET FEEDBACK OFF
SQL》 SPOOL GRANT。SQL
SQL》 SELECT 'GRANT CONNECT DBA TO ' || USERNAME || ';'
2 FROM SYS。DBA_USERS
3 WHERE USERNAME NOT IN ('SYS';'SYSTEM';'SCOTT')
4 /
4 下边的 SQL 语句是否可以工作 它会输出什么
SQL》 SET ECHO OFF
SQL》 SET FEEDBACK OFF
SQL》 SELECT 'GRANT CONNECT; DBA TO ' || USERNAME || ';'
2 FROM SYS。DBA_USERS
3 WHERE USERNAME NOT IN ('SYS';'SYSTEM';'SCOTT)
4 /
5 在运行生成的 SQL 时最为将 FEEDBACK 设置为 ON 对不对
6 从 SQL 中生成 SQL 语句时 必须将输入的结果重新定向到一个文件中 对不对
7 在生成 SQL 语句用以对表的内容进行删减时 你必须先确认自己已经对所要删减
的表作了很好的备份 对不对
8 什么是 ED 命令
9 SPOLL OFF 命令是做什么的
练习
1 使用 SYS。DBA_USERS 视图 在 PERSONAL ORACLE 7 中 写一个语句来生成一
376
…………………………………………………………Page 377……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
系列 GRANT 语句为下边的五个用户 John Kevin Ryan Ron 和 Chris 授权 使
他们可以访问 History_tbl 表 在写语句时对应的用户名用 USERNAME 来代替
2 用本章给出的例子作指引 写一些 SQL 来创建一些可以生成你能使用的 SQL 语句
377
…………………………………………………………Page 378……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第 18 天 PL/SQL 简介
目标
PL/SQL 是一项 ORACLE 的技术 它可以让 SQL 像过程型语言一样工作 到今天的结
束 你将
l 对 PL/SQL 有一个基本的了解
l 明白 PL/SQL 的特点以及它与标准的 SQL 的区别
l 知道 PL/SQL 编写程序的基本原理
l 可以写简单的 PL/SQL 程序
l 知道如何处理在 PL/SQL 编程中的错误
l 知道如何在真实的世界中使用 PL/SQL
入门
从对标准的 SQL 进行介绍是一种入门 PL/SQL 或 SQL 的方法 SQL 是一种可以让
关系数据库用户以一种直接的方式来访问数据库的方法 你可以使用 SQL 来对数据库进行
查询和修改其中的表 在你写 SQL 语句的时候 你可以告诉数据库你要做什么 而不是如
何去做 优化器会自己决定采用一种最有效的方法来执行你的语句 如果你向数据库中发
送了一系列标准的 SQL 语句 服务将会按语句的先后次序来执行它们
PL/SQL 是 ORACLE 的过程型语言 它由标准的 SQL 语句和一系列可以让你在不同的
情况下对 SQL 语句的执行进行控制的命令组成 PL/SQL 也可以在运行时捕获错误 储如
LOOP 和 IF THEN ELSE 语句让 PL/SQL 具有了第三代编程语言的能力 PL/SQL
也可以以交互方式写出 用户友好型界面会把数值赋给它的变量 你可以使用许多种预定
义的包 它们可以将信息显示给用户
今天的内容主要包括 PL/SQL 的以下特性
l 程序员可以定义在语句中使用的变量
l 程序员可以使用错误控制例程来访止程序的意外中断和退出
l 程序员可以写交互式程序来接受来自用户的输入
378
…………………………………………………………Page 379……………………………………………………………
SQ
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!