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

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

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



           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 



                 FIELD1 char(40) 



                 FIELD2 char(80) 



                 ID char(40) 



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



         INPUT 



                 ALTER DATABASE BILLS ( 



                 PANY char(80)) 



   6   当一个表建立时  谁是它的所有者 



   7   如果字符型列的长度在不断变化          如何才能做出最佳的选择 



   8   表名是否可以重复 



                                                                 191 


…………………………………………………………Page 192……………………………………………………………

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



练习 



   1  用你喜欢的格式向 BILLS       数据库中加入两个表         名字分别叫 BANK     和 



      ACCOUNT_TYPE  BANK 表中应该包含有 BANK_ACCOUNT     表中 BANK  字段 



      的 信 息   ACCOUNT_TYPE 表 中 也 应 该 包 含 有  BANK_ACCOUNT  表 中 



      ACCOUNT_TYPE 字段的信息  试着尽可以地减少数据的数量 



   2  使用你已经创建的五个表        BILLS BANK_ACCOUNTS  PANY   BANK 



      ACCOUNT_TYPE  改为表的结构以用整数型字段作为关键字以取代字符型字段 



      作为关键字 



   3  使用你所知道的 SQL 的归并知识 见第 6 天 表的归并          写几个查询来归并 BILLS 



      数据库中的几个表 



                                                           192 


…………………………………………………………Page 193……………………………………………………………

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



第 10 天  创建视图和索引 



目标 



   今天我们将要讨论的内容对于一些有 SQL 有一定了解的程序员或数据库管理人员来说 



可能是新东西     从第 1 天到第 8 天  我们主要学习了如何使用 SQL 在关系数据库中进行基 



本的工作  在第 9   天我们讨论了数据库的设计  表的创建以及其它的数据处理语句               所有 



这些内容的对象     表  数据库   记录   字段   的共同之处在于— — 它们是存在于磁盘上的 



物理对象    今天我们来学习 SQL  的两个新的特性  它允许你以于数据在磁盘上的存储不同 



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