按键盘上方向键 ← 或 → 可快速上下翻页,按键盘上的 Enter 键可回到本书目录页,按键盘上方向键 ↑ 可回到本页顶部!
————未阅读完?加入书签已便下次继续阅读!
FROM ORDERS
WHERE NAME ='JACKS BIKE')
NAME ORDEREDON
TRUE WHEEL 15…MAY…1996
TRUE WHEEL 19…MAY…1996
TRUE WHEEL 2…SEP…1996
TRUE WHEEL 30…JUN…1996
LE SHOPPE 17…JAN…1996
LE SHOPPE 1…JUN…1996
第八天 操作数据
问题答案
9 下边的语句有什么错误
DELETE COLLECTION
如果你想删除 COLLECZTION 表中的所有记录 你必需使用下边的语法
DELETE FROM COLLECTION;
546
…………………………………………………………Page 547……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
要注意这条语句会删除表中的所有的记录 你可以使用下边的语法来有选择地删
除表中的记录
DELETE FROM COLLECTION
WHERE VALUE = 125
这条语句将会删除所有 VALUE 为 125 的记录
10 下边的语句有什么错误
INSERT INTO COLLECTION SELECT * FROM TABLE_2
这条语句的目的是将 TABLE_2 中的所有记录都拷贝到 COLLECTION 表中
这里存在的主要问题是在 INSERT 语句中使用了 INTO 关键字 在把一个表中的
数据拷贝到另一个表中时 你必需使用下边的语法
INSERT COLLECTION
SELECT * FROM TABLE_2;
同时 要记住 TABLE_2 中的数据类型和字段次序与 COLLECTION 表中的一样
11 下边的语句有什么错误
UPDATE COLLECTION (〃HONUS WAGNER CARD〃 25000; 〃FOUND IT〃)
这条语句把 UPDATE 与 INSERT 弄混了 如果想更新 COLLECTIONS 表中的数
值 你应该使用下边的语法
UPDATE COLLECTIONS
SET NAME = 〃HONUS WAGNER CARD〃;
VALUE = 25000;
REMARKS = 〃FOUND IT〃;
12 如果执行下边的语句会有什么结果
SQL》 DELETE * FROM COLLECTION;
由于语法不正确 什么也不会删除 这里不需要*号
13 如果执行下边的语句会有什么结果
SQL》 DELETE FROM COLLECTION;
在 COLLECTION 表中的所有记录都会被删除
14 如果执行下边的语句会有什么结果
SQL》 UPDATE COLLECTION SET WORTH = 555
SET REMARKS = 'UP FROM 525';
547
…………………………………………………………Page 548……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
在 COLLECTION 表中的所有 WORTH 现在都变成了 555 而且所有的 REMARKS 都
变成了 UP FROM 525 这可不是一件好事
15 下边的语句是否会工作
SQL》 INSERT INTO COLLECTION SET VALUES = 900 WHERE ITEM = 'STRING'
不会工作 INSERT 与 SET 不可能在一起工作
16 下边的语句是否会工作
SQL》 UPDATE COLLECTION SET VALUES = 900 WHERE ITEM = 'STRING'
可以工作 语法完全正确
练习答案
3 试着向一个表中插入一个不正确的数据类型 看一下出错信息 然后再插入一个
正确的数据类型
无论你使用何种类型的解释器 你都会收到一个所插入数据的类型与表中对应列的数
据类型不匹配的错误信息
4 试着使用你的数据库系统将某个表导出为其他库格式 然后再把它导入 熟悉一
下你的数据库系统的导入与导出操作 并试着用其它数据库操作导出文件
对于确切的导入和导出数据的语法请参见你的文档 如果你重复导入的话你可以想删
除导入表中的所有数据 在真正进行数据操作之前你应该先熟悉一下导入导出命令 如果
在你的表中存在唯一约束列那么你的导入操作可能会失败 你将会收到大量的关于唯一约
束限制的错误
第九天 创建和操作表
问题答案
9 ALTER DATABASE 语句经常用在修改已有表的结构上 对不对
不对 大多数数据系统中没有 ALTER DATABASE 命令 修改已有表的结构应该用
ALTER TABLE 命令
548
…………………………………………………………Page 549……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
10 DROP TABLE 语句与 DELETE FROM 的作用是相同的 对不对
不对 这两个命令并不等价 DROP TABLE 将会把表的记录及结构从数据库中全部删
除 而 DELETE FROM 则只是将表中的记录全部删除 表的结构在数据
库中依然存在
11 可以使用 CREATE TABLE 命令向数据库中加入一个新表 对不对 对
12 为什么下边的语句是错误的
INPUT
CREATE TABLE new_table (
ID NUMBER
FIELD1 char(40)
FIELD2 char(80)
ID char(40)
该语句存在着两个问题 首先是 ID 的命句在表中重复了 而它们的数据类
型并不同 字段名重复使用是非法的 其次是在语句的末尾没有对应的圆括号
正确的语句应该如下
INPUT
CREATE TABLE new_table (
ID NUMBER;
FIELD1 char(40);
FIELD2 char(80));
13 为什么下边的语句是错误的
INPUT
ALTER DATABASE BILLS (
PANY char(80))
更新字段名称和长度应该使用 ALTER TABLE 命令 而不是 ALTER DATABASE
命令
14 当一个表建立时 谁是它的所有者
它的创建人 如果你用你的 ID 登录 那么所有都是你的 ID 如果你用 SYSTEM
登录 那么所有都是 SYSTEM
15 如果字符型列的长度在不断变化 如何才能做出最佳的选择
549
…………………………………………………………Page 550……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
VARCHAR2 是最好的选择 它可以允许存储在其中的字符串的长度变化
16 表名是否可以重复
可以 只要所有者或计划不同就行
练习答案
4 用你喜欢的格式向 BILLS 数据库中加入两个表 名字分别叫 BANK 和
ACCOUNT_TYPE BANK 表中应该包含有 BANK_ACCOUNT 表中 BANK 字段
的 信 息 ACCOUNT_TYPE 表 中 也 应 该 包 含 有 BANK_ACCOUNT 表 中
ACCOUNT_TYPE 字段的信息 试着尽可以地减少数据的数量
你应该使用 CREAETE TABLE 命令来创建表 可能的语句形式如下
SQL》 CREATE TABLE BANK
2 ( ACCOUNT_ID NUMBER(30) NOT NULL;
BANK_NAME VARCHAR2(30) NOT NULL;
ST_ADDRESS VARCHAR2(30) NOT NULL;
CITY VARCHAR2(15) NOT NULL;
STATE CHAR(2) NOT NULL;
ZIP NUMBER(5) NOT NULL
SQL》 CREATE TABLE ACCOUNT_TYPE
( ACCOUNT_ID NUMBER(30) NOT NULL;
SAVINGS CHAR(30);
CHECKING CHAR(30);
5 使用你已经创建的五个表 BILLS BANK_ACCOUNTS PANY BANK
ACCOUNT_TYPE 改为表的结构以用整数型字段作为关键字以取代字符型字段
作为关键字
SQL》 ALTER TABLE BILLS DROP PRIMARY KEY;
SQL》 ALTER TABLE BILLS ADD (PRIMARY KEY (ACCOUNT_ID));
SQL》 ALTER TABLE PANY ADD (PRIMARY KEY (ACCOUNT_ID));
6 使用你所知道的 SQL 的联接知识 见第 6 天 表的联接 写几个查询来联接 BILLS
数据库中的几个表
550
…………………………………………………………Page 551……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
由于在上一个练习中我们已经修改了表的结构使其关键字段为 ACCOUNT_ID 列 所
以的表都可以根据该列进行联接 你可以�