友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
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
它的语法允许你建立一个字段类型与已有表中选出的字段类型相同的新表 你也
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!