友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
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 的两个新的特性 它允许你以于数据在磁盘上的存储不同
的方式来显示数据 这两个特性就是记录和索
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!