友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第38部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
的方式来显示数据 这两个特性就是记录和索引 到今天的结束 你将学习以下内容
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_ACCOUNTS (
2 ACCOUNT_ID NUMBER NOT NULL;
3 TYPE CHAR(30);
4 BALANCE NUMBER;
5 BANK CHAR(30));
Table created。
INPUTOUTPUT
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 10。1。 Sample data for the BILLS table。
Name Amount Account_ID
Phone pany 125 1
Power pany 75 1
Record Club 25 2
Software pany 250 1
Cable TV pany 35 3
Joe's Car Palace 350 5
S。C。 Student Loan 200 6
Florida Water pany 20 1
U…O…Us Insurance pany 125 5
Debtor's Credit Card 35 4
Table 10。2。 Sample data for the BANK_ACCOUNTS table。
Account_ID Type Balance Bank
1 Checking 500 FirstFederal
2 MoneyMarket 1200 FirstInvestor's
3 Checking 90 CreditUnion
195
…………………………………………………………Page 196……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
Account_ID Type Balance Bank
5 Checking 2500 SecondMutual
6 Business 4500 Fidelity
Table 10。3。 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
Joe's Car Palace 1000 Govt。 Blvd Miami FL
S。C。 Student Loan 25 College Blvd Columbia SC
Florida Water pany 1883 Hwy 87 Navarre FL
U…O…Us Insurance 295 Beltline Hwy Macon GA
pany
Debtor's Credit Card 115 2nd Avenue Newark NJ
现在你已经成功地使用 CREATE DATABASE CREATE TABLE 和 INSERT 命令输入
了所有的这些信息 现在我们开始对视图作进一步的讨论
简单视图
让我们从最简单的视图开始 假设由于一些未知的原因 我们需要在 BILLS 中创建视
图 它看上去与 BILLS 表相同但是名字 叫 DEBTS 不相同 语句如下
INPUT
SQL》 CREATE VIEW DEBTS AS
SELECT * FROM BILLS;
可以用下边的语句来确认上边的结果
INPUT/OUTPUT
SQL》 SELECT * FROM DEBTS;
NAME AMOUNT ACCOUNT_ID
Phone pany 125 1
Power pany 75 1
Record Club 25 2
Software pany 250 1
Cable TV pany 35 3
Joe's Car Palace 350 5
196
…………………………………………………………Page 197……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
NAME AMOUNT ACCOUNT_ID
S。C。 Student Loan 200 6
Florida Water pany 20 1
U…O…Us Insurance pany 125 5
Debtor's Credit Card 35 4
你甚至可以已经存在的视图来创建一个新的视图 当从视图中创建视图时要仔细 尽
管操作是可以接受的 但是它使得维护工作变得复杂 假设你的视图有三级 如表的视图
的视图的视图 那么当表中的第一级视图被删除时会有什么情况发生 另外两个视图会仍
然存在 但是在第一个视图恢复之前它们是没有用处的 切记 当创建一个视图后;它实际
上是一个虚表
INPUT
SQL》 CREATE VIEW CREDITCARD_DEBTS AS
2 SELECT * FROM DEBTS
3 WHERE ACCOUNT_ID = 4;
SQL》 SELECT * FROM CREDITCARD_DEBTS;
OUTPUT:
NAME AMOUNT ACCOUNT_ID
Debtor's Credit Card 35 4
CREATE VIEW 也允许你从表中选择特定的列到视图中 下例是从 PANY 表中选
择了 NAME 和 STATE 列
INPUT
SQL》 CREATE VIEW PANY_INFO (NAME; STATE) AS
2 SELECT * FROM PANY;
SQL》 SELECT * FROM PANY_INFO;
OUTPUT
NAME STATE
Phone pany GA
Power pany FL
Record Club CA
Software pany CA
Cable TV pany TX
Joe's Car Palace FL
197
…………………………………………………………Page 198……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
NAME STATE
S。C。 Student Loan SC
Florida Water pany FL
U…O…Us Insurance pany GA
Debtor's Credit Card NJ
注 用户可以通过创建视图来查询特定的数据 如果你的表有 50 列且有成千上万个记
录但是你只需要其中两列的话 你可以创建视图来选择这两列 然后从视图中查询 你会
发现查询在数据返回时间上与原来有相当大的不同
列的重命名
视图继承了已有列的名字 此外视图还可以有自己的名字 SQL 的 CREATE VIEW 允
许你对所选择的列进行重命名 它与前边的例子非常相似 如果你想把 PANY 中的
ADDRESS CITY 和 STATE 字段组合起来并打印到信封上时该如何做呢 请看下边的例
子 它使用了 SQL 的+操作符将地址字段与逗号和空格组合起来
INPUT
SQL》 CREATE VIEW ENVELOPE (PANY; MAILING_ADDRESS) AS
2 SELECT NAME; ADDRESS + 〃 〃 + CITY + 〃; 〃 + STATE
3 FROM PANY;
SQL》 SELECT * FROM ENVELOPE
OUTPUT
PANY MAILING_ADDRESS
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!