友情提示:如果本网页打开太慢或显示不完整,请尝试鼠标右键“刷新”本网页!
SQL 21日自学通(V3.0)(PDF格式)-第90部分
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部! 如果本书没有阅读完,想下次继续接着阅读,可使用上方 "收藏到我的浏览器" 功能 和 "加入书签" 功能!
可以工作 语法完全正确
练习答案
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 列 所
以的表都可以根据该列进行联接 你可以对表进行任何联接 你也可以联接所有的表 别
忘了对你的表中的列进行限制
第 10 天 创建视图和索引
问题答案
7 当在一个不唯一的字段中创建一个唯一值索引会有什么结果
根据你所使用的数据库 你将会收到不同类型的错误表达 索引将不会建立 唯一值
索引所建立的字段的内容必须是唯一的
8 下边的话是对是错
视图和索引都会占用数据库的空间 所以在设计数据库空间时要考虑到这一点
不对 只有索引才会占用数据库的存储空间
如果一个人更新了一个已经创建视图的表 那么视图必须进行同样的更新才会看到相同
的数据 不对 表只要更新了 那么在视图中就可以看到更新了的数据
如果你的磁盘空间够而你想加快你的查询的速度 那么索引越多越好
不对 有时索引反而会降低查询的速度
9 下边的 CREATE 语句是否正确
SQL》 create view credit_debts as (select all from debts where account_id = 4)
不对 你不应该使用括号 而且 ALL 应该是*
10 下边的 CREATE 语句是否正确
SQL》 create unique view debts as select * from debts_tbl
不对 唯一值视图不能这样做
11 下边的 CREATE 语句是否正确
SQL》 drop * from view debts
不对 正确的语法应该是 DROP VIEW DEBTS
12 下边的 CREATE 语句是否正确
SQL》 create index id_index on bills account_id 正确
551
…………………………………………………………Page 552……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
练习答案
4 检查你所使用的数据库系统 它是否支持视图 允许你在创建视图时使用哪些选项 用
它的语法来写一个简单的创建视图语句 并对其进行如 SELECT 和 DELETE 等常规操
作后再删除视图 检查你的解释器的数据字典 看它是否支持将表的查询开放为视图
5 检查你所使用的数据库系统看它是否支持索引 它有哪些选项 在你的数据库系统中的
一些已经存在的表中试一下这些选项 进一步 确认在你的数据库系统中是否支持
UNIQUE 和 CLUSTER 索引
ACCESS 可以让开发人员以图形向表中加入索引 索引可以组合多个字段 也可以在
图形用户界面下设置排序情况 而其它的系统则需要你在命令行下输入 CREATE INDEX
语句
6 如果可能的话 在一个表中输入几千条记录 用秒表或钟来测定一下你的数据库系统对
特定操作的反映时间 加入索引是否使性能提升了 试一下今天提到的技巧
只有当操作返回的数据量很少时索引才会对性能的提高有帮助 如果查询返回的数据占
表的固有数据的比例较大 使用索引反而会使性能降低
第 11 天 事务处理控制
问题答案
5 在嵌套的事务中 是否可以使用 ROLLBACK 命令来取消当前事务并回退到上级事务
中 为什么
不可以 当事务嵌套时 任何 ROLLBACK 命令都将取消当前进程中的所有事务 所有
在当前事务中所进行的改动都不会真正保存 直到外部事务被确认
6 使用保存点是否可以保存事务的一部分 为什么
可以 保存点可以让程序员保存事务中的语句 如果需要 ROLLBACK 可以退回到保
存点而不是事务的开始
7 MIT 命令是否可以单独使用 它一定要嵌套吗
MIT 命令可以在事务中使用也可以单独使用
8 如果你在 MIT 命令后发现的错误 你是否还可以使用 ROLLBACK 命令
552
…………………………………………………………Page 553……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
也行也不行 你可以使用这个命令 但是你无法撤消所做的改动
9 在事务中使用保存点是否可以自动地将之前的改动自动地保存
不是 保存点只有在使用 ROLLBACK 命令时才发挥作用 这时只有保存点以后的改动
可以撤消
练习答案
4 使用 PERSONAL ORACLE7 的语法来更正下边的语法
SQL》 START TRANSACTION INSERT INTO CUSTOMERS VALUES ('SMITH'; 'JOHN')
SQL》 MIT
答
SQL》 SET TRANSACTION;
INSERT INTO CUSTOMERS VALUES
('SMITH'; 'JOHN');
SQL》 MIT;
5 使用 PERSONAL ORACLE7 的语法来更正下边的语法
SQL》 SET TRANSACTION
UPDATE BALANCES SET CURR_BAL = 25000
SQL》 MIT
答
SQL》 SET TRANSACTION;
UPDATE BALANCES SET CURR_BAL = 25000;
SQL》 MIT;
该语句被更正后会很好地工作 但是 你只是更新了每个人的当前 BALANCE 为25;000
6 使用 PERSONAL ORACLE7 的语法来更正下边的语法
SQL》 SET TRANSACTION
INSERT INTO BALANCES VALUES ('567。34'; '230。00'; '8')
SQL》 ROLLBACK 该语法完全正确 无需更改
553
…………………………………………………………Page 554……………………………………………………………
SQL 21 日自学通(V1。0) 翻译人 笨猪
第 12 天 数据库安全
问题答案
8 下边的语句是否是错误的
SQL》 GRANT CONNECTION TO DAVID
没有 CONNECTION 规则 正确的语法是
SQL》 GRANT CONNECT TO DAVID;
9 对与错 当删除用户时所有属于用户对对象都会随之删除
如果在删除用户时 CASCADE 语句运行了这句话就是对的 CASCADE 选项将通知系统
删除所有为被删除用户所有的表
10 如果你创建了一个表并对它使用了 SELECT 权限对象为 PUBLC 时会有什么问题
任何人都可以从你的表中检索数据 即便是你不想让他看到内容的用户
11 下边的 SQL 语句是否正确
SQL》 create user RON identified by RON
正确 该语句会创建一个用户 但是用户的设置是默认的 这可能不会让人满意
关于设置部分 你应该检查你的解释器文档
12 下边的 SQL 语句是否正确
SQL》 alter RON identified by RON
不对 没有给出用户 正确的语法是 SQL》 alter user RON identified by RON;
13 下边的 SQL 语句是否正确
SQL》 grant connect; resource to RON 正确
14 如果表为你所有 别人如何才能从表中选择数据
只有对你的表拥有选择权限的用
快捷操作: 按键盘上方向键 ← 或 → 可快速上下翻页 按键盘上的 Enter 键可回到本书目录页 按键盘上方向键 ↑ 可回到本页顶部!
温馨提示: 温看小说的同时发表评论,说出自己的看法和其它小伙伴们分享也不错哦!发表书评还可以获得积分和经验奖励,认真写原创书评 被采纳为精评可以获得大量金币、积分和经验奖励哦!