友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!阅读过程发现任何错误请告诉我们,谢谢!! 报告错误
一世书城 返回本书目录 我的书架 我的书签 TXT全本下载 进入书吧 加入书签

SQL 21日自学通(V3.0)(PDF格式)-第49章

按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!






      结果看上去是正确的 但是这只是在数据输入的开始时 在几个月以后 你已经在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 TABLE BILLS ( 



       2      NAME  CHAR(30) 



       3      AMOUNT  NUMBER 



     4   ACCOUNT_ID NUMBER) 



   Table created。 



   分析 



   该语句创建了一个名字叫 BILL  的表  在 BILL 表中有三个字段  NAME               ACCOUNT 



和 ACCOUNT_ID   其中 NAME 字段为字符类型可以存储长度 30  的字符串  而 AMOUNT 



和 AMOUNT_ID 则只参存储数字 



   下边的部分对 CREATE TABLE 命令作进一步的解释 



表名 



    当使用 PERSONAL  ORACLE   来创建一个表的时候  对表的命名要遵从几个约束                首 



先  表的名字不得超过 30  个字符长         由于 ORACLE 对大小写不敏感        所以在写名字时你 



可以根据需要采用大写或小写的方式             但是表的第一个字符必须是字母            A…Z   其余的字 



符则还可以有下划线        #    @  当然   在本工程中表的名字不应该有重复             表的名字也 



不可以是 ORACLE 的保留字  如 SELECT 



注  你可以在不同的所有者或工程中使用相同的表的名字  但在同一个工程中表的名字必 



   须保证唯一 



FIRST NAME 



   如果你有过用任何一种语言进编程的经验                你会有类似的关于数据类型的概念            指定 



的字段只能存放特定的数据类型  例如             字符型字段只能存放字符型数据类型             表 9。2 显 



示了 ORACLE 支持的数据类型 



   ORACLE 所支持的数据类型 



                                                                 181 


…………………………………………………………Page 182……………………………………………………………

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



  数据类型                          说               明 



CHAR       可以存储长度为 1~255 个字符的字符串       空格会被填充到字符串的右边以保 



           证其内容满足定义的长度 



DATE       包括日期的世纪     年  月  日时  分  秒 



LONG       可以支持长达 2G  的字符串  见下注 



LONG RAW   可以存储长达 2G  的二进制内容  见下注 



NUMBER     零  正值或负值的定点或浮点数 



RAW        可以存储长不过 255 个字节的二进制代码 



ROWID      用一个十六进制的数来标明当前行在表内的唯一地址             见下注 



VARCHAR2   变长的字母或数字     长度可以从 1 到 2000 



   注  LONG 数据类型在其它的数据库系统中常被称为备注类型  它主要用于存储大量的可 



      以在稍后返回的文本内容 



        LONG  RAW 类型在其它数据库系统中常被称为大二进制类型            BLOB   它可以用 



   来存储图形     声音  视频数据    尽管关系型数据库管理系统最初不是为它们而设计的              但 



   是多媒体数据可以存储在 BLOB       或 LONG RAW  类型的字段内 



        ROWID 常用在可以将你的表中的每一条记录都加以唯一标识的场合  许多关系型 



   数据库管理系统用 COUNTER      如 ACCESS 或 IDENTITY SQL  SERVER 来表达这个 



   概念 



      注  请检查你的解释器看它们是否对数据类型的支持有所变化 



   空值属性 



      SQL  也可以让你鉴别在一个列中是否已经存入的数值  NULL          只是一个修饰     因为如 



   果一个字段的内容为 NULL 的话实际上是说这个字段中没有东西也没有 



      在建立表的时候      大多数数据库管理系统允许你用 NOT NULL 来指明字段是否为非空 



   属性  NOT  NULL  的意思就是在当前表的该字段中不能有任何记录存在空值  也就是说在 



   当前表中的该字段的每一个记录中都应该确实存在数值  下例给出了 NOT NULL  的用法 



      INPUT 



      SQL》CREATE TABLE BILLS ( 



        2      NAME  CHAR(30)  NOT  NULL; 



                                                             182 


…………………………………………………………Page 183……………………………………………………………

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



     3      AMOUNT  NUMBER; 



     4      ACCOUNT_ID  NOT  NULL); 



分析 



   在这个例子中如果你想把公司的账转到你自己的名下 如果 NAME 区和 ACCOUNT_ID 



区没有内容  那么这种存储是没有任何意义的  你也许可以在记录中给出账单号  但是你 



无法收取 



   下例中的第一个语句插入正确的数据以便为支付 JOE  的25  电脑服务费 



INPUT/OUTPUT 



   SQL》 INSERT INTO BILLS VALUES(〃Joe's puter Service〃; 25; 1) 



    1 row inserted。 



INPUT/OUTPUT 



   SQL》 INSERT INTO BILLS VALUES(〃〃; 25000; 1) 



    1 row inserted。 



分析 



   注意  在上边的第二个例子中没有给出 NAME  的名字               你也许会认为这是一件好事 



因为没有收款人却收取了 25000  元  但是我们不这样认为              如果 NAME   字段在创建时指 



定的非空属性  那么在第二个例子中就会产生一个错误 



唯一属性 



   你在设计表时的一个目标是要保证在表中有一个列的值是唯一的  这列或这个字段被 



称为主关键字      在一些数据库管理系统中允许你将某一列设成唯一值属性                   如 ORACLE 和 



SQL  Server 可以让你对一个字段加以唯一值索引  见第 10  天            这一特性可以保证你不 



在该字段中插入重复的数值 



   在选择主关键字段时有几个需要注意的问题                我们曾经说过      ORACLE  提供了一个 



ROWID  字段   它对于每一行均会自动递增          因此默认情况下它总是一个唯一的数值              将 



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  
返回目录 上一页 下一页 回到顶部 0 0
未阅读完?加入书签已便下次继续阅读!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!