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

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

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




    假如你需要在你的程序中建立成千上万个查询的话                      你会发现它们中的 80%将会以 



SELECT 开头    而余下的 20%将在第二周中提到 



预览 



    在第二周中我们将会学习到数据库管理的新技能                   我们将会学习如何 



       l   建立和删除一个表 



       l   为你的朋友提供访问权限和有效地防止你的敌人 



       l   更新和删除表中的数据 



                                                                       156 


…………………………………………………………Page 157……………………………………………………………

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



第二周概貌 



这一周都讲些什么 



   在第一周我们讲了使用 SELECT 语句进行 SQL 的最基本的查询  从最简单的 SELECT 



语句开始   我们学习了如何从数据库中取得数据  然后我们学习了 SQL  中的函数  它们在 



的用处很大  例如在转换数据的格式或财务领域        然后你很快就学到了用不同的方法从数 



据库中取得数据    子句如 WHERE  ORDER  BY 和 GROUP  BY  允许你对查询进行定制以 



返回有特定要求的数据记录      你学习了归并操作以从不同的表中返回数据         当你需要运行 



多个查询且每个查询都需要前一个查询返回的内容时子查询是特别有用处的 



   在第二周我们将进一步地学习 SQL 的使用 



   l  第 8  天教你如何修改数据库中的数据    你也许很害怕向数据库中录入数据  但是 



     手工输入数据并不总是必须的       现代的数据库系统大多都支持你从其它的数据库 



     格式中导入或导出数据      此外  SQL  还提供了几个很有用的语句使你可以熟练地 



     操纵数据库中的数据 



   l  第 9 天你将学习如何建立和维护数据库中的表  你也将学习如何建立数据库和管 



     理数据库的磁盘空间 



   l  第 10 天将学习如何建立  维护  使用数据库的视图和索引 



   l  第 11 天将涉及事务处理  对数据库进行处理以及撤消对它的改动        它对于在线事 



     务处理程序非常有用 



   l  第 12 天的重点是数据库的安全性  拥有数据库安全性知识可以让你更有效地管理 



     数据库 



   l  第 13 天将学习如何在大型的应用程序中使用 SQL     内嵌型 SQL  常常运行于宿主 



     语言如 C  或 COBOL  上  此外 开放数据联接  ODBC 可以让你在应用程序中 



     写出在通过数据库驱动在不同的数据库系统上运行的代码  也将会提到一些 SQL 



      的高级特性 



   l  在第 14  天将会讨论如何使用动态 SQL   并用几个例子来演示如何在应用程序中 



     使用 SQL 



                                                   157 


…………………………………………………………Page 158……………………………………………………………

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



第八天      操作数据 



目标 



   今天我们来讨论一下数据操作问题  在今天中我们将学习以下内容 



       l 如何使用 INSERT UPDATE 和 DELETE 来处理数据 



       l 在操作数据时使用 WHERE 子句的重要性 



       l 从外部数据源中导入和导出数据的基本方法 



数据操作语句 



   到现在为止我们已经学习了从数据库出取得数据的每一种可能的操作              当获得数据以 



后  你可以在应用程序中使用或编辑它        在第一周主要讨论获得数据  但是       可能你会对 



如何向数据库中输入数据感兴趣       你也可能会很想知道如何来编辑数据         今天  我们将讨 



论三个关于如何对数据库中的表中的数据进行操作的三条语句  这三条语句是 



   INSERT  语句 



   UPDATE 语句 



   DELETE 语句 



   在过去  你也许使用过基于 PC 机的数据库系统  如 ACCESS    dBASE IV 和 FOXPRO 



这些产品提供了很好的输入      编辑和删除数据的工具  这就是 SQL 为什么提供了对数据进 



行编辑的基本语句可又允许用户使用应用程序自带的工具进行编辑的原因               SQL 的程序员 



应该具有将数据送入数据库中的能力  此外         大型的数据库系统常常不能按照数据库设计 



和编程人员的意图来进行设计       因为这些数据库系统是为大容量和多用户环境准备的           所 



以它的设计重点放在了如何优化查询和数据引擎上了 



   大多数商业化的数据库系统都提供了导入导出数据的工具            数据被存储在有分隔符的 



文本文件之中  格式化的文本文件常常存储着与表相关的信息           相关的工具如 ORACLE 的 



SQL*Loader SQL Server's bcp bulk copy 以Microsoft Acces 的导入和导出数据的工具都 



将在今天提到 



注  今天的例子是用 Personal  Oracle7 做的  请注意它与其它的命令解释器在语句上和数据 



                                                     158 


…………………………………………………………Page 159……………………………………………………………

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



   返回的形式上的不同之处 



插入语句 



   INSERT  语句允许你向数据库中输入数据           它有两种写法 



   INSERT    VALUES 和 INSERT SELECT 



INSERT VALUES 语句 



   该语句每次向表中输入一条记录             如何操作的规模小       只有几条语句需要输入时它是 



非常有用的     该语句的语法形式如下 



   SYNTAX 



       INSERT  INTO  table_name    (col1;  col2。。。)  VALUES    (value1;  value2。。。) 



   该语句的作用是向表中加以一个新的记录               其数值为你所指定的数值          使用该语句向 



表中插入数据时你必须遵循以下三条规则 



    l  你所要插入的数值与它所对应的字段必须具有相同的数据类型 



    l  数据的长度必须小于字段的长度  例如             你不能向一个长 40  个字符的字段中插入 



       一个长 80 个字符的字符串 



    l  插入的数值列表必须与字段的列表相对应               也就是说第一个数值在第一个字段 



       第二个数值在第二个字段 



例 8。1: 



   假定你有一个 COLLECTION      的表中存储着你所收集的材料  你可以用下边的语句来 



查看其中的内容 



   INPUT 



   SQL》 SELECT * FROM COLLECTION 



   OUTPUT 



      ITEM                   WORTH   REMARKS 



      NBA ALL STAR CARDS     300     SOME STILL IN BIKE SPOKES 



      MALIBU BARBIE          150     TAN NEEDS WORK 



      STAR WARS GLASS        5。5     HANDLE CHIPPED 



      LOCK OF SPOUSES HAIR   1       HASN'T NOTICED BALD SPOT YET 



   如果你想向表中加入一个新记录  你可以像这样写 



                                                                  159 


…………………………………………………………Page 160……………………………………………………………

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



    INPUTOUTPUT 



    SQL》 INSERT INTO COLLECTION (ITEM; WORTH; REMARKS) 



        VALUES('SUPERMANS CAPE'; 250。00; 'TUGGED ON IT') 



    1 row created。 



    你可以用一个简单的 SELECT 语句来验证插入的结果 



    INPUT/OUTPUT 



    SQL》SELECT * FROM COLLECTION 



    ITEM                      WORTH    REMARKS 



    NBA ALL STAR CARDS        300       SOME STILL IN BIKE SPOKES 



    MALIBU BARBIE             150      TAN NEEDS WORK 



    STAR WARS GLASS           5。5      HANDLE CHIPPED 



    LOCK OF SPOUSES HAIR      1        HASN'T NOTICED BALD SPOT YET 



    SUPERMANS CAPE            250      TUGGED ON IT 



分析 



    INSERT 语句并不需要列的名字            如果列的名字没有给出           SQL  会把数据添入对应的 



列号中     也就是说     SQL  会把第一个值插入到第一列中              把第二个值插入到第二列中             依 



此类推 



例 8。2 



    下边的语句将会像例 8。1 中的表中插入数值 



    INPUT 



    SQL》INSERT INTO COLLECTION VALUES 



    2   ('STRING';1000。00;'SOME DAY IT WILL BE VALUABLE'); 



        1 row created 



分析 



    为了表明它与例 8。1 的效果是相同的  你可以用下边的例子来对其进行验证 



    INPUT 



    SQL》 SELECT * FROM COLLECTION; 



    OUTPUT 



ITEM                      WORTH        REMARKS 



NBA ALL STAR CARDS        300          SOME STILL IN BIKE SPOKES 



MALIBU BARBIE             150          TAN NEEDS WORK 



                                                                          160 


…………………………………………………………Page 161……………………………………………………………

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



ITEM                     WORTH       REMARKS 



STAR WARS GLASS          5。5         HANDLE CHIPPED 



LOCK OF SPOUSES HAIR     1           HASN'T NOTICED BALD SPOT YET 



SUPERMANS CAPE           250         TUGGED ON IT 



STRING                   1000        SOME DAY IT WILL BE VALUABLE 



插入空值 



    在第几天的      建立和操作表      中你将会学到如何使用 SQL  的 CREATE  TABLE 语句来 



创建一个表      现在你需要知道的是当一个列被创建以后                 它可能一定的规则限制  其中之 



一就是它应该  或不应该  包含空值的存在                空值的意思就是该处数值为空             但不是零 — 



— 这属于整数范畴       或是空格 — — 这属于字符串范畴           而是说在空值处根本就没有数据存 



在   如果列被定义为 NOT  NULL       这时列中不允许有空值存在             则当你使用 INSERT     语 



句时必须在此列插入一个数值            如果你违反了这个规则  那么你将收到一个错误的信息 



警告  你可以在对应的空值列            规则上不允许为空值         插入空格     它不会被看为空值         而 



     且看起来该处并没有数据 



    INPUT 



    SQL》 insert into collection values 



        2    ('SPORES  MILDEW  FUNGUS';  50。00;  '  '); 



    OUTPUT 



     1 row inserted。 



分析 



    在使用空格来代替空值以后           你可以在选择语句中使用空格 



    INPUT/OUTPUT 



    SQL》 select * from collection 



      2  where remarks = ' '; 



            ITEM                     WORTH     REMARKS 



            SPORES MILDEW FUNGUS     50。00 



分析 



    返回的结果就好像在那里有一个空值一样                 只从输出上区别这里是空格还是空值是不 



太可能的 



                                                                     161 


…………………………………………………………Page 162……………………………………………………………

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



如果 REMARKS 列被定义为不允许空值  那么当输入下边的语句 



INPUT/OUTPUT 



SQL》 INSERT INTO COLLECTION 



    2    VALUES('SPORES  MILDEW  FUNGUS';50。00;NULL); 



你将会得到一个错误信息 



INSERT INTO COLLECTION 



                        * 



ERROR at line 1: 



ORA…01400: mandatory (NOT NULL) column is missing or NULL during insert 



注  请注意语法        数字和空值不需要引号  而字符型数据则需要引号 



插入唯一值 



    在许多数据库管理系统中都允许你建立一个具有唯一值属性的列  这个属性的意思就 



是在当前的表中当前列的内容不得出现重复                      这个属性在当向一个已有的表中插入或更新 



数据时可能会导致问题的产生                见下例 



    INPUT 



    SQL》 INSERT INTO COLLECTION VALUES('STRING'; 50; 'MORE STRING'); 



    OUTPUT 



    INSERT INTO COLLECTION VALUES('STRING'; 50; 'MORE STRING') 



                            * 



    ERROR at line 1: 



    ORA…00001: unique constraint (PERKINS。UNQ_COLLECTION_ITEM) violated 



分析 



    在本例中你试图在 COLLECTION  表的 ITEM  列中插入另外一个叫 STRING  的项目 



由于ITEM 列已经被定义为一个唯一的值  所以返回了一个错误结果  对于这个问题 ANSI 



SQL 没有提供解决方法  但许多商业化的解释器会对此进行扩充                             如下例 



    IF NOT EXISTS (SELECT * FROM COLLECTION WHERE NAME = 'STRING' 



    INSERT INTO COLLECTION VALUES('STRING'; 50; 'MORE STRING') 

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