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

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

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




   3  下边的语句有什么错误 



   UPDATE COLLECTION (〃HONUS WAGNER CARD〃 25000; 〃FOUND IT〃) 



   4  如果执行下边的语句会有什么结果 



   SQL》 DELETE * FROM COLLECTION; 



   5  如果执行下边的语句会有什么结果 



   SQL》 DELETE FROM COLLECTION; 



   6  如果执行下边的语句会有什么结果 



   SQL》 UPDATE COLLECTION SET WORTH = 555 



   SET REMARKS = 'UP FROM 525'; 



   7  下边的语句是否会工作 



   SQL》 INSERT INTO COLLECTION SET VALUES = 900 WHERE ITEM = 'STRING' 



   8  下边的语句是否会工作 



   SQL》 UPDATE COLLECTION SET VALUES = 900 WHERE ITEM = 'STRING' 



练习 



      1  试着向一个表中插入一个不正确的数据类型            看一下出错信息      然后再插入一 



        个正确的数据类型 



      2  试着使用你的数据库系统将某个表导出为其他库格式               然后再把它导入      熟悉 



        一下你的数据库系统的导入与导出操作            并试着用其它数据库操作导出文件 



                                                             175 


…………………………………………………………Page 176……………………………………………………………

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



第九天      创建和操作表 



目标 



   在今天我们将学习创建数据库的知识       在第九天我们将学习 CREATE   DATABSE 



CREATE  TABLE ALTER  TABLE DROP  TABLE 以及 DROP  DATABASE 语句 它们被 



子统称为数据定义语句      与之相对应   SELECT UPDATE INSERT DELETE 被称为数 



据操作语句    到今天结束之时  我们将学会以下内容 



      l  建立关键字段 



      l  建立一个数据库以及在其中建表 



      l  表的建立  修改与删除 



      l  向数据库中添加数据 



      l  修改数据库中的数据 



      l  删除数据库 



   从它的语法开始  你现在已经知道了许多与 SQL  有关的词汇并且知道对 SQL       的一部 



分已经有了详尽的了解  在第二天的      查询简介   SELECT 语句的使用  中我们学会了如 



何从数据库中检索数据  在第 8  天  操作数据    中我们学习了如何从数据库中添加  更新 



和删除数据   现在  在第九天的学习过程中      你将会知道数据库是怎么来的      为了简单起 



见  我们忽略了数据库和表的建立过程       我们假定这些东西已经存在于你们的系统之上 



现在我们来建立它 



   CREATE 语句的语法可以非常简单或复杂     它依据你的数据库管理系统的支持和你对 



所要建立的数据库要求而定 



注  今天的例子使用的是 PERSONAL ORACLE 7 请查看你所用的解释器的文档资料以了 



  解它们与本书中的例子在语法细节上的不同 



CREATE DATABASE 语句 



   在任何数据库项目中管理数据的第一步工作就是建立数据库           根据你的要求和你的数 



据库管理系统的情况     这个工作可以很简单也可以很复杂  许多现代的数据库系统          包括 



                                                   176 


…………………………………………………………Page 177……………………………………………………………

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



PERSONAL  ORACLE  7 都提供了图形工具例你可以通过按鼠标按键来完成数据库的建立 



工作  这对于节省时间是相当有益处的  但是你应该知道 SQL 是如何响应鼠标的操作的 



   典型的数据库创建语句如下 



SYNTAX 



   CREATE DATABASE database_name 



   由于语法根据系统的不同差别很大  所以我们不对 CREATE 的语法作更深入的讨论 



许多数据库系统甚至不支持数据库的创建命令  但是           几乎所有的流行了     功能强大的关 



系型数据库系统都支持它  所以我们用创建数据库的选择来代替创建数据库命令的语法讨 



论工作 



建立数据库时的选项 



   CREATE  DATABASE 语法的差别很大 许多 SQL  教材中都没有提到它而是直接进行 



了 CREATE  TABLE  语句 由于你在创建表之前必须先创建数据库  而当一个开发人员在 



建立数据库时必须要考虑一些事情        第一件事情就是你的权限级别        如果你使用的关系型 



数据库管理系统支持权限  你必须确认你是否具有系统管理设置权限或系统管理员已经允 



许你有创建数据库的权限  请参见你的数据库文档以获得更多的知识 



   大多数关系型数据库系统允许你指定数据库的默认大小  它通常受你的硬盘容量的限 



制  你需要清楚你所使用的数据库系统是如何将数据根据你指定的大小存在你的硬盘上的 



对空间的管理责任由每个系统管理人员负责          所以你的本地的数据库管理人员为你建立一 



个测试用的数据库是可能的 



   不要对 CREATE  DATABASE 过于关心 它非常简单    你可以像下边这样来建立一个 



名字叫 PAYMENTS 的数据库 



SYNTAX 



   SQL》 CREATE DATABASE PAYMENTS; 



   注  再一次请你参考你所使用的数据库管理系统的说明书来建立数据库  因为 CREATE 



      DATABASE 语句在不同的解释器之间的差别是很大的        每一种解释器都有它自己 



      的一些特点 



                                                      177 


…………………………………………………………Page 178……………………………………………………………

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



设计数据库 



   设计数据库对于成功的应用来说是非常重要的  它将涉及到我们在第一天学习的关系 



型数据库理论和标准化数据库理论 



   标准化过程要求你将数据分解成不同的部分以减少数据的冗余度  规划你的数据将是 



一个非常复杂的过程  有相当多的数据库设计工具可以让你将这一过程变得更合乎逻辑 



   许多因素会对你设计数据库造成影响      如下边的 



        l  安全问题 



        l  磁盘的可用空间 



        l  数据检索及响应的速度 



        l  数据更新的速度 



        l  多表归并返回数据的速度 



        l  RDBMS 对临时表的支持 



   磁盘空间是一个最为重要的因素     尽管你可能会认为当磁盘的容量以 GB  计时这是不 



重要的  不要忘记你的数据库越大     返回数据库时间就越长     如果你的表的设计工作做得 



非常糟糕  那么你可能会在其中存入许多无用的数据 



   相反的问题也会产生    你可能已经建立了相当多的表所以看起来它们已经非常的合乎 



标准化的要求了    尽管你的数据库结构非常合理     但是在这个数据库上进行的查询工作将 



会花费相当多的时间    数据库的设计风格有时会因为数据结构并不能清楚地表达设计人的 



意图而使维护工作难于进行  所以当你在进行代码和数据库的结构设计时将你的数据结构 



与你当时的意图进行详细的记录是非常重要的  在数据库设计行业中          它被称为数据字典 



建立数据字典 



   数据字典是数据库设计人员非常重要的文档资料  它可以有以下功能 



   l  数据库的设计意图  谁将会使用它 



   l  数据库的自身资料   用什么创建的数据库  数据库的大小是多少       日志文件的尺 



     寸是多少  在一些 RDBMS  中它存储着数据库的操作信息 



   l  任何数据库安装或反安装的 SQL  原代码记录  包括导入/导出数据库的文档资料 



     记录  就像第八天所说的那样 



                                                 178 


…………………………………………………………Page 179……………………………………………………………

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



   l  对每一个表的详细描述以及它的最终目的是什么 



   l  每一个表的内部结构的资料        包括表中的所有字段      数据类型以及注释情况以及 



      所有的索引和所有的视图        见第 10 天  创建视图及索引 



   l  对于每一个存储过程的原代码和触发机制 



   l  说明数据库是否具有唯一值及非空值约束  并说明这些约束是关系型数据库管理 



      系统强加的还是数据库编制人员设定的          以及约束在原代码中的作用范围 



   许多计算机辅助软件工程工具会在建立数据字典的过程中为你提供帮助                     例如 



MicroSoft  Access 在将数据库打包会生成一个文档  在文档中对数据库中的每一个细节都进 



行了详细的描述  在第 17 天中的  使用 SQL 来生成 SQL 语句      中你了解数据字典的详细 



内容 



   注  大多数 RDBMS  中都提供了生成数据字典的工具包或有说明来告诉你如何安装它 



建立关键字段 



   在接下来的数据库设计工作中         最主要的目标就是建立你的表的结构         它包括主关键 



字和外关键字     其中主关键字用于完成下列目标 



   保证表中的第一条记录都是唯一的          没有一条记录的内容完全与另一条相同  至少主 



键不能相同 



   对于一个特定的记录      它的所有的列都是必须的       列的内容不应出现重复 



   在第二个目标中     如果列的内容在表中从头至尾都没有重复           那它就是主关键字      外 



关键字则是在自己的关系中不唯一标识记录; 但在其它关系中可用作对匹配字段链接的一种 



关键字   下边的例子可以帮助你来区分这两种情况 



   假定你有三个表  BILLS    BANK_ACCOUNTS PANY  它们的结构如下 



   Table 9。1。 Table structure for the PAYMENTS database。 



   Bills              Bank_Accounts      pany 



   NAME; CHAR(30)     ACCOUNT_ID; NUMBER NAME; CHAR(30) 



   AMOUNT; NUMBER     TYPE; CHAR(30)     ADDRESS; CHAR(50) 



   ACCOUNT_ID; NUMBER BALANCE; NUMBER    CITY; CHAR(20) 



                      BANK; CHAR(30)     STATE; CHAR(2) 



   在 Bills 表中的主关键字段为 NAME   字段  这一字段是没有重复的       因为你只可能有 



一个支票的来对应 AMOUNT      实际上你可能通过支票号以及日期来保证它的唯一性              但 



                                                         179 


…………………………………………………………Page 180……………………………………………………………

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



  在这里我们假定 NAME 就能做到这一点              而 ACCOUNT_ID  字段则是 BANK_ACCOUNT 



  的主关键字  PANY 表中的 NAME 字段是主关键字 



      在本例中外部关键字应该是很容易发现的                    在 BILL  表中的 ACCOUNT_ID     与 



  BANK_ACCOUNT  表相关连      而 NAME 字段则将 BILL 表与 PANY 表相关连           如果 



  这是一个完备的数据库            你可能会有更多的表和数据分类                 例如    BANK  字段在 



  BANK_ACCOUNT    表中可以说明一个银行的信息如地址和电话号码等                    PANY 表可 



  以与其它表或  数据库事件  相关连以得到公司及有关产品的信息 



  例 9。1 



      同样用BILLS    BANK_ACCOUNTS  和 PANY 表     我们来看一个不正确的数据库 



  设计 初学者可能犯的错误就是不会正确地对数据进行尽可能的逻辑分组 一个不好的 BILL 



  设计如下 



Column Names          ments 



NAME   CHAR(30)       Name of pany that bill is owed to 



AMOUNT    NUMBER      Amount of bill in dollars 



ACCOUNT_ID   NUMBER   Bank account number of bill (linked to BANK_ACCOUNTS table) 



ADDRESS   CHAR(30)    Address of pany that bill is owed to 



CITY  CHAR(15)        City of pany that bill is owed to 



STATE  CHAR(2)        State of pany that bill is owed to 



      结果看上去是正确的 但是这只是在数据输入的开始时 在几个月以后 你已经在NAME 



  字段中输入了许多公司的账单               每当向 BILL    表中加入一个新记录的时候             公司的 



  ADDRESS   CITY  以及 STATE  就有可能出现重复        当记录增加到成千上万时重复的数据 



  也在相应的增加  类似的情况也可能在 10              20  或 30 个表中出现    你现在知道数据库标准 



  化设计的重要性了吧 



      在你向表中输入数据之前          你应该知道如何来创建一个表 



  CREATE TABLE 语句 



      建立表的过程比建立数据库的过程更不标准  它的基本语法如下 



      SYNTAX 



      CREATE TABLE table_name  (field1 datatype ' NOT NULL ' 



                                field2 datatype ' NOT NULL ' 



                                                                      180 


…………………………………………………………Page 181……………………………………………………………

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



                             field3 datatype ' NOT NULL '。。。) 



   它的一个简单的例子如下 



   INPUT/OUTPUT 



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