SQL 21日自学通(V3.0)(PDF格式)-第41部分
按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
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 的两个新的特性 它允许你以于数据在磁盘上的存储不同
的方式来显示数据 这两个特性就是记录和索引 到今天的结束 你将学习以下内容
l 如何区别索引与视图
l 如何创建视图
l 如何创建索引
l 如何用视图来修改数据
l 索引可以做什么
视图常常被称为虚表 它是用 CREATE VIEW 语句来建立的 在视图建立以后你可以
对视图采用如下命令
l SELECT
l INSERT
l INPUT
l UPDATE
l DELETE
索引是与磁盘上数据的存储方式不同的另外一种组织数据的方法 索引的特例是表中
记录依据其在磁盘上的存储位置显示 索引可以在表内创建一个列或列的组合 当应用索
引以后 数据会按照你使用 CREATE INDEX 语句所定义的排序方式返回给用户 通过对
正确的 特定的两个表的归并字段进行索引可以获得明显的好处
注 视图与索引是两个完全不同的对象 但是它们有一点是相同的 它们都与一个表
或数据库相关联 尽管每一个对象只能与一个特定的表相关联 但它们还是通过对数据的
193
…………………………………………………………Page 194……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
预排序和预定义显著地提高了表的工作性能
注 在今天的例子中我们使用的是 PERSONAL ORACLE 7 对于你使用的解释器请参
阅它的文档与找出它们在语法上的不同之处
使用视图
你可以对封装的复合查询应用视图或虚表 当对一组数据建立视图以后 你可以像处
理另外一个表一样去处理视图 但是 在视图中修改数据时要受到一些限制 当表中的数
据改变以后 你将会在查询视图时发现相应的改变 视图并不占用数据库或表的物理空间
CREATE VIEW 和语法如下
SYNTAX
CREATE VIEW '(column1; column2。。。)' AS
SELECT
FROM
与通常一样 语法看起来不太容易使人明白 但是对于今天的内容我们有许多例子来
展示视图的用法和优点 该命令通知 SQL 去创建一个视图 用你给出的名字 及其列 如
果你想指定的话 SQL 的 SELECT 语句可以判定列所对应的字段及其数据类型 没错
就是九天以来你一直使用的 SELECT 语句
在你用视图进行任何有用的工作之前 你需要对 BILLS 数据库再添加一些数据 如果
你已经用 DROP DATABASE 语句对它进行了试验 那么你需要重新建立它 数据见表 10。1
10。2 和 10。3
INPUTOUTPUT
SQL》 create database BILLS;
Statement processed。
INPUTOUTPUT
SQL》 create table BILLS (
2 NAME CHAR(30) NOT NULL;
3 AMOUNT NUMBER;
4 ACCOUNT_ID NUMBER NOT NULL);
194
…………………………………………………………Page 195……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
Table created。
INPUTOUTPUT
SQL》 create table BANK