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

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

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





ROWID  字段作为主关键字有许多理由           首先   对于整数值的归并操作要远远快于对一个 



长度为 80 个字符的字符串的归并操作           因为整数的存储长度小于字符串  所以最终归并的 



结果集也将小于字符串的归并结果集  此外的一个好处是使用 ROWID                   字段你可以看到表 



的组织情况  而字符则会产生数字输入的问题  例如                当一个人输入了 111  First  Street  而 



                                                                183 


…………………………………………………………Page 184……………………………………………………………

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



另一人输入了  111  1st  Street 时会有什么情况发生  如果又有一个输入了 111  1st  St。呢  在 



今天的图形用户界面环境下                    正确的字符串会被输入到一个列表框中  当用户从列表框中 



选择的时候          代码会将字符串变换成为一个唯一的 ID 号并将这个号码存储在数据库中 



     到现在为止          你可以用你在今天所学过的东西来创建一个表了                                 随后我们将在今天使 



用这些表  所以你应该在表中输入一些数据                             使用昨天的 INSERT           命令可以向表中加入表 



9。3   9。4 和 9。5 中的数据 



     INPUT/OUTPUT 



     SQL》create database PAYMENTS 



     Statement processed。 



     SQL》create table BILLS ( 



         2      NAME  CHAR(30)  NOT  NULL; 



         3      AMOUNT  NUMBER; 



         4      ACCOUNT_ID  NUMBER  NOT  NULL); 



     Table created。 



     SQL》  create table BANK_ACCOUNTS ( 



         2      ACCOUNT_ID  NUMBER  NOT  NULL; 



         3      TYPE  CHAR(30); 



         4      BALANCE  NUMBER; 



         5      BANK  CHAR(30)); 



     Table created。 



     SQL》  create table PANY ( 



         2      NAME  CHAR(30)  NOT  NULL; 



         3      ADDRESS  CHAR(50); 



         4      CITY  CHAR(30); 



         5      STATE  CHAR(2)); 



     Table created。 



                            Table 9。3。 Sample data for the BILLS table。 



                    Name                    Amount                Account_ID 



               Phone pany                  125                       1 



               Power pany                   75                       1 



                                                                                             184 


…………………………………………………………Page 185……………………………………………………………

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



                     Name                   Amount                 Account_ID 



                 Record Club                   25                       2 



              Software pany                250                        1 



              Cable TV pany                 35                        3 



                  Table 9。4。 Sample data for the BANK_ACCOUNTS table。 

                Account_ID      Type               Balance      Band 



                 1               Checking          500          First Federal 



                2               Money Market        1200        First Investor's 



                3                Checking          90           Credit Union 



                       Table 9。5。 Sample data for the PANY table 

                       Name                Address             City        State 



                Phone pany          111 1st Street     Atlanta         GA 



                Power pany          222 2nd Street     Jacksonville    FL 



                Record Club            333 3rd Avenue     Los Angeles     CA 



                Software pany       444 4th Drive      San Francisco   CA 



                Cable TV pany       555 5th Drive      Austin          TX 



表的存储与尺寸的调整 



     大多数 RDBMS         都设定了表的默认大小和存储的定位                          如果你没有指定表的大小和存 



储大小它就会采用默认值  它可能是非常不合适的                                  特别对于大型的表来说更是如此                       默 



认大小根据解释器和不同而不同                       下边是一个在创建表时使用 STORAGE 子句的例子                               对 



于 ORACLE 而言 



     INPUT 



     SQL》      CREATE  TABLE  TABLENAME 



         2        (COLUMN1        CHAR      NOT  NULL; 



         3          COLUMN2        NUMBER; 



         4          COLUMN3        DATE) 



         5          TABLESPACE  TABLESPACE  NAME 



         6          STORAGE 



         7          INITIAL  SIZE; 



         8          NEXT  SIZE; 



         9          MINEXTENTS  value; 



                                                                                              185 


…………………………………………………………Page 186……………………………………………………………

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



      10          MAXEXTENTS  value; 



      11          PCTINCREASE  value); 



    OUTPUT 



    Table created。 



分析 



    在 ORACLE  中你可以指定需要存放的表的大小  定夺的依据是可用空间的大小  经常 



是由数据库管理人员来决定  INITIAL SIZE 表的初始长度  最初的分配空间                     NEXT SIZE 



是指追加的长度         MINEXTENTS  和 MAXEXTENTS    用于指定表的最小和最大长度 



PCTINCREASE 则指明表每次追加的百分比或进行下一次追加 



用一个已经存在的表来建表 



    CREATE  TABLE 是最为通用的建表的方法  然而  在一些数据库管理系统中提供了一 



种可供选择的方法 — — 使用已经存在的表中的格式和数据                    当你对表进行临时改动需要将 



数据选出时这种方法是很有用的              当你要创建的表与已有的表类似并且其内容也类似时它 



也非常有用  你不必须重新输入这些信息                在 ORACLE 中它的语法如下 



SYNTAX 



CREATE TABLE NEW_TABLE(FIELD1; FIELD2; FIELD3) 



           AS (SELECT FIELD1; FIELD2; FIELD3 



           FROM OLD_TABLE  



    它的语法允许你建立一个字段类型与已有表中选出的字段类型相同的新表                            你也可以 



对新表中的字段进行重命名 



INPUT/OUTPUT 



SQL》  CREATE TABLE NEW_BILLS(NAME; AMOUNT; ACCOUNT_ID) 



       AS (SELECT * FROM BILLS WHERE AMOUNT 《 50); 



       Table created。 



分析 



    上边的语句用 BILL 表中 AMOUNT  小于 50 的记录创建了一个新表 



    在一些数据库系统中你也可以使用下边的语法 



SYNTAX 



                                                                      186 


…………………………………………………………Page 187……………………………………………………………

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



INSERT NEW_TABLE 



SELECT  from OLD_TABLE   



    上边的语法格式将会严格地按照原有表的字段格式和数据建立一个新表                             下边用 SQL 



Server  的Transact…SQL 来对它进行举例 



INPUT 



INSERT NEW_BILLS 



1》 select * from BILLS where AMOUNT 《 50 



2》 go 



    go 语句在 SQL  SERVER  中是处理 SQL  缓冲区内指令的命令               它的作用等同于在 



ORACLE 中的分号 



ALTER TABLE 语句 



    没有道理为每件事对你的数据库进行多次的设计  但又确实需要对数据库和应用程序 



进行改动     那么 ALTER  TABLE 语句可以让数据库的设计者或设计人员在表创建以后修改 



它的结构 



    ALTER TABLE 语句可以帮助你做两件事 



    l   加入一列到已经存在的表中 



    l   修改已经存在的表中的某一列 



    ALTER TABLE 语句的语法如下 



SYNTAX 



    ALTER TABLE table_name   



    下边的命令会将 BILL 表中的 NAME 字段改为长度 40 个字符 



INPUT/OUTPUT 



    SQL》    ALTER  TABLE  BILLS    MODIFY  NAME  CHAR(40); 



    Table altered。 



注   你可以增加或减少某一列的长度  但是你不能将它减少到使修改后的长度小于其中的 



已有数据长度 



下边的语句是向 NEW_BILLS  表中加入一个新列 



                                                                       187 


…………………………………………………………Page 188……………………………………………………………

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



INPUT/OUTPUT 



   SQL》    ALTER  TABLE  NEW_BILLS 



       2      ADD  MENTS  CHAR(80); 



   Table altered。 



分析 



   这条语句会加入一个叫 MENTS          的长度为 80  个字符的字段       该字段会加在已有 



字段的右边 



   在使用 ALTER TABLE 时会有许多限制  你不能用它来对一个数据库增加或删除字段 



它可以将一个列由NOT NULL 改变为NULL 而不必使用其它方法 但是如果想把列由NULL 



改变为 NOT  NULL 时则要求指定的字段中不能有 NULL 值            想把某一列由 NOT  NULL 改 



变为 NULL 可以使用下边的语法 



SYNTAX 



   ALTER TABLE table_name  MODIFY (column_name data_type NULL) 



如果想把一列由 NULL 改变为 NOT NULL        你必需经过以下步骤 



    1  确认要改变的列中有没有 NULL 值 



   2   删掉你所发现的任何 NULL 值  删除该记录           更新这一记录等等 



   3   使用 ALTER TABLE 命令 



   注  在一些数据库管理系统中允许使用 MODIFY 子句               另外一些则不可以  而又有 



       一些在 ALTER  TABLE  中加入了其它的子句  在 ORACLE  中  你甚至可以修 



       改表的存储参数  请检查你的解释器以找出它对 ALTER TABLE 的确实用法 



DROP TABLE 语句 



   SQL 提供了一个可以从数据库去彻底地移去某个表的命令  DROP TABLE 可以从数据 



库中删除一个指定的表以及与之相关联的索引和视图  在第 10  天会进行更详细的讨论 



一旦这个命令发出以后         就没有办法可以彻消它         它最常用在你创建一个临时表  并且已 



经进行完毕了你的全部计划工作的时候  DROP TABLE 语句的语法格式如下 



   SYNTAX 



   DROP TABLE table_name 



    下边是如何删掉一个叫 NEW_BILLS  表的实例 



                                                                  188 


…………………………………………………………Page 189……………………………………………………………

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



   INPUT/OUTPUT 



   SQL》DROP TABLE NEW_BILLS 



   Table dropped。 



分析 



   请注意    系统没有给出你提示  该命令不会问你 Are  you  sure?    Y/N  但是删除操作 



已经执行  表已经永远地删除了 



警告 



   如果你执行了 



SQL》 DROP TABLE NEW_BILLS 



   如果你想正确地删除一个表  那么在删除表的时候最好给出它的所有都                    所属的数据 



库  或工程的名字  推荐的使用方法如下 



   SQL》 DROP TABLE OWNER。NEW_BILLS 



   我只所以强调这种使用方法是因为我曾经挽救过一个被错误删除了的表格                     它被删除 



的原因是因为没有准确地给出其所属工程的名字  修复那个数据库用了八个小时  我们一 



直工作到了深夜 



DROP DATABASE 语句 



   一些数据库管理系统也提供了删除数据库  DROP  DATABASE           的语句  它的使用方 



法与 DROP TABLE 相同  语法如下 



   DROP DATABASE database_name 



   请不要删掉 BILLS 数据库     我们在今天的后边还要用它  而且在第 10 天也要用 



注  不同的关系数据库解释器提供了不同的删除数据库的方法  在数据库被删除以后                      我 



   们需要清理掉操作系统用以构建数据库的文件 



练习 9。2 



   创建一个数据库并在其中创建一个表  试验 DROP TABLE 和 DROP DATABASE 命令 



数据库系统是否会允许你这样做          单文件的数据库系统如 ACCESS  是不支持这个命令的 



数据库包含在一个单一的文件中          如果想建立一个数据库  你必须用系统提供的菜单选项 



如果想删掉它     只需简单地从系统中删掉这个文件就可以了 



                                                            189 


…………………………………………………………Page 190……………………………………………………………

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



总结 



   第 9  天讲述了数据处理语言  DML  的主要内容  具体说来是你学习了五个新的语句 



CREATE DATABASE CREATE TABLE ALTER TABLE DROP TABLE DROP DATABASE 



在今天的课程中我们也讨论了一个好的数据库设计方案的重要性 



   当你在创建并设计一个数据库的时候数据字典是一个重要的文档资料  字典中有对数 



据库的详细的描述    包括  表  字段  视图   索引  存储过程  触发机制等等    一个完备 



的数据字典中应该有对数据库中的每一个内容的详细注释  每当你对数据库进行过修改以 



后你都应及时的更新数据字典 



   在使用数据库处理语句时     设计一个好的数据库是非常重要的       把数据分组逻辑组并 



建立主关键字以使其它的逻辑组正确地识别它  可以使用外部关键字来指向该表的主关键 



字或在该表中用外部关键字与其它的表相关联 



   我们已经知道了建立数据库语句不是一个数据库系统的必需内容            因为不同的数据库 



供应商有不同的数据库组织形式       每一种解释器都有它们自己的特点和选项        从而导致了 



建立数据库语句的截然不同      只使用 CREATE  DATABASE  database_name 可以在大多数系 



统中用默认的参数来创建一个默认的数据库        而 DROP  DATABASE 语句则可以永久地删 



除一个数据库 



   使用 CREATE  TABLE  语句可以建立一个新的表 使用该命令你可以建立字段并定义 



它们的数据类型    在一些数据库管理系统中你还可以指定字段的其它属性          例如是否它可 



以接受空值以及它的内容是否在本表中应该是唯一的  而 ALTER  TABLE 语句可以对已存 



在的表的结构进行修改  DROP TABLE 语句可以永久地删除一个表格 



问与答 



   问  为什么 CREATE DATABASE 语句在不同的数据库中使用方法是不同的 



   答 这是因为不同的数据库系统在建立数据库时的实际过程是不同的            基于 PC  机的 



     小型数据库系统通常依赖文件来建立某些应用程序          而在大型服务器上运行的分 



     布式数据库中的需用数据库文件通常是分布在多个磁盘驱动器上的             当你的代码 



     访问数据库的时候     运行于电脑上的数据库程序不会像访问你的磁盘上的文件那 



     样直接   更大的数据库系统还要对磁盘的空间进行估算以支持一些特性如安全性 



                                                   190 


…………………………………………………………Page 191……………………………………………………………

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



       传输控制以及内嵌于数据库的存储过程              当你的程序访问数据库时  数据库的服 



       务程序通常需要对你的请求          通常与其它的请求一起         经过复杂的中间过程才会 



       返回数据    这一主题将在第 3      周讨论   现在  你应该知道为什么不同的数据库系 



       统建立和管理数据库的方法不同的 



问  我能否建立一个临时表并且的工作完成后它会自动地删除 



答  可以    许多数据库管理支持临时表的概念  该类型的表可以在你的过程运行结束或你 



    使用 DROP TABLE 语句后删除  我们将在第 14 天的  动态应用 SQL          中讨论临时表 



问  我是否可以用 ALTER TABLE 语句来删除一个表 



答  不行    该语句只可以用来增加或修改表中的某一列               如果你想删除一列       你可以建立 



   一个新表并将旧表中的数据有选择地复制到新表中然后再删除旧表 



校练场 



   1   ALTER DATABASE 语句经常用在修改已有表的结构上  对不对 



   2   DROP TABLE 语句与 DELETE FROM  的作用是相同的  对不对 



   3   可以使用 CREATE TABLE 命令向数据库中加入一个新表           对不对 



   4   为什么下边的语句是错误的 



         INPUT 



                 CREATE TABLE new_table ( 



                 ID NUMBER 



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