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

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

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




   它的一个简单的例子如下 



   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                    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  



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