友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
第三电子书 返回本书目录 加入书签 我的书架 我的书签 TXT全本下载 『收藏到我的浏览器』

SQL 21日自学通(V3.0)(PDF格式)-第45部分

快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!

INPUT 



1》 begin transaction 



2》 select CUSTOMERS。Name; BALANCES。Curr_Bal; BALANCES。Account_ID 



3》 from CUSTOMERS; BALANCES 



4》 where CUSTOMERS。Name = 〃Rebecca Little〃 



5》 and CUSTOMERS。Customer_ID = BALANCES。Account_ID 



6》 go 



    该对话框允许用户改变当前的结算账号  当你将该数据返回给数据库以后并按下 OK 



按钮时  UPDATE 语句将会运行 



INPUT 



1》 update BALANCES set Curr_BAL = 'new…value' WHERE Account_ID = 6 



2》 mit transaction 



3》 go 



如果用户选择了 CANCEL 按钮  那么将会执行 ROLLBACK 的语句 



INPUT 



1》 rollback transaction 



2》 go 



    ROLLBACK 语句将会终止整个事务               当存在嵌套事务时  ROLLBACK 将会终止掉全 



部事务     系统将会返回到事务开始的最初状态 



    如果当前没有活动的事务时  ROLLBACK 或 MIT  语句将不会对数据库产生任何 



                                                                              232 


…………………………………………………………Page 233……………………………………………………………

SQL 21  日自学通(V1。0)                                                翻译人    笨猪 



作用    你可以认为这是一个无效的命令 



    在 MIT    语句运行以后         在事务中的所有动作都会得到确认                   这时在使用 



ROLLBACK 命令就太晚了 



在事务中使用保存点 



    在事务中使用 ROLLBACK  可以取消整个的事务  但是你也可以在你的事务当中使用 



语句进行      部分地确认       在 Sybase 和 Oracle 中都允许你在当前事务中设一个保存点  从 



这一点开始       如果你使用了 ROLLBACK  命令          那么系统将会回到保存点时的状态                而在 



保存点之前的语句将会得到确认  在 ORACLE 中创建一个保存点的语法格式如下 



SYNTAX 



    SAVEPOINT savepoint_name; 



在 SYBASE 中创建保存点的语法格式如下 



SYNTAX 



    save transaction savepoint_name 



下边是使用 ORACLE 语法的例子 



INPUT 



    SQL》 SET TRANSACTION 



    SQL》 UPDATE BALANCES SET CURR_BAL = 25000 WHERE ACCOUNT_ID = 5 



    SQL》 SAVEPOINT save_it 



    SQL》 DELETE FROM BALANCES WHERE ACCOUNT_ID = 5 



    SQL》 ROLLBACK TO SAVEPOINT save_it 



    SQL》 MIT 



    SQL》 SELECT * FROM BALANCES 



结算平衡表的内容如下 



       Average_Bal                Curr_Bal                 Account_ID 



         1298。53                   854。22                       1 



         5427。22                   6015。96                     2 



         211。25                    190。01                      3 



          73。79                     25。87                      4 



         1285。90                  25000。00                      5 



                                                                         233 


…………………………………………………………Page 234……………………………………………………………

SQL 21  日自学通(V1。0)                                                            翻译人     笨猪 



           1234。56                       1543。67                           6 



           345。25                         348。03                           7 



           1250。76                       1431。26                           8 



     下边是使用 Sybase 语法的例子 



INPUT: 



1》 begin transaction 



2》 update BALANCES set Curr_Bal = 25000 where Account_ID = 5 



3》 save transaction save_it 



4》 delete from BALANCES where Account_ID = 5 



5》 rollback transaction save_it 



6》 mit transaction 



7》 go 



1》 select * from BALANCES 



2》 go 



        Average_Bal                      Curr_Bal                     Account_ID 



           1298。53                        854。22                           1 



          5427。22                        6015。96                           2 



           211。25                         190。01                           3 



            73。79                         25。87                            4 



           1285。90                       25000。00                          5 



           1234。56                       1543。67                           6 



           345。25                         348。03                           7 



           1250。76                       1431。26                           8 



     在上边的例子中创建了一个叫 SAVE_IT 的保存点  UPDATE 语句更新了结算平衡表中 



的 CURR_BAL 列  你在其后设置了一个保存点  在保存之后                              你又运行了 DELETE 命令 



系统退回到了保存点处               之后你对事务用 MIT  命令进行了确认  结果所有在保存点 



之前的命令得到了确认 



     如果你在其后又使用了 ROLLBACK  命令                     那么将会取消当前的事务而不会有任何的 



改变 



     在 ORACLE 中的例子如下 



INPUT 



SQL》 SET TRANSACTION 



                                                                                       234 


…………………………………………………………Page 235……………………………………………………………

SQL 21  日自学通(V1。0)                                                                  翻译人     笨猪 



SQL》 UPDATE BALANCES SET CURR_BAL = 25000 WHERE ACCOUNT_ID = 5 



SQL》 SAVEPOINT save_it 



SQL》 DELETE FROM BALANCES WHERE ACCOUNT_ID = 5 



SQL》 ROLLBACK TO SAVEPOINT save_it 



SQL》 ROLLBACK 



SQL》 SELECT * FROM BALANCES 



BALANCE 表的内容如下 



Average_Bal                      Curr_Bal                         Account_ID 



1298。53                          854。22                           1 



5427。22                          6015。96                          2 



211。25                           190。01                           3 



73。79                            25。87                            4 



1285。90                          1473。75                          5 



1234。56                          1543。67                          6 



345。25                           348。03                           7 



1250。76                          1431。26                          8 



Sybase SQL 语法的例子如下 



INPUT 



1》begin transaction 



2》update BALANCES set Curr_Bal = 25000 where Account_ID = 5 



3》save transaction save_it 



4》delete from BALANCES where Account_ID = 5 



5》rollback transaction save_it 



6》rollback transaction 



7》go 



1》select * from BALANCES 



2》go 



Average_Bal                      Curr_Bal                         Account_ID 



1298。53                          854。22                           1 



5427。22                          6015。96                          2 



211。25                           190。01                           3 



73。79                            25。87                            4 



                                                                                             235 


…………………………………………………………Page 236……………………………………………………………

SQL 21  日自学通(V1。0)                                                       翻译人    笨猪 



1285。90                      1473。75                     5 



1234。56                      1543。67                     6 



345。25                       348。03                      7 



1250。76                      1431。26                     8 



总结 



    事务可以被定义为一个有组织的工作单元                       事务通常会执行一系列的以前学过的操作 



如果由于一些原因使得操作没有如所期望地执行  那么可以在事务中取消这些操作                                         反之 



如果操作全部正确执行了  那么事务中的工作可以确认 



    可以使用 ROLLBACK 命令来取消事务                 确认事务的命令为 MIT              SQL 用非常相 



似的语法来支持这两类过程 



SYNTAX 



    BEGIN TRANSACTION 



              statement  1 



              statement  2 



              statement  3 



    ROLLBACK TRANSACTION 



或 



SYNTAX 



    BEGIN TRANSACTION 



              statement  1 



              statement  2 



              statement  3 



    MIT TRANSACTION 



问与答 



问  如果我有一组事务  其中一个是不成功的                       我是否可以确认其它的事务过程 



答   不可以      必须整组的事务都是成功的才可以 



问  在使用的 MIT  命令以后  我发现我犯了一个错误                          那么我怎样才能更正这个错 



                                                                                 236 


…………………………………………………………Page 237……………………………………………………………

SQL 21  日自学通(V1。0)                                         翻译人   笨猪 



误 



答  使用 DELETE   INSERT  或 UPDATE 语句  ROLLBACK 在这时是不行的 



问  在怎个事务结束以后我都必须使用 MIT 命令确认吗 



答   不必  但是在确认没有错误而且在之前没有事务在运行时使用 MIT 会更安全 



校练场 



1   在嵌套的事务中      是否可以使用 ROLLBACK  命令来取消当前事务并回退到上级事务 



   中  为什么 



2   使用保存点是否可以保存事务的一部分             为什么 



3   MIT 命令是否可以单独使用         它一定要嵌套吗 



4   如果你在 MIT 命令后发现的错误          你是否还可以使用 ROLLBACK 命令 



4  在事务中使用保存点是否可以自动地将之前的改动自动地保存 



练习 



1   使用 PERSONAL ORACLE7  的语法来更正下边的语法 



   SQL》 START TRANSACTION INSERT INTO CUSTOMERS VALUES ('SMITH'; 'JOHN') 



   SQL》 MIT 



2   使用 PERSONAL ORACLE7  的语法来更正下边的语法 



   SQL》 SET TRANSACTION 



             UPDATE  BALANCES  SET  CURR_BAL  =  25000 



   SQL》 MIT 



3   使用 PERSONAL ORACLE7  的语法来更正下边的语法 



   SQL》 SET TRANSACTION 



             INSERT  INTO  BALANCES  VALUES    ('567。34';  '230。00';  '8') 



   SQL》 ROLLBACK 



                                                                  237 


…………………………………………………………Page 238……………………………………………………………

SQL 21  日自学通(V1。0)                           翻译人  笨猪 



第 12 天    数据库安全 



   今天我们来讨论一下数据库的安全问题      我们已经很清楚地看到不同的 SQL 语句可以 



使我们具有管理关系型数据库系统的能力       与我们到今天为止所学习的其它主题一样        一 



个数据库管理系统是如何在不同的产品中实现安全的呢         对于这个问题我们今天将以流行 



的 ORACLE 7 数据库系统为例 到今天的结束时我们将具有以下能力 



   l  创建用户 



   l  更改密码 



   l  创建角色 



   l  为安全的目的而使用视图 



   l  在视图中使用同义词 



前提    数据库管理员 



   安全问题在数据库的设计过程中常常会被忽略  许多计算机工作人员在进入计算机领 



域时有计算机的编程知识或硬件知识  并且他们也会将精力注重于这一方面           例如  如果 



你的老板要求你开展一个新的项目      而这个项目很明显地需要一个关系型的数据库时         那 



你第一步想要做的工作是什么      在确定的相应的硬件和软件平台以后  你也许会开始设计 



项目中的基本的数据库结构了  这一阶段会分给许多人去做         其中一些人是图形用户界面 



设计者  另一些底层组件的设计者     也许你在读过本书以后会要求编写用于提供给客户应 



用程序所使用查询的 SQL 代码   而与这项任务随之而来的是你可能会成为一个数据库的管 



理和维护人员 



   在很多时候   当我们在真正实施这个项目时我们需要考虑或计划到一点
返回目录 上一页 下一页 回到顶部 1 1
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!