社区
数据库
帖子详情
通过odbc删除sql2005数据是时弹出'多行数据被更新'窗口
yanyanyan165
2016-04-20 02:47:49
问题是我不需要有个对话框提醒,而且对话框不是我设的呀,不知道怎么就有了个对话框,要这么取消啊?它从哪里蹦出来的
...全文
365
2
打赏
收藏
通过odbc删除sql2005数据是时弹出'多行数据被更新'窗口
问题是我不需要有个对话框提醒,而且对话框不是我设的呀,不知道怎么就有了个对话框,要这么取消啊?它从哪里蹦出来的
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
2 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yanyanyan165
2016-04-20
打赏
举报
回复
可以确定没有,应该是系统的对话框,不知道要这么屏蔽呀
zgl7903
2016-04-20
打赏
举报
回复
估计是你程序中有弹出什么吧 调试模式运行 弹出窗口时, 暂停程序, 然后看线程和堆栈, 看看是什么地方弹出的, 屏蔽之
Powerbuilder9.0实用教程源代码
Powerbuilder 9.0实用教程》源代码 1.本源代码包括以下章节源代码: 第01章 认识PowerBuilder 9.0、第05章 创建应用程序、第06章 创建窗体、第07章 创建菜单和工具栏、第10章 应用程序的调试和发布、第11章 典型小型实例赏析、第12章 图书管理系统实例和第13章 学生选课系统实例。 2.源代码使用方法参见《附录A 源代码的使用方法》文件。 __________________________________________________________________ 注意: 1.建议读者下载源文件后,将该源文件进行备份,读者使用副本源文件进行学习,这样一但
出
问题就不用再从网上下载了。 2.将源文件中“
数据
库文件”文件夹一定要复制到C盘根目录下,这样才能保证您连接
数据
库文件成功,具体方法参见《附录A 源代码的使用方法》。 对于书中源代码除了
数据
库外其他都能正常使用,而示例中
数据
库需要用户在自己的计算机上注册后才能使用,如果不注册
数据
源就运行应用程序是检索不到任何
数据
的,下面以连接学生选课系统
数据
库为例具体介绍如何连接
数据
库文件。 第1章 认识PowerBuilder 9.0 1 1.1 PowerBuilder 9.0简介 1 1.1.1 中国软件业现状 1 1.1.2 为什么要学习PowerBuilder 9.0 2 1.1.3 PowerBuilder的概述 2 1.1.4 PowerBuilder的特点 3 1.1.5 PowerBuilder 9.0的新特性 6 1.2 安装PowerBuilder 9.0软硬件需求 9 1.2.1 软件环境需求 9 1.2.2 硬件环境需求 9 1.3 PowerBuilder 9.0功能界面介绍 10 1.3.1 PowerBuilder 9.0界面简介 10 1.3.2 常用功能菜单 10 1.4 工作环境设置 16 1.4.1 工具栏的设置 16 1.4.2
窗口
排列 19 1.4.3 快捷键设置 20 1.4.4 系统选项设置 21 1.5 用5分钟制作一个简单实例 22 1.5.1 实例运行界面 22 1.5.2 新建一个工作空间对象 22 1.5.3 新建一个应用程序对象 23 1.5.4 创建窗体 23 1.5.5 为应用程序添加open事件代码 25 1.6 小结 27 1.7 习题 27 第2章 编程基础知识 28 2.1 PowerScript脚本语言书写规则 28 2.1.1 忽略大小写 28 2.1.2 语句的断行、续行和分割 28 2.1.3 注释 29 2.2
数据
类型 29 2.3 变量和作用域 30 2.3.1 定义变量 30 2.3.2 引用变量 30 2.3.3 变量的作用域 30 2.4 操作符 31 2.5 标识符 32 2.5.1 标识符的构成 32 2.5.2 匈牙利命名法 32 2.6 常用代词 33 2.7 控制语句 34 2.7.1 判断语句 34 2.7.2 循环语句 36 2.8 结构 38 2.8.1 创建结构 38 2.8.2 使用结构 40 2.9 函数 40 2.9.1 Open()和Close()函数 41 2.9.2 MessageBox()函数 41 2.9.3 类型转换函数 41 2.9.4 类型判断函数 42 2.9.5 其他函数 42 2.10
ODBC
数据
源与专用
数据
库接口 43 2.10.1 什么是
ODBC
数据
源 43 2.10.2 专用
数据
库接口 43 2.10.3 连接
数据
库 44 2.10.4 配置
ODBC
48 2.11
SQL
语言 49 2.11.1
SQL
语言的格式 49 2.11.2 在PowerBuilder 9中使用
SQL
语句 51 2.12 类和对象的概念 56 2.12.1 继承 57 2.12.2 重载和多态性 57 2.12.3 封装 57 2.12.4 属性、事件和函数 57 2.13 在PowerBuilder 9.0中实现面向对象编程 58 2.13.1 创建对象 58 2.13.2 设置对象属性 59 2.13.3 编写事件代码 59 2.13.4 实现继承对象 60 2.14 用户对象和用户事件 61 2.14.1 用户对象分类 61 2.14.2 定义用户对象 62 2.14.3 使用用户对象 64 2.14.4 用户事件 66 2.15 小结 67 2.16 习题 68 第3章 创建
数据
库 69 3.1 数
Oracle
SQL
高级编程(资深Oracle专家力作,OakTable团队推荐)--随书源代码
CruiseYoung提供的带有详细书签的电子书籍目录 http://blog.csdn.net/fksec/article/details/7888251 该资料是《Oracle
SQL
高级编程》的源代码 对应的书籍资料见: Oracle
SQL
高级编程(资深Oracle专家力作,OakTable团队推荐) 基本信息 原书名: Pro Oracle
SQL
原
出
版社: Apress 作者: (美)Karen Morton Kerry Osborne Robyn Sands Riyaj Shamsudeen Jared Still 译者: 朱浩波 丛书名: 图灵程序设计丛书
出
版社:人民邮电
出
版社 ISBN:9787115266149 上架时间:2011-11-9
出
版日期:2011 年11月 开本:16开 页码:502 版次:1-1 主编推荐 资深Oracle专家力作,OakTable团队推荐 全面、独到、翔实,题材丰富 Oracle开发人员和DBA必备 内容简介 Oracle
数据
库中的
SQL
是当今市场上功能最强大的
SQL
实现之一,而本书全面展示了这一工具的威力。如何才能让更多人有效地学习和掌握
SQL
呢?Karen Morton及其团队在本书中提供了专业的方案:先掌握语言特性,再学习Oracle为提升语言效率而加入的支持特性,进而将两者综合考虑并在工作中加以应用。作者通过总结各自多年的软件开发和教学培训经验,与大家分享了掌握Oracle
SQL
所独有的丰富功能的技巧所在,内容涵盖
SQL
执行、联结、集合、分析函数、子句、事务处理等多个方面。读者可以学习到以下几个方面的技巧: 掌握Oracle
数据
库中独有的
SQL
强大特征; 读取并理解
SQL
执行计划; 快速分析并改进表现欠佳的
SQL
; 通过提示及配置文件等来控制执行计划; 在程序中优化查询而无需改动代码。 作为Oracle
SQL
经典著作之一,本书为
SQL
开发人员指明了前行的方向,赋予了他们不断开拓的动力。 作者简介 KAREN MORTON 研究人员、教育家及顾问,Fidelity信息服务公司的资深
数据
库管理员和性能调优专家。她从20世纪90年代初就开始使用Oracle,从事 Oracle的教学工作也已经超过10年的时间。她是Oracle ACE,也是OakTable(Oracle社区中著名的“Oracle科学家”的非正式组织)的成员,经常在技术会议上演讲。她的著作还包括 Expert Oracle Practices和Beginning Oracle
SQL
,博客主页是karenmorton.blogspot.com。 KERRY OSBORNE 专注于Oracle咨询的Enkitec公司的创始人之一。从1982年开始使用Oracle(第2版)。他当过开发人员,也做过DBA,目前是 Oracle ACE总监和OakTable成员。最近几年,他专注于研究Oracle内部原理以及解决性能问题。他的博客主页是 kerryosborne.oracle-guy.com。 ROBYN SANDS 思科公司的软件工程师,为思科的客户设计开发嵌入式Oracle
数据
库产品。从1996年开始使用Oracle,在应用开发、大型系统实现以及性能评估方面具有丰富的经验。她是OakTable的成员,同时是Expert Oracle Practices (2010年 Apress
出
版)一书的合著者。 RIYAJ SHAMSUDEEN 专注于性能/
数据
恢复/电子商务的咨询公司OraInternals的首席
数据
库管理员和董事长。有近20年使用Oracle技术产品以及Oracle
数据
库管理员/Oracle
数据
库应用管理员的经验,是真正应用集群、性能调优以及
数据
库内部属性方面的专家。同时是一位演讲家及Oracle ACE。 JARED STILL 从1994年就开始使用Oracle。他认为对于
SQL
的学习是永无止境的,相信每一个查询Oracle
数据
库的人都需要精通
SQL
语言,才能写
出
高效的查询。他参与本书的编写就是为了帮助别人实现这一目标。 目录 封面 -11 封底 -10 扉页 -9 版权 -8 版权声明 -7 致谢 -6 目录 -5 第1章
SQL
核心 1 1.1
SQL
语言 1 1.2
数据
库的接口 2 1.3
SQL
*Plus 回顾 3 1.3.1 连接到
数据
库 3 1.3.2 配置
SQL
*Plus环境 4 1.3.3 执行命令 6 1.4 5 个核心的
SQL
语句 8 1.5 SELECT语句 8 1.5.1 FROM子句 9 1.5.2 WHERE子句 11 1.5.3 GROUP BY子句 11 1.5.4 HAVING子句 12 1.5.5 SELECT列表 12 1.5.6 ORDERBY子句 13 1.6 INSERT语句 14 1.6.1 单表插入 14 1.6.2 多表插入 15 1.7 UPDATE语句 17 1.8 DELETE语句 20 1.9 MERGE语句 22 1.10 小结 24 第2章
SQL
执行 25 2.1 Oracle架构基础 25 2.2 SGA-共享池 27 2.3 库高速缓存 28 2.4 完全相同的语句 29 2.5 SGA-缓冲区缓存 32 2.6 查询转换 35 2.7 视图合并 36 2.8 子查询解嵌套 39 2.9 谓语前推 42 2.10 使用物化视图进行查询重写 44 2.11 确定执行计划 46 2.12 执行计划并取得
数据
行 50 2.13
SQL
执行——总览 52 2.14 小结 53 第3章 访问和联结方法 55 3.1 全扫描访问方法 55 3.1.1 如何选择全扫描操作 56 3.1.2 全扫描与舍弃 59 3.1.3 全扫描与多块读取 60 3.1.4 全扫描与高水位线 60 3.2 索引扫描访问方法 65 3.2.1 索引结构 66 3.2.2 索引扫描类型 68 3.2.3 索引唯一扫描 71 3.2.4 索引范围扫描 72 3.2.5 索引全扫描 74 3.2.6 索引跳跃扫描 77 3.2.7 索引快速全扫描 79 3.3 联结方法 80 3.3.1 嵌套循环联结 81 3.3.2 排序-合并联结 83 3.3.3 散列联结 84 3.3.4 笛卡儿联结 87 3.3.5 外联结 88 3.4 小结 94 第4章
SQL
是关于集合的 95 4.1 以面向集合的思维方式来思考 95 4.1.1 从面向过程转变为基于集合的思维方式 96 4.1.2 面向过程vs.基于集合的思维方式:一个例子 100 4.2 集合运算 102 4.2.1 UNION和UNION ALL 103 4.2.2 MINUS 106 4.2.3 INTERSECT 107 4.3 集合与空值 108 4.3.1 空值与非直观结果 108 4.3.2 集合运算中的空值行为 110 4.3.3 空值与GROUP BY和ORDER BY 112 4.3.4 空值与聚合函数 114 4.4 小结 114 第5章 关于问题 116 5.1 问
出
好的问题 116 5.2 提问的目的 117 5.3 问题的种类 117 5.4 关于问题的问题 119 5.5 关于
数据
的问题 121 5.6 建立逻辑表达式 126 5.7 小结 136 第6章
SQL
执行计划 137 6.1 解释计划 137 6.1.1 使用解释计划 137 6.1.2 理解解释计划可能达不到目的的方式 143 6.1.3 阅读计划 146 6.2 执行计划 148 6.2.1 查看最近生成的
SQL
语句 149 6.2.2 查看相关执行计划 149 6.2.3 收集执行计划统计信息 151 6.2.4 标识
SQL
语句以便以后取回计划 153 6.2.5 深入理解DBMS_XPLAN的细节 156 6.2.6 使用计划信息来解决问题 161 6.3 小结 169 第7章 高级分组 170 7.1 基本的GROUP BY用法 171 7.2 HAVING子句 174 7.3 GROUP BY的“新”功能 175 7.4 GROUP BY的CUBE扩展 175 7.5 CUBE的实际应用 179 7.6 通过GROUPING()函数排除空值 185 7.7 用GROUPING()来扩展报告 186 7.8 使用GROUPING_ID()来扩展报告 187 7.9 GROUPING SETS与ROLLUP() 191 7.10 GROUP BY局限性 193 7.11 小结 196 第8章 分析函数 197 8.1 示例
数据
197 8.2 分析函数剖析 198 8.3 函数列表 199 8.4 聚合函数 200 8.4.1 跨越整个分区的聚合函数 201 8.4.2 细粒度
窗口
声明 201 8.4.3 默认
窗口
声明 202 8.5 Lead和Lag 202 8.5.1 语法和排序 202 8.5.2 例1:从前一行中返回一个值 203 8.5.3 理解
数据
行的位移 204 8.5.4 例2:从下一行中返回一个值 204 8.6 First_value和Last_value 205 8.6.1 例子:使用First_value来计算最大值 206 8.6.2 例子:使用Last_value来计算最小值 207 8.7 其他分析函数 207 8.7.1 Nth_value(11gR2) 207 8.7.2 Rank 209 8.7.3 Dense_rank 210 8.7.4 Row_number 211 8.7.5 Ratio_to_report 211 8.7.6 Percent_rank 212 8.7.7 Percentile_cont 213 8.7.8 Percentile_disc 215 8.7.9 NTILE 215 8.7.10 Stddev 216 8.7.11 Listagg 217 8.8 性能调优 218 8.8.1 执行计划 218 8.8.2 谓语 219 8.8.3 索引 220 8.9 高级话题 221 8.9.1 动态
SQL
221 8.9.2 嵌套分析函数 222 8.9.3 并行 223 8.9.4 PGA大小 224 8.10 组织行为 224 8.11 小结 224 第9章 Model子句 225 9.1 电子表格 225 9.2 通过Model子句进行跨行引用 226 9.2.1 示例
数据
226 9.2.2 剖析Model子句 227 9.2.3 规则 228 9.3 位置和符号引用 229 9.3.1 位置标记 229 9.3.2 符号标记 230 9.3.3 FOR循环 231 9.4 返回
更新
后的行 232 9.5 求解顺序 233 9.5.1 行求解顺序 233 9.5.2 规则求解顺序 235 9.6 聚合 237 9.7 迭代 237 9.7.1 一个例子 238 9.7.2 PRESENTV与空值 239 9.8 查找表 240 9.9 空值 242 9.10 使用Model子句进行性能调优 243 9.10.1 执行计划 243 9.10.2 谓语前推 246 9.10.3 物化视图 247 9.10.4 并行 249 9.10.5 Model子句执行中的分区 250 9.10.6 索引 251 9.11 子查询因子化 252 9.12 小结 253 第10章 子查询因子化 254 10.1 标准用法 254 10.2
SQL
优化 257 10.2.1 测试执行计划 257 10.2.2 跨多个执行的测试 260 10.2.3 测试查询改变的影响 263 10.2.4 寻找其他优化机会 266 10.2.5 将子查询因子化应用到PL/
SQL
中 270 10.3 递归子查询 273 10.3.1 一个CONNECT BY的例子 274 10.3.2 使用RSF的例子 275 10.3.3 RSF的限制条件 276 10.3.4 与CONNECT BY的不同点 276 10.4 复制CONNECT BY的功能 277 10.4.1 LEVEL伪列 278 10.4.2 SYS_CONNECT_BY_PATH函数 279 10.4.3 CONNECT_BY_ROOT运算符 281 10.4.4 CONNECT_BY_ISCYCLE伪列和NOCYCLE参数 284 10.4.5 CONNECT_BY_ISLEAF伪列 287 10.5 小结 291 第11章 半联结和反联结 292 11.1 半联结 292 11.2 半联结执行计划 300 11.3 控制半联结执行计划 305 11.3.1 使用提示控制半联结执行计划 305 11.3.2 在实例级控制半联结执行计划 308 11.4 半联结限制条件 310 11.5 半联结必要条件 312 11.6 反联结 312 11.7 反联结执行计划 317 11.8 控制反联结执行计划 326 11.8.1 使用提示控制反联结执行计划 326 11.8.2 在实例级控制反联结执行计划 327 11.9 反联结限制条件 330 11.10 反联结必要条件 333 11.11 小结 333 第12章 索引 334 12.1 理解索引 335 12.1.1 什么时候使用索引 335 12.1.2 列的选择 337 12.1.3 空值问题 338 12.2 索引结构类型 339 12.2.1 B-树索引 339 12.2.2 位图索引 340 12.2.3 索引组织表 341 12.3 分区索引 343 12.3.1 局部索引 343 12.3.2 全局索引 345 12.3.3 散列分区与范围分区 346 12.4 与应用特点相匹配的解决方案 348 12.4.1 压缩索引 348 12.4.2 基于函数的索引 350 12.4.3 反转键索引 353 12.4.4 降序索引 354 12.5 管理问题的解决方案 355 12.5.1 不可见索引 355 12.5.2 虚拟索引 356 12.5.3 位图联结索引 357 12.6 小结 359 第13章 SELECT以外的内容 360 13.1 INSERT 360 13.1.1 直接路径插入 360 13.1.2 多表插入 363 13.1.3 条件插入 364 13.1.4 DML错误日志 364 13.2 UPDATE 371 13.3 DELETE 376 13.4 MERGE 380 13.4.1 语法和用法 380 13.4.2 性能比较 383 13.5 小结 385 第14章 事务处理 386 14.1 什么是事务 386 14.2 事务的ACID属性 387 14.3 事务隔离级别 388 14.4 多版本读一致性 390 14.5 事务控制语句 391 14.5.1 Commit(提交) 391 14.5.2 Savepoint(保存点) 391 14.5.3 Rollback(回滚) 391 14.5.4 Set Transaction(设置事务) 391 14.5.5 Set Constraints(设置约束) 392 14.6 将运算分组为事务 392 14.7 订单录入模式 393 14.8 活动事务 399 14.9 使用保存点 400 14.10 序列化事务 403 14.11 隔离事务 406 14.12 自治事务 409 14.13 小结 413 第15章 测试与质量保证 415 15.1 测试用例 416 15.2 测试方法 417 15.3 单元测试 418 15.4 回归测试 422 15.5 模式修改 422 15.6 重复单元测试 425 15.7 执行计划比较 426 15.8 性能测量 432 15.9 在代码中加入性能测量 432 15.10 性能测试 436 15.11 破坏性测试 437 15.12 通过性能测量进行系统检修 439 15.13 小结 442 第16章 计划稳定性与控制 443 16.1 计划不稳定性:理解这个问题 443 16.1.1 统计信息的变化 444 16.1.2 运行环境的改变 446 16.1.3
SQL
语句的改变 447 16.1.4 绑定变量窥视 448 16.2 识别执行计划的不稳定性 450 16.2.1 抓取当前所运行查询的
数据
451 16.2.2 查看一条语句的性能历史 452 16.2.3 按照执行计划聚合统计信息 454 16.2.4 寻找执行计划的统计方差 454 16.2.5 在一个时间点附近检查偏差 456 16.3 执行计划控制:解决问题 458 16.3.1 调整查询结构 459 16.3.2 适当使用常量 459 16.3.3 给优化器一些提示 459 16.4 执行计划控制:不能直接访问代码 466 16.4.1 选项1:改变统计信息 467 16.4.2 选项2:改变
数据
库参数 469 16.4.3 选项3:增加或移除访问路径 469 16.4.4 选项4:应用基于提示的执行计划控制机制 470 16.4.5 大纲 470 16.4.6
SQL
概要文件 481 16.4.7
SQL
执行计划基线 496 16.4.8 基于提示的执行计划控制机制总结 502 16.5 结论 502 媒体评论 本书作者全部是OakTable的成员,且具有15~29年丰富的Oracle开发经验。在研究一些被其他专门讨论Oracle
SQL
语言的参考书直接忽略的问题时,这种对Oracle
数据
库的长期钻研无疑是一个巨大的优势。 ——亚马逊读者评论 精彩内容
SQL
核心 凯伦?莫顿(Karen Morton) 不管你是刚开始写
SQL
语句还是已经写过很多年了,学会写
出
“好的”
SQL
这个过程都需要具有很扎实的
SQL
核心语法和概念基础知识。本章对
SQL
语言的核心概念及其性能做了回顾,同时还描述了一些你应该已经很熟悉的常用
SQL
命令。对于那些以前曾经使用过
SQL
并且基础知识相当牢靠的读者来说,本章就是一个简要的复习,让你为后面更详细的
SQL
论述做好准备。如果你是一位
SQL
新人,你可能想要先阅读Beginning Oracle
SQL
这本书以确保掌握
SQL
的基础。不管是哪种情况,第1章的目的就是通过对5个核心
SQL
语句的快速浏览来衡量一下你的
SQL
水平,同时还概述了我们用来执行
SQL
语句的工具:
SQL
*Plus。 1.1
SQL
语言
SQL
语言最早是IBM公司于20世纪70年代开发
出
来的,称为结构化英文查询语言,简称为SEQUEL。该语言是基于E.F.Codd在1969年提
出
的关系型
数据
库管理系统(RDBMS)的。后来因为商标的纠纷,其简称又进一步缩写为
SQL
。1986年和1987年,ANSI(美国国家标准化组织)和ISO(国际标准化组织)先后将
SQL
语言采纳为标准语言。而人们并不熟悉的是,ANSI官方曾将
SQL
语言的读音确定为“S-Q-L”。绝大多数人,包括我本人,都还在使用“sequel”的读音,只是因为这样读起来更顺口一些。
SQL
的目的就是简单地提供一个到
数据
库的接口,在本书指的是Oracle
数据
库。每一条
SQL
语句对于
数据
库来说就是一条命令或指令。
SQL
与其他编程语言(如C或Java)的区别就在于它是要处理
数据
集合而不是一行一行的
数据
。语言本身也不需要你提供如何导航到
数据
的指令——这是在后台透明地进行的。但你将在后面的章节中看到,如果想在Oracle中写
出
高效的
SQL
语句,了解
数据
及其在
数据
库中的存储方式与存储位置是很重要的。 由于不同的供应商(例如甲骨文、IBM和微软)实现
SQL
核心功能的机制相差无几,所以基于某一种
数据
库所学的技巧同样可以应用到其他类型的
数据
库上。你基本上可以利用同样的
SQL
语句来进行
数据
的查询、插入、
更新
和
删除
,以及创建、修改和
删除
对象,而不必管
数据
库的供应商是哪家。 尽管
SQL
是各种关系型
数据
库管理系统的标准语言,但实际上它并不一定是关系型的。在本书后面我将就这一点稍作扩展。如果想要了解更多的细节,我推荐大家阅读C.J.Date的
SQL
and Relational Theory一书。需要铭记于心的一点是
SQL
语言并不总是严格遵守关系模型的——它根本就没有实现关系模型的某些要素,同时还不恰当地实现了一些要素。事实上,既然
SQL
是基于关系模型的,那么要想写
出
尽可能正确高效的
SQL
语句,你不仅必须要理解
SQL
语言,还要理解关系模型。 1.2
数据
库的接口 多年以来人们开发
出
多种途径来传递
SQL
语句到
数据
库并获得结果。Oracle
数据
库的本地接口界面是Oracle调用界面(OCI)。OCI将由Oracle内核传送而来的查询语句发送到
数据
库。当使用某种Oracle工具如
SQL
*Plus或者
SQL
Developer时,你都在使用OCI。其他的Oracle工具如
SQL
*Loader、
数据
泵(Data Pump)以及Real Application Testing (RAT)既使用OCI,也可以使用语言特定的接口,如Oracle JDBC-OCI、ODP.Net、Oracle预编译器、Oracle
ODBC
以及Oracle C++调用接口(OCCI)驱动器。 当使用编程语言(如COBOL或C语言)时,你所写的语句被称为嵌入式的
SQL
语句并且在应用程序编译之前会由
SQL
预处理器进行预处理。代码清单1-1是一段可以在C/C++程序块中使用的
SQL
语句的例子。 代码清单1-1 C/C++程序块中所嵌入的
SQL
语句 其他工具,例如
SQL
*Plus和
SQL
Developer,都是交互式的工具。你输入并执行命令,然后获得相应的输
出
。交互式工具并不需要在运行代码前先精确编译,你只需要输入想要执行的命令即可。代码清单1-2是一段使用
SQL
*Plus执行语句的例子。 代码清单1-2 使用
SQL
*Plus执行
SQL
语句 在本书中,为了保持一致性我们所用的示例代码清单都使用
SQL
*Plus工具,但需要记住的是,不管你是用什么方法或工具来输入和执行
SQL
语句,所有的事情最后都要通过OCI来传递到
数据
库。这里的主旨就是不管你所使用的是什么工具,其本地接口都是一样的。 1.3
SQL
*Plus回顾
SQL
*Plus是一个不管采用哪个安装平台(Windows或Unix)都会提供的命令行工具。它是一个用来输入和执行
SQL
语句并显示输
出
结果的纯文本环境。用该工具可以直接输入、编辑命令,可以一条条地保存和执行命令或者通过脚本文件来进行,然后将输
出
结果以很精美格式的报表输
出
。要启动
SQL
*Plus你只需要在主机的命令提示符后敲入
sql
plus即可。 1.3.1 连接到
数据
库 有多种方法可以通过
SQL
*Plus连接
数据
库。然而在连接之前,你还需要在$ORACLE_HOME/ network/admin/tnsnames.ora这个文件中登记想要连接的
数据
库。有两种通常使用的方法,或者如代码清单1-3所示那样在启动
SQL
*Plus时提供连接信息,或者如代码清单1-4所示那样在启动
SQL
*Plus以后使用connect命令。 代码清单1-3 通过
窗口
命令提示符连接到
SQL
*Plus 如果想要启动
SQL
*Plus而又不显示登录到
数据
库后的提示,可以在启动
SQL
*Plus时使用/nolog选项。 代码清单1-4 通过
SQL
>提示符连接
SQL
*Plus并登录到
数据
库 1.3.2 配置
SQL
*Plus环境
SQL
*Plus有很多的命令可以让你来定制工作环境和显示选项。代码清单1-5所示是在
SQL
>提示符下输入help index命令后显示
出
来的可用的命令。 代码清单1-5
SQL
*Plus命令列表 set命令是用来定制工作环境的最基本的命令。代码清单1-6为set命令的帮助文本。 代码清单1-6
SQL
*Plus的SET命令 有了上面这些可用命令,你就能够很轻松地定制最适合你的运行环境了。但有一点要铭记于心的就是当你退
出
或关闭
SQL
*Plus的时候,这些设置命令就不再被保留了。为了避免每次使用
SQL
*Plus时都重新敲入一遍这些设置命令,你可以创建一个login.
sql
文件。事实上每次启动
SQL
*Plus的时候它都会默认去读两个文件。第一个是$ORACLE_HOME/
sql
plus/admin目录下的glogin.
sql
文件。如果找到了这个文件,它就会被读进来,文件中的命令语句也会被执行。这样就可以把那些定制你的会话体验的
SQL
*Plus命令和
SQL
语句保存起来。 在读取glogin.
sql
文件以后,
SQL
*Plus会进一步寻找login.
sql
文件。这个文件必须在
SQL
*Plus的启动文件夹中或者包含在环境变量
SQL
PATH所指向的文件夹路径中。在login.
sql
文件中的所有命令优先级都比glogin.
sql
文件中的命令高。从10g开始,Oracle在每次你启动
SQL
*Plus或者从
SQL
*Plus里执行connect命令的时候都会同时去读取glogin.
sql
和login.
sql
这两个文件。在Oracle 10g之前,login.
sql
脚本文件只有在
SQL
*Plus启动的时候才会被执行。代码清单1-7是一个常见的login.
sql
文件内容。 代码清单1-7 一个常见的login.
sql
文件 注意这里在SET
SQL
PROMPT中使用的变量_user和_connect_identifier。它们是预定义变量的两个示例。你可以在login.
sql
文件中或者任何你创建的脚本文件中使用下面这些预定义变量: ·_connect_identifier ·_date ·_editor(这个变量指定了当你使用edit命令的时候启动哪个编辑器) ·_o_version ·_o_release ·_privilege ·_
sql
plus_release ·_user 1.3.3 执行命令 有两种命令可以在
SQL
*Plus中执行:
SQL
语句和
SQL
*Plus命令。代码清单1-5和代码清单1-6中所列
出
的
SQL
*Plus命令对于
SQL
*Plus来说是特有的命令,可以用来定制运行环境并且可以运行
SQL
*Plus特有的命令,例如DESCRIBE和CONNECT。要想执行一个
SQL
*Plus命令,你只需在命令提示符后输入该命令然后敲回车,命令会自动被执行。另一方面,如果要执行
SQL
语句,就必须使用一个特定字符来表明你想要执行输入的语句,分号(;)或者斜线(/)都可以。使用分号的话可以直接放在输入命令的后面或者放在接下来的空行中,而斜线则必须放在接下来的空行中才可以被识别。代码清单1-8展示了如何使用这两种符号。 代码清单1-8 执行字符的用法 注意第5个在语句最后面加了一个斜线(/)的例子。光标移动到了下一行而不是立即执行语句命令。接下来,如果你再按一下回车键,语句就会被放入
SQL
*Plus的缓冲器中,但是也不执行。如果想要查看
SQL
*Plus缓冲器中的内容,可以使用list命令(也可以简写为l)。接下来如果你想在缓冲器中通过使用斜线(/)来执行语句[尽管斜线(/)命令本来就是这样来用的]在这里也将会返回一个错误。这是因为你最初在
SQL
语句的结尾敲入了一个斜线(/),而斜线(/)并不是一个有效的
SQL
命令,从而在语句想要执行的时候报错。 另外一种执行命令的方法是把命令放到一个文件中。你可以在
SQL
*Plus之外直接用文本编辑器生成这些文件,也可以在
SQL
*Plus中使用EDIT命令来直接调用编辑器。如果已经有了一个文件,EDIT命令可以打开这个文件,如果没有的话就会创建新的文件。文件必须放在默认文件夹中,否则你必须指定文件的全路径。想要设定所选择的编辑器,你只需要利用命令define_ editor='//myeditor.exe'来设置预定义变量_editor。具有.
sql
扩展名的文件在执行的时候不必敲入扩展名,通过@或START命令都可以执行。代码清单1-9中列
出
了这两个命令的用法。 代码清单1-9 执行.
sql
脚本文件
SQL
*Plus具有很多特性和选项,以致于多得在这里不能一一列举。就本书需要而言,这种概述就已经足够了。但是,Oracle文档对
SQL
*Plus的用法给
出
了指导,而且很多的书,比如Beginning Oracle
SQL
,都对
SQL
*Plus作了更为深入的阐述,如果感兴趣你可以参考。 1.4 5个核心的
SQL
语句
SQL
语言有很多不同的语句,但在整个职业生涯中,你可能只会用到其中很少的一部分。不过你所使用的几乎其他任何产品不也是这样的吗?据说有一个统计结果是,绝大多数人都仅使用了他们常用的软件产品或编程语言所有功能的20%甚至更少。我不知道这个统计真实与否,但以我的经验来看,这似乎是很准确的。我发现同样的基本
SQL
语句格式在大多数应用中使用了将近20年了。极少数的人使用过
SQL
提供的所有功能——即使对于那些他们确实经常使用的功能也常常用得不是很恰当。显而易见,我们不可能覆盖
SQL
语言的所有语句以及它们的选项。本书的目的在于让你能够深入理解那些最常用的
SQL
语句并帮助你更高效地使用它们。 在本书中,我们将重点讨论5个最常用的
SQL
语句,它们分别为SELECT、INSERT、UPDATE、DELETE以及MERGE。尽管这些核心语句都将逐个讲解,但重中之重还是SELECT语句。将这5个语句用好了将会为你在日常工作中用好
SQL
语言打下坚实的基础。 1.5 SELECT语句 SELECT语句用来从一个或多个表中或者其他
数据
库对象中提取
数据
。你应该已经很熟悉SELECT语句的基础知识了,所以我将不再从一个初学者的角度来介绍SELECT语句,而是首先回顾一下SELECT语句的执行逻辑。对于如何来写一个基本的SELECT语句你应该已经学习过了,但为了培养基本的思维模式,你要一直写
出
符合语法规则的高效
SQL
语句,你需要理解
SQL
语句是如何执行的。 一个查询语句在逻辑上的处理方式可能会与实际物理处理过程大相径庭。Oracle基于查询成本的优化器(cost-based optimizer , CBO)用来产生实际的执行计划。我们在后面的章节中将会讲解优化器是干什么的,如何来实现其功能的以及为什么要进行优化。目前,我们需要关心的是优化器将会决定如何访问表、按照什么样的顺序来处理它们,以及如何将多个表联结起来及如何使用筛选器。查询的处理在逻辑上是按照特定的顺序进行的,但是,优化器所选择的物理执行计划可能会按照完全不同的顺序来实际执行这些步骤。代码清单1-10是一段包含SELECT语句的主要子句的查询片段,在其中标
出
了每一个子句的逻辑处理顺序。 代码清单1-10 查询语句的逻辑处理顺序 你应该立刻注意到
SQL
有别于其他编程语言的一点在于首先处理的并不是写在第一行的语句(SELECT语句),而是FROM子句。注意在这个代码清单中我给
出
了两个不同的FROM子句。标记为1.1的那个FROM子句表示的是当使用ANSI语法时的不同。我们可以把处理过程中的每一个步骤想象为生成一个临时的
数据
集。随着每个处理步骤的进行,这个
数据
集被不断地操作直到生成最终的处理结果。查询返回给调用者的就是这个最终结果
数据
集。 为了更详细地了解SELECT语句的每个部分,你可以参考代码清单1-11所示的查询语句,该语句返回的结果集为下订单超过4次的女顾客的列表。 代码清单1-11 下订单超过4次的女顾客查询语句 1.5.1 FROM子句 FROM子句列
出
了所查询
数据
的源对象。这个子句可以包含表、视图、物化视图、分区或子分区,或者你可以建立一个子查询来生成子对象。如果使用了多个源对象,其逻辑处理阶段也将会应用到每一个联结类型以及谓词ON(如步骤1.1所示)。在本书后面的章节中你将会进一步了解联结类型的更多细节,但注意在处理联结语句的时候是按照下面的顺序来进行的: (1) 交叉联结,也称为笛卡儿乘积; (2) 内联结; (3) 外联结。 在代码清单1-11所示的查询例子中,FROM子句列
出
了两张表:customers和orders,通过customer_id列来联结。因此,当处理这一信息时,FROM子句所生成的初始
数据
集将会包含这两张表中customer_id相匹配的行。在本例中结果集将会包含105行。为了验证这一点,只要执行例子中的前4行,如代码清单1-12所示。 代码清单1-12 仅通过FROM子句的部分查询语句的执行 注意 为了使之很好地适应页面我手工调整了输
出
结果,实际输
出
结果在页面上超过105行。 1.5.2 WHERE子句 WHERE子句提供了一种方法,可以按照条件来限制查询最终返回结果集的行数。每个条件或者谓语都是以两个值或表达式相比较的形式
出
现的。比较的结果要么是匹配(值为TRUE)要么是不匹配(值为FALSE)。如果比较的结果是FALSE,那么相应的行不会被包含在最终结果集中。 这里我需要稍微偏离一下主题,来谈一谈与这一步相关的
SQL
中的一个重要方面。事实上,
SQL
中逻辑比较的可能结果是TRUE、FALSE以及未知。当其中包含空值(null)的时候比较的结果就会是未知。空值与任何值比较或者用在表达式中都会得到空值,或者是未知。一个空值代表一个相应值的缺失,并且可能因为
SQL
语言中的不同部分对空值的处理不同而令人费解。关于空值是如何影响
SQL
语句执行的话题将会贯穿本书,但在这里我不得不先提及一下这个话题。我之前所说的还是基本正确的,一个比较的返回值将会是TRUE或者FALSE。你会发现当进行筛选的比较条件中包含空值的时候,将作为FALSE来对待。 在我们的例子中,只有一个将结果限定为下了订单的女性消费者的谓语。如果你查看FROM子句执行之后的中间结果(见代码清单1-12),你会发现105行中仅有31行是由女性消费者所下的订单(gender = 'F')。因此,在应用了WHERE子句以后,中间结果集将从105行减少到31行。 应用WHERE子句以后得到了更精确的结果集。注意,在这里使用的是“精确的结果集”。我的意思是说现在已经得到了能够满足你查询需求的
数据
行。其他子句(GROUP BY, HAVING)也许可以用来聚合并且进一步限制调用程序会接收到的最终的结果集,但需要注意的很重要的一点是,目前已经得到了查询计算最终结果所需的所有
数据
。 WHERE子句的目的是限制或者减小结果集。你所使用的限制条件越少,最终返回的结果集中包含的
数据
就会越多。你需要返回的
数据
越多,执行查询的时间也就越长。 1.5.3 GROUP BY子句 GROUP BY子句将执行FROM和WHERE子句后得到的经过筛选后的结果集进行聚合。查询
出
来的结果按照GROUP BY子句中列
出
的表达式进行分组,来为每一个分组得
出
一行汇总结果。你可以按照FROM子句中所列
出
对象的任意字段进行分组,即使你并不想在输
出
结果列表中显示该列。相反,Select列表中的任何非聚合字段都必须包括在GROUP BY表达式中。 GROUP BY子句中还可以包含两个附加的运算:ROLLUP 和CUBE。ROLLUP运算用来产生部分求和值,CUBE运算用来求得交互分类值。当你使用这两种运算中任意一个的时候,你将会得到不止一行的汇总信息。在第7章中将会对这两个运算进行更详细的讨论。 在示例查询中,需要按照customer_id来进行分组。这就意味着对于每一个唯一的customer_id只会返回一行值。在WHERE子句执行后所得到的代表下订单的女性消费者的31行订单中,有11个独特的customer_id值,如代码清单1-13所示。 代码清单1-13 截至GROUP BY子句的部分查询执行 你会发现查询的结果是经过分组的,但并没有排序。表面上看结果好像是按照order_ct字段排序的,但这仅仅是个巧合而不是确定的行为。需要记住的很重要的一点是:GROUP BY子句并不确定结果
数据
的排序。如果你需要结果按照特定的顺序排列,则必须指定一个order by子句。 1.5.4 HAVING子句 HAVING子句将分组汇总后的查询结果限定为只有该子句中的条件为真的
数据
行。除非你使用HAVING子句,否则将返回所有的汇总行。事实上,GROUP BY子句和HAVING子句的位置是可以互换的,谁先谁后都无关紧要。但是,似乎在编码中将GROUP BY子句放在前面更有意义一些,因为GROUP BY子句在逻辑上是先执行的。从本质上来说,HAVING子句是在GROUP BY子句执行后用来筛选汇总值的第二个WHERE子句。 在我们的查询例子中,HAVING子句HAVING COUNT(o.order_id) > 4,将分组
数据
从11行减少到2行。这一点你可以通过查看GROUP BY子句应用后返回的结果行来确认,如代码清单1-13所示。注意仅有146和147号消费者所下的订单数超过4次。这样就产生了组成最终结果集的两行
数据
。 1.5.5 SELECT列表 SELECT列表列
出
查询的返回最终结果集中需要显示哪些列。这些列可以是
数据
表中一个实际的列、一个表达式,或者甚至是一个SELECT语句的结果,如代码清单1-14所示。 代码清单1-14 展现SELECT列表各种可能情况的查询实例
SQL
> select.customer_id, c.cust_first_name||''||c.cust_last_name, . 当使用另外一个SELECT语句来产生结果中的一列的值的时候,这个查询必须只能返回一行一列的值。这种类型的子查询被称为标量子查询。尽管这可能是一个非常有用的语法,但需要牢记于心的是标量查询在结果集中的每一行结果产生时都要执行一遍。在某些情况下可以进行优化以减少标量子查询的重复执行,但更糟糕的场景是每一行都需要标量子查询执行。你可以想象如果你的结果集中有几千行甚至上百万行
数据
的时候所需要付
出
的查询代价!在后面的章节中我们还将回顾标量子查询并讨论如何更好地来使用它们。 在SELECT列表中你还有可能用到的一个选项是DISTINCT子句。在例子中并没有使用它,但我想要简要地提及一下。DISTINCT子句用来在其他子句执行完毕以后从结果集中去除重复的行。 SELECT列表执行完以后,你就得到了最终的查询结果集。所剩的唯一需要做的事情,如果包含了的话,就是将查询结果集按照所需的顺序排序。 1.5.6 ORDER BY子句 ORDER BY子句用来对查询最终返回的结果集进行排序。在本例中,需要按照orders_ct和customer_id进行排序。orders_ct这一列是通过GROUP BY子句中的COUNT聚合函数计算得到的值。如代码清单1-13中所示,有两个消费者的订单超过4个。由于这两个消费者的订单数都是5份,orders_ct这一列的值是相同的,所以要由第二个排序列来确定最终结果的显示顺序。如代码清单1-15中所示,该查询的最终经过排序的输
出
结果是按照customer_id排序的两行
数据
集。 代码清单1-15 示例查询的最终输
出
当输
出
结果需要排序的时候,Oracle必须在其他所有子句都执行完之后按照指定的顺序对最终结果集进行排序。需要排序的
数据
量大小是非常重要的。我这里所说的大小是指结果集中所包含的总字节数。你可以通过用行数乘以每一行的字节数来估计
数据
集的大小。每行所包含的字节数通过将选择列表中包含的每一列的平均长度相加来确定。 上面的查询实例在选择列表中仅需要列
出
customer_id 和orders_ct两列的值。我们可以估算每一行输
出
值的字节数为10。在第6章中我将阐述从哪里能找到优化器所估计的值。因此,如果我们在结果集中只有两行
数据
,排序的大小实际上是很小的,大约20字节。请记住这仅仅是估算,但这样的估算也是很重要的。 较小的排序会完全在内存中来实现,而较大的排序将不得不使用临时磁盘空间来完成。如你可能推断的那样,在内存中完成的排序比必须使用磁盘的排序要快。因此,当优化器估算排序
数据
的影响时,它必须要考虑排序
数据
集的大小,以此来调整如何能够以最有效的方法来获得查询的结果。一般来说,排序是查询过程中开销相当大的一个处理步骤,尤其是当返回结果集很大的时候。 1.6 INSERT语句 INSERT语句用来向表、分区或视图中添加行。可以向单表或者多个表方法中添加
数据
行。单表插入将会向一个表中插入一行
数据
,这行
数据
可以显式地列
出
插入值也可以通过一个子查询来获取。多表插入将会向一个或多个表中插入行,并且会通过子查询获取值来计算所插入行的值。 1.6.1 单表插入 代码清单1-16中的第一个例子阐明了使用values子句实现的单表插入。每一列的值都显式地输入。如果你要插入表中所定义的所有列的值,那么列的列表是可选的。但是,如果你只想提供部分列的值,则必须在列的列表中指明所需的列名。好的做法是不管是不是需要插入所有列的值,都把所有列的列表列
出
来。这样做就像该语句的自述文件一样,并且也可以减少将来别人要插入一个新列到表中的时候可能
出
现的错误。 代码清单1-16 单表插入 第二个例子阐述了通过子查询来实现插入。这是插入
数据
行的一个非常灵活的选项。所写的子查询可以返回一行或
多行
数据
。返回的每一行都会用来生成需要插入的新行的列值。根据你的需要这个子查询可以很简单也可以很复杂。在本例中,我们使用子查询实现了在现有薪水的基础上为每一位员工发放10%奖金的计算。事实上奖金表包含4列,但在这个插入中我们只列
出
了3个字段。comm这一列在子查询中并没有占据一列并且我们也没有将它包括在列表中。因为我们没有包含这一列,它的值将会是null。注意如果comm列具有非空约束,那么可能已返回一个约束错误,语句的执行也已失败。 1.6.2 多表插入 代码清单1-17所示的多表插入的例子阐明了一个子查询返回的
数据
行是如何被用来插入多个表中的。我们从3个表开始:small_customers、medium_customers以及large_customers。我们想要按照每位消费者所下订单的总金额来将
数据
分别插入这些表。子查询将每一位消费者的order_total列求和来确定该消费者的消费金额是小(所有订单的累加金额小于10 000美元)、中等(介于10 000美元与99 999.99美元之间)还是大(大于等于100 000美元),然后按照条件将这些行插入对应的表中。 代码清单1-17 多表插入 注意INSERT关键字后面ALL子句的使用。当指定了ALL子句的时候,这个语句就会执行无条件的多表插入。也就意味着每一个WHEN子句按照子查询所返回的每一行来确定值而不管前一个条件的输
出
结果是什么。因此,你需要注意如何来指定每个条件。例如,如果我使用WHEN sum_orders < 100 000这个条件而不是像上面一样列
出
范围,插入medium_customers表中的行有可能也会插入small_customers表中。 你需要指明FIRST选项来实现每一个WHEN子句按照其
出
现在语句中的顺序进行评估,并且对于一个给定的子查询行跳过接下来的WHEN子句评估。关键在于要记住哪一个选项能够更好地满足你的需要,ALL还是FIRST,然后使用最适合的选项。 1.7 UPDATE语句 UPDATE语句的作用是改变表中原有行的列值。这个语句的语法由3部分组成:UPDATE、SET和WHERE。UPDATE子句用来指定要
更新
的表,SET子句用来指明哪些列改变了以及调整的值,WHERE子句用来按条件筛选需要
更新
的行。WHERE子句是可选的,如果忽略了这个子句的话,
更新
操作将针对指定表中的所有行进行。 代码清单1-18列
出
了几种UPDATE语句的不同写法。首先,我建立了一个employees表的副本,名称为employees2,然后我将执行几个完成基本相同任务的不同
更新
操作:将90部门的员工工资增加10%。在例5中,commission_pct这一列也进行了
更新
。下面就是采用的不同方法。 例1:使用表达式
更新
一个单列的值。 例2:通过子查询
更新
一个单列的值。 例3:通过在WHERE子句中使用子查询确定要
更新
的
数据
行来
更新
单列的值。 例4:通过使用SELECT语句定义表及列的值来
更新
表。 例5:通过子查询
更新
多列。 代码清单1-18 UPDATE语句的例子 1.8 DELETE语句 DELETE语句用来从表中移除
数据
行。该语句的语法结构由3部分组成:DELETE、FROM和WHERE。DELETE关键字是单独列
出
的。除非你决定使用我们后面将会讨论到的提示(hint),没有其他选项与DELETE关键字相结合。FROM子句用来指定要从哪个表中
删除
数据
行。如代码清单1-19中的例子所示,这个表可以直接指定也可以通过子查询来确定。WHERE子句提供筛选条件有助于确定哪些行是要
删除
的。如果忽略了WHERE子句,
删除
操作将
删除
指定表中的所有
数据
行。 代码清单1-19展示
出
了DELETE语句的几种不同写法。注意,在这些例子中我使用了代码清单1-18中创建的employees2表。下面你将看到的就是这些不同的
删除
方法。 例1:使用WHERE子句中的筛选条件来从指定表中
删除
行。 例2:使用FROM子句中的子查询来
删除
行。 例3:使用WHERE子句中的子查询来从指定表中
删除
行。 代码清单1-19 DELETE语句的例子 1.9 MERGE语句 MERGE语句具有按条件获取要
更新
或插入到表中的
数据
行,然后从1个或多个源头对表进行
更新
或者向表中插入行两方面的能力。它最经常被用在
数据
仓库中来移动大量的
数据
,但它的应用不仅限于
数据
仓库环境下。这个语句提供的一个很大的附加值在于你可以很方便地把多个操作结合成一个。这就使你可以避免使用多个INSERT、UPDATE以及DELETE语句。并且,在本书后面的内容中你将看到,如果你避免去做那些不是必须做的事情,响应时间可能得到相应的改善。 MERGE语句的语法是: 为了说明MERGE语句的用法,代码清单1-20展示
出
了如何建立一个测试表,然后恰当地利用MERGE条件来向表中插入或
更新
行。 代码清单1-20 MERGE语句例子 MERGE语句完成了下面这些事情。 ·插入了两行(员工id 106和107)。 ·
更新
了一行(员工id 105)。 ·
删除
了一行(员工id 103)。 ·一行保持不变(员工id 104)。 如果没有MERGE语句,你必须最少写3条不同的语句来完成同样的事情。 1.10 小结 正如你可以从到目前为止的例子中看
出
的,
SQL
语言提供了很多不同的选择来得到同样的结果集。你可能还注意到了一点就是这5个核心的
SQL
语句都可以使用类似的构造,例如子查询。关键是需要搞清楚在各种不同的使用场景下哪种构造是最高效的。我们将在本书后面的内容中阐述如何做到这一点。 如果你对本章的例子的理解有任何困难,请一定花点时间复习Beginning Oracle
SQL
或者Oracle文档中的
SQL
Reference Guide。在本书中接下来的部分我们假设你已经很好地理解了5个核心
SQL
语句的基本构造:SELECT、INSERT、UPDATE、DELETE和MERGE。
Access 2000
数据
库系统设计(PDF)---025
Access 2000
数据
库系统设计(PDF)---025目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署
数据
访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试. 31.2.3 DAP设计模式 51.3 为Microsoft
数据
引擎创建 Access
数据
项目 51.3.1 新的ADP工具和对象 61.3.2 NorthwindCS项目和da Vinci工具箱的深入研究 61.4 OfficeVBA编辑器和Access的集成 91.5 DAP和DHTML的HTML源编辑器 101.6 浏览和编辑子
数据
表中的相关记录 111.7 使Jet和
SQL
Server 7.0/MSDE
数据
库相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2
数据
库
窗口
131.8.3 窗体和报表 141.8.4 名称自动更正 151.8.5 与Office 2000相关的改进 151.9 安装Access 2000 171.9.1 Access 2000的初始安装 171.9.2 定制Access 2000 201.10 安装和配置Microsoft
数据
引擎 20 1.11 现实世界—为什么升级 23第2章 建立第一个Access 2000应用 252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1
数据
库
窗口
中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 使用切换面板管理器 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识的透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access的表显示 443.2.1 最大化文档
窗口
463.2.2 把文档
窗口
最小化为图标 473.2.3 表
数据
表视图中的工具栏 483.2.4 工具栏自定义 503.2.5 右击快捷方式菜单 523.3 使用功能键 533.3.1 全局功能键 533.3.2 字段、网格和文本框的功能键分配 533.4 设置默认的选项 543.4.1 系统默认值 553.4.2
数据
表视图的默认值 583.5 使用Access帮助 593.5.1 上下文相关的帮助 593.5.2 “帮助”菜单 603.5.3 Microsoft Access的帮助
窗口
613.5.4 “Office助手” 643.6 使用“
数据
库实用工具” 663.6.1 压缩和修复
数据
库 673.6.2 将
数据
库转换为Access 2000格式 683.6.3 将
数据
库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access
数据
库和表 724.1 定义Access
数据
库的元素 724.2 理解关系型
数据
库 744.3 使用Access
数据
库文件和表 754.3.1 Access系统
数据
库 754.3.2 Access 库
数据
库 754.4 创建一个新
数据
库 754.5 理解表和字段的属性 774.6 选择字段
数据
类型、大小和格式 804.6.1 为数值和文本
数据
选择字段大小 814.6.2 选择显示格式 834.6.3 使用输入掩码 874.7 使用Northwind Traders示例
数据
库 884.8 向现有的
数据
库添加一个新表 904.8.1 设计Personnel Actions表 914.8.2 创建Personnel Actions表 934.8.3 在
数据
表视图中直接创建一个表 964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中字段的顺序 1044.11.2 改变字段
数据
类型和大小 1054.11.3 改变表之间的关系 1064.12 复制和粘贴表 1074.13 疑难解答 1084.14 现实世界—
数据
库战略和表战术 108第5章 输入、编辑和验证表中的
数据
1105.1 在Access表中输入测试
数据
1105.2 使用键盘操作进行
数据
输入和编辑
数据
1105.2.1 创建Northwind.mdb的试验用复本 1115.2.2 使用
数据
输入和编辑键 1115.2.3 用于Windows剪贴板操作的组合键 1125.2.4 在字段和文本框上使用快捷键 1135.2.5 设置
数据
输入选项 1145.3 向表中添加记录 1145.4 选择、追加、替换和
删除
表记录 1155.5 验证
数据
输入 1165.5.1 添加字段级有效性规则 1165.5.2 添加表级有效性规则和使用表达式生成器 1185.6 向Personnel Actions表添加记录 1195.7 输入Personnel Actions表
数据
和测试有效性规则 1205.8 疑难解答 1215.9 现实世界—批量
数据
输入 121第6章 排序、查找和筛选表中的
数据
1236.1 理解排序和筛选的作用 1236.2 排序表的
数据
1236.2.1 冻结表中某个字段的显示 1246.2.2 在单个字段上排序
数据
1246.2.3 在多个字段上排序
数据
1256.2.4
删除
表排序次序和解冻列 1256.3 查找表中的匹配记录 1266.4 自动地替换匹配的字段值 1276.5 筛选表
数据
1286.5.1 按选定内容筛选 1286.5.2 按窗体筛选 1306.5.3 高级筛选和排序 1326.5.4 添加一个多字段排序和复合筛选准则 1326.5.5 使用复合准则 1346.5.6 将筛选保存为查询与筛选的加载 1356.6 定制
数据
表视图 1366.7 复制、导
出
和邮寄排序和筛选后的
数据
1386.8 疑难解答 1396.9 现实世界—基于计算机的排序和搜索 139第7章 链接、导入和导
出
表 1417.1 从其他应用或者向其他应用移动
数据
1417.2 理解Access如何处理其他
数据
库文件格式的表 1427.2.1 识别PC
数据
库文件格式 1437.2.2 链接和导入外部 ISAM表 1437.2.3 用
ODBC
链接Visual FoxPro表 1457.2.4 处理外部文件中的图像 1487.2.5 将字段
数据
类型转换为Access
数据
类型 1497.2.6 使用链接表管理器加载项重新链接表 1507.2.7 导入表和将
数据
库文件链接为表 1507.3 导入和链接电子
数据
表文件 1517.3.1 通过导入Excel工作表创建一个表 1517.3.2 链接Excel工作表 1567.4 使用Microsoft Outlook和Exchange文件夹 1567.4.1 用Outlook导
出
和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617.5.2 导入文本向导的高级选项 1637.5.3 使用分隔文本文件 1657.5.4 处理宽度固定的文本文件 1667.5.5 追加文本
数据
到一个现有的表 1677.6 使用剪贴板导入
数据
1677.6.1 向一个表粘贴新记录 1687.6.2 通过从剪贴板上粘贴来替换记录 1707.7 从Access表导
出
数据
1717.7.1 通过Windows剪贴板导
出
数据
1717.7.2 将
数据
导
出
为一个文本文件 1727.7.3 以其他文件格式导
出
数据
1737.8 疑难解答 1737.9 现实世界—Microsoft的付
出
与回报 175第二部分 最大限度地利用查询第8章 设计Access 查询 1778.1 查询简介 1778.2 “简单查询向导”的使用 1778.3 使用查询设计
窗口
1798.3.1 为查询选择字段 1808.3.2 按准则选择记录和排序显示 1828.3.3 创建更为复杂的查询 1838.3.4 改变查询列标题的名字 1848.3.5 将查询作为报表进行打印 1868.3.6 使用查询的
数据
1878.4 创建其他的查询类型 1888.4.1 创建和使用简单的生成表操作查询 1888.4.2 向生成表查询添加参数 1908.5 疑难解答 1918.6 现实世界—查询设计优化 191第9章 理解查询操作符和表达式 1939.1 编写表达式作为查询准则和
数据
验证依据 1939.2 理解表达式中的元素 1949.2.1 操作符 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行
数据
有效性验证 2069.3.3 作为查询准则的表达式 2069.3.4 计算查询字段值的表达式 2109.3.5 表达式的其他用途 2129.4 疑难解答 2129.5 现实世界—Access表达式代数学 212第10章 创建多表查询和交叉表查询 21410.1 介绍表的连接 21410.2 连接表以创建多表查询 21510.2.1 创建传统的单列等值连接 21610.2.2 为查询结果集指定排序次序 21810.2.3 使用表之间的间接关系创建查询 21910.2.4 创建多列等值连接和选择唯一值 22010.3 使用表中的查找字段 22210.3.1 用查阅向导添加外部键下拉列表 22210.3.2 向一个表添加固定值查找列表 22510.4 向表或者查询添加子
数据
表 22610.4.1 表子
数据
表 22710.4.2 查询子
数据
表 22810.5 外连接、自连接和Theta连接 23010.5.1 创建外连接 23010.5.2 创建自连接 23110.5.3 创建带准则的不相等Theta连接 23210.6 用查询
更新
表中的
数据
23310.6.1 确定你是否能
更新
查询的特性 23310.6.2 用查询字段属性
窗口
格式化
数据
23410.7 使表的所有字段都可以被访问 23510.8 在多个记录上创建计算 23510.8.1 使用
SQL
的聚集函数 23510.8.2 基于表中所有记录进行计算 23610.8.3 基于表中被选定的记录进行计算 23810.9 设计参数查询 24010.9.1 向月销售量查询添加一个参数 24010.9.2 指定参数的
数据
类型 24110.10 创建交叉表查询 24210.10.1 使用向导生成一个季度产品销售交叉表查询 24210.10.2 设计一个月产品销售交叉表查询 24510.10.3 使用固定列标题的交叉表查询 24610.11 从其他
数据
库中的表创建查询 24710.12 疑难解答 24810.13 现实世界—优化多表查询 249第11章 用操作查询修改
数据
25111.1 操作查询入门 25111.2 用生成表查询创建新表 25111.2.1 设计和测试选择查询 25211.2.2 将选择查询转换为生成表查询 25311.2.3 为新表建立关系 25411.2.4 使用新的tblShipAddresses表 25511.3 创建操作查询向一个表中追加记录 25611.4 用操作查询从一个表中
删除
记录 25711.5
更新
表中多个记录的值 25811.6 测试级联
删除
和
更新
26111.6.1 创建测试表和建立关系 26111.6.2 测试级联
删除
26211.6.3 测试级联
更新
26211.7 疑难解答 26311.8 现实世界—操作查询之外的选择 26311.8.1 浏览模式
更新
26411.8.2 基于窗体的
更新
26411.8.3 用
SQL
语句进行
更新
26411.8.4 用
SQL
Server存储过程进行
更新
265第三部分 设计窗体和报表第12章 创建和使用窗体 26712.1 理解Access窗体和控件的角色 26712.2 使用窗体向导创建事务处理窗体 26812.2.1 为窗体选择
数据
源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计
窗口
27212.3.1 窗体设计
窗口
的元素 27312.3.2 窗体设计工具栏按钮和菜单选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 27512.3.5 使用自动套用格式 27612.3.6 改变对象的颜色 27712.4 选择、编辑、移动窗体元素和控件 28112.4.1 改变窗体页眉和窗体页脚的大小 28212.4.2 选择、移动和缩放单个控件 28212.4.3 将控件和网格对齐 28312.4.4 选择和移动多个控件 28312.4.5 对齐一组控件 28412.4.6 使用Windows 剪贴板和
删除
控件 28412.4.7 改变控件的颜色和边框样式 28512.4.8 改变控件的内容 28512.4.9 使用格式刷 28612.5 重新安排Personnel Actions窗体 28612.5.1 设置主窗体的属性 28712.5.2 设置子窗体的属性 28812.6 使用事务处理窗体 28912.6.1 窗体视图中的工具栏按钮 28912.6.2 使用Personnel Actions窗体 29012.6.3 向Personnel Actions表追加新记录 29012.6.4 编辑现有的
数据
29212.6.5 提交和回退对表的改变 29212.7 在测试之后修改窗体或者控件的属性 29212.7.1 为
数据
输入而改变字段的次序 29212.7.2 从Tab键次序中
删除
字段 29312.8 现实世界—窗体设计技巧 293第13章 设计自定义多表窗体 29613.1 扩展你的窗体设计技能 29613.2 了解Access工具箱 29613.2.1 控件分类 29613.2.2 工具箱 29713.2.3 Access的控件向导、生成器和工具栏 29813.3 使用工具箱添加控件 30013.3.1 创建作为主窗体基础的查询 30113.3.2 创建一个具有页眉和页脚的空白窗体 30213.3.3 向窗体页眉上添加一个标签 30313.3.4 格式化文本和调整文本控件的大小 30413.3.5 创建绑定、
多行
、计算文本框 30513.3.6 改变属性的默认视图和获取帮助 30813.3.7 用向导添加选项组 30813.3.8 使用剪贴板复制控件到其他窗体 31113.3.9 使用组合和列表框 31213.3.10 创建一个组合框来查找特定的记录 31813.3.11 创建选项卡控件 32013.3.12 改变控件类型 32413.4 完成主Personnel Actions Entry窗体 32413.5 使用子窗体/子报表向导创建子窗体 32613.6 修改连续窗体的设计 32813.7 覆盖表的字段属性 32913.8 为打印窗体添加页眉和页脚 33013.9 疑难解答 33013.10 现实世界—Access的向导化 331第14章 打印基本报表和邮件标签 33314.1 理解窗体和报表之间的关系 33314.2 Access 报表类型的分类 33414.3 用“报表向导”创建分组报表 33414.4 使用Access的报表
窗口
33814.5 使用自动套用格式和自定义报表样式 34014.6 修改基本的“报表向导”报表 34014.6.1
删除
、重新部署和编辑现有的控件 34014.6.2 向报表添加计算控件 34514.6.3 对齐和格式化控件并调整行间距 34714.7 传统报表的边距调整和打印 35014.8 通过组的保持同页属性防止
出
现孤立的记录 35114.9 将多列报表作为邮件标签打印 35214.10 疑难解答 35314.11 现实世界—虚拟的无纸办公室 354第15章 高级报表 35515.1 从头开始创建报表 35515.2 报表
数据
的分组与排序 35515.2.1 分组
数据
35615.2.2
数据
分组排序 35815.3 从空白报表开始 35915.3.1 将一个报表用作一个子报表 35915.3.2 创建Monthly Sales by Category报表 36115.4 集成子报表 36415.4.1 向绑定报表添加链接子报表 36415.4.2 使用未链接子报表和未绑定报表 36615.5 自定义报表 36715.5.1 添加和
删除
报表的节 36715.5.2 分页控制以及打印页眉和页脚 36815.5.3 减少报表的长度 36815.6 向报表添加其他控件 36815.7 邮递报表快照 36915.8 疑难解答 37015.9 现实世界—报表设计的技巧 371第四部分 在Intranet和Internet上发布
数据
第16章 超级链接和HTML 37316.1 允许
数据
传送的Web页面 37316.2 Microsoft的Internet程序透视 37416.2.1 数字神经系统和Windows DNA 37516.2.2 Microsoft的Internet相关的客户端产品 37616.2.3 Microsoft的服务器方组件 37816.2.4 Microsoft支持Internet相关产品的技术 37816.3 用超级链接在Web和Intranet中导航 37916.4 理解Access 2000的超级链接字段
数据
类型 38216.4.1 测试Northwind Orders表中的超级链接 38216.4.2 编辑和插入传统的超级链接 38416.4.3 链接到一个Word文档的书签 38416.4.4 指定到Intranet Server或者Web上的页面的超级链接 38716.4.5 为超级链接添加屏幕提示 38816.4.6 使用表超级链接打开一个Access对象 38816.5 在Access控件上使用超级链接 38916.6 指定其他Internet URL 39016.7 疑难解答 39116.8 现实世界—到Internet或者不到Internet 391第17章 从表和查询生成Web页面 39317.1 简化基于Web的决策支持方式 39317.2 将表和查询
数据
表导
出
到HTML 39317.2.1 创建一个非格式化的Web页面 39517.2.2 从一个查询创建 Web页面 39817.3 使用HTML模板 39917.3.1 使用包含在Office 2000中的AccessHTML模板 39917.3.2 用模板导
出
一个查询
数据
表 40117.4 将报表导
出
到HTML 40217.5 从HTML表导入
数据
40417.6 创建动态 Web页面 40617.6.1 理解ASP 40717.6.2 为ASP创建一个
ODBC
数据
源 40817.6.3 将Access查询导
出
为ASP 40817.7 疑难解答 41017.8 现实世界—ASP和DAP 410第18章 设计
数据
访问页 41218.1 转向一个新的Access窗体模型 41218.2 理解Access的动态HTML实现 41318.2.1 支持DHTML和DAP的技术 41318.2.2 DOM HTML和DHTML 41418.3 DAP入门 41518.3.1 Review Products页 41518.3.2 Review Orders页 41818.3.3 HTML源代码编辑器 41918.3.4 Analyze Sales
数据
透视表页 42018.3.5 Sales页 42118.3.6 读写页 42318.4 使用“
数据
页向导”创建简单的DAP 42418.5 使用自动创建
数据
页创建纵栏式DAP 42718.5.1 使用记录浏览控件的筛选和排序特征 42818.5.2 修改自动创建
数据
页DAP的设计 42918.5.3 改变记录浏览控件的属性 43118.6 从头开始创建DAP 43218.6.1 用页字段列表添加一个
数据
透视表 43218.6.2
数据
透视表列表控件在IE 5.0中的使用 43318.6.3 在IE5.0中更改透视表的属性 43418.7 用
数据
透视表列表向DAP添加图表 43518.7.1 为
数据
透视表列表创建一个查询 43518.7.2 添加和格式化
数据
透视表列表 43718.7.3 使用图表向导向
数据
透视表列表绑定一个Office 图表 43818.8 生成分组页 44018.8.1 创建一个三级层次分组页结构 44018.8.2 填充明细内容 44218.8.3 添加相关表的字段和标题 44318.9 疑难解答 44418.10 现实世界—DAP准备好大展宏图了吗? 444第五部分 集成Access与其他Office 2000应用程序第19章 往窗体和报表中添加图表和图形 44719.1 用图形丰富窗体和报表 44719.2 用Microsoft Graph 2000创建图形和图表 44719.2.1 创建作为图形基础的查询 44819.2.2 使用“图表向导”创建非链接图形 44919.2.3 更改图形的设计特征 45219.2.4 从交叉表查询中创建图形 45519.2.5 把图形链接到表或查询中的单个记录上 45719.3 在页中使用图表Web控件 45819.3.1 为图表Web控件设计查询 45919.3.2 添加基于单
数据
列系列的office图表 45919.3.3 更改Office图表的属性 46219.4 往窗体或报表中添加未绑定对象控件 46319.4.1 在Personnel Actions查询中包含相片 46319.4.2 在Personnel Actions窗体中显示雇员的图像 46319.4.3 缩放图形对象 46519.4.4 检查位图图像文件格式 46619.5 使用图像控件 46719.6 疑难解答 46819.7 现实世界—可视化
数据
468第20章 与Microsoft Excel一起使用Access 47020.1 用
数据
透视表切分
数据
47020.2 使用Access的
数据
透视表向导 47020.2.1 为
数据
透视表创建查询 47120.2.2 用向导产生一个
数据
透视表窗体 47220.3 在Excel中处理
数据
透视表 47520.3.1 提高
数据
透视表的格式化程度 47520.3.2 用
数据
透视表切分
数据
47720.3.3 通过筛选进行切分 47820.3.4 折叠或展开明细
数据
的显示 47920.3.5 更改维的坐标轴 48120.4 格式化
数据
透视表报表 48120.5 从
数据
透视表中创建
数据
透视图表 48220.6 把Excel用作OLE服务器 48420.6.1 在窗体中嵌入常规的Excel工作表 48420.6.2 从OLE对象中抽取值 48620.6.3 链接到Excel工作表中一定范围的单元格 48720.7 疑难解答 48920.8 现实世界—OLAP和
数据
透视表 489第21章 与Microsoft Word和邮件合并一起使用Access 49221.1 集成Access 2000和Word 2000 49221.2 使用Access邮件合并向导 49221.2.1 创建和预览新套用信函 49221.2.2 使用已有的主合并文档及新
数据
源 49421.3 与Access
数据
库一起使用Word 2000的邮件合并功能 49721.3.1 用Microsoft查询和
ODBC
数据
源来创建新的邮件合并
数据
源 49721.3.2 从已有查询创建套用信函 50121.4 在Access表中嵌入或链接Word文档 50221.4.1 在表中嵌入或链接Word 2000文档 50321.4.2 创建窗体以显示被嵌入文档 50421.5 疑难解答 50621.6 现实世界—Microsoft查询和OLE DB 506第六部分 使用高级Access技术第22章 关系
数据
库设计与实现的研究 50922.1 查看Access 2000新增的
数据
库设计功能 50922.2 集成对象和关系
数据
库 51022.3 理解
数据
库系统 51022.3.1
数据
库设计的目标 51022.3.2
数据
库设计过程 51122.3.3
数据
库设计的面向对象方法 51222.3.4
数据
库术语 51422.3.5 关系
数据
库中表和关键字的类型 51522.4
数据
建模 51522.4.1 应用
数据
库 51622.4.2 主题
数据
库 51622.4.3 图表化
数据
模型 51722.4.4
数据
库模式 51722.5 把
数据
规范化到关系模型 51822.5.1 规范化规则 51822.5.2 关系类型 52222.6 使用Access 2000的“表分析器向导” 52522.7 用
数据
库文档管理器创建
数据
字典 52822.8 使用Access索引 52922.9 实施
数据
库完整性 53022.9.1 保证实体完整性和可审计性 53022.9.2 维护参照完整性 53322.10 疑难解答 53322.11 现实世界—为什么学习关系理论? 533第23章 结构化查询语言 53523.1 理解Access 2000中
SQL
的角色 53523.2 使用Access学习
SQL
53623.3 理解
SQL
语法 53723.4 用
SQL
编写SELECT查询 53723.4.1 使用
SQL
标点号和符号 53923.4.2 使用
SQL
语句创建Access查询 53923.4.3 使用
SQL
聚集函数 54123.4.4 用
SQL
创建连接 54223.4.5 使用联合查询 54323.4.6 实现子查询 54523.5 编写操作和交叉表查询 54623.6 添加IN以使用其他
数据
库中的表 54623.6.1 操作其他Access
数据
库 54723.6.2 对其他
数据
库类型使用IN子句 54823.6.3 用Jet DDL创建表 54823.6.4 比较ANSI和Jet
SQL
54923.6.5 Access中
SQL
保留字 54923.6.6 对应于
SQL
关键字的Jet
SQL
保留字 54923.6.7 用于替代ANSI
SQL
关键字的Access函数和操作符 55023.6.8 不存在于ANSI
SQL
中的Jet
SQL
保留字、操作符和函数 55123.6.9 Jet 的 DISTINCTROW 和
SQL
的DISTINCT关键字 55223.6.10 Jet
SQL
保留字不支持的通用 ANSI
SQL
关键字和功能 55423.7 在窗体、报表和宏中使用
SQL
语句 55523.8 疑难解答 55523.9 现实世界—把
SQL
作为第二种语言 555第24章 多用户网络应用的安全 55824.1 网络化Access 2000应用程序 55824.2 在网络化环境下安装Access 55924.3 与其他用户共享你的Access
数据
库文件 55924.3.1 为文件共享创建一个文件夹和系统文件 55924.3.2 准备共享你的
数据
库文件 56224.3.3 为文件共享而拆分
数据
库 56224.3.4 修补链接、
数据
源和DAP的超链接 56424.3.5 用“工作组管理员”选择工作组 56524.4 使用命令行来打开共享
数据
库 56624.5 维护
数据
库安全 56824.5.1 指定局域网上
数据
库安全的原则: 56824.5.2 用密码保护单个
数据
库 56924.5.3 管理组和用户 57024.6 理解
数据
库对象所有权 57524.6.1 对象的所有者权限 57524.6.2 更改
数据
库对象的所有权 57524.7 授予和撤消对
数据
库对象的访问权限 57624.7.1 使用安全向导更改权限 57724.7.2 手工更改组权限 58024.7.3 给特定用户授予其他权限 58124.7.4 授予对其他工作组中某
数据
库的访问权限 58124.8 在网络上共享
数据
库 58224.8.1 在Windows 9x网络上共享
数据
库文件 58224.8.2 用户级安全共享文件 58324.8.3 共享来自网络服务器的
数据
库文件 58424.9 访问共享的工作组和
数据
文件 58424.9.1 粘附被共享的工作组系统文件 58524.9.2 刷新到共享
数据
文件的链接 58524.10 管理
数据
库和应用 58624.10.1 备份和恢复
数据
库 58624.10.2 压缩和修复
数据
库文件 58724.10.3 加密和解密
数据
库文件 58724.11 疑难解答 58824.12 现实世界—共享文件与客户/服务器后端 588第25章 创建Access
数据
项目 59025.1 将Access转变成客户/服务器模式 59025.2 理解MSDE的作用 59125.2.1
SQL
Server版本与特性 59125.2.2 MSDE的优点 59225.3 安装与启动MSDE 59225.4 熟悉ADP 59525.4.1 适应MSDE与
SQL
Server 7.0的特性 59525.4.2 启动Northwind CS示例工程 59625.5 使用项目设计器 59725.5.1 MSDE表操作 59825.5.2 浏览MSDE视图 60025.5.3 图形化表关系 60225.5.4 编写存储过程 60325.5.5 为表添加触发 60425.6 使用升迁向导来创建ADP 60525.6.1 运行Access升迁向导 60525.6.2 检查向导成功还是失败 60725.7 使用DTS向导压缩
数据
库 60825.8 连接远程MSDE
数据
库 61025.8.1 使用
SQL
Server客户网络实用工具 61025.8.2 验证与使用远程
数据
库 61125.8.3 建立MSDE安全 61225.9 疑难解答 61325.10 现实世界—尝试中的 ADP 61425.10.1 ADP的缺陷 61425.10.2
SQL
Server 的优点:ADP、MSDE和
SQL
Server 7.0 614第七部分 Access应用的程序设计和转换第26章 编写VBA代码 61726.1 理解VBA在Access中的作用 61726.2 介绍VBA 6.0 61826.2.1 在什么情况下使用VBA代码 61826.2.2 VBA命名习惯 61826.2.3 模块、函数和子过程 61926.2.4 模块元素 62026.2.5 VBA和Access模块的引用 62126.2.6 VBA中
数据
类型和
数据
库对象 62226.2.7 变量和命名习惯 62326.2.8 符号常量 62726.2.9 VBA命名的可选参数 62826.3 控制程序流 62826.3.1 转移和标号 62926.3.2 条件语句 62926.3.3 重复操作:循环 63126.4 处理运行错误 63326.4.1 使用Err对象查找错误类型 63426.4.2 在窗体或者报表模块中使用Error事件 63426.5 浏览VBA编辑器 63526.5.1 模块
窗口
的工具栏 63526.5.2 模块快捷键 63626.5.3 VBA帮助系统 63726.6 检验实用工具函数模块 63726.6.1 向IsLoaded()函数中加一个断点 63826.6.2 用Debug对象把结果输
出
到立即
窗口
63926.6.3 使用文本比较选项 64026.7 现实世界—宏的应用 640第27章 理解通用
数据
访问、OLE DB和ADO 64227.1 透视Microsoft新的
数据
访问组件 64227.2 与多种
数据
源的接口 64327.2.1 用OLE DB自底向上重新设计 64327.2.2 将OLE DB接口映射到ADO 64527.2.3 比较ADO和DAO对象 64627.3 创建ADODB.Recordsets 64727.4 用代码将控件绑定到记录集 64927.5 使窗体可修改 65027.5.1 连接到NorthwindCS MSDE
数据
库 65127.5.2 用DAO3.6代替ADO2.1 65127.6 浏览顶层ADO属性、方法和事件 65227.7 与ADODB.Connection对象一起工作 65427.7.1 Connection的属性 65427.7.2 Errors集合和Error对象 65627.7.3 Connection的方法 65727.7.4 Connection事件 65927.8 使用ADODB.Command对象 66027.8.1 Command对象的属性 66027.8.2 Parameters集合 66127.8.3 Parameter对象 66127.8.4 Command方法 66327.8.5 把参数值传递给存储过程的代码 66427.9 理解ADODB.Recordset对象 66627.9.1 Recordset的属性 66627.9.2 Fields集合和Field对象 66927.9.3 Recordset的方法 67127.9.4 断开连接的Recordset 67427.9.5 Recordset事件 67427.10 疑难解答 67527.11 现实世界—努力学习和使用ADO 675第28章 用VBA6.0响应事件 67728.1 介绍事件驱动的编程 67728.2 理解类模块的角色 67728.2.1 Main Switchboard类模块 67828.2.2 在Main Switchboard窗体中的事件处理代码 67928.3 在对象浏览器和项目浏览器中检查工程类模块成员 68128.4 通过命令按钮向导添加事件处理代码 68228.5 用函数来响应事件 68428.6 理解Access 2000的事件指令集 68528.7 使用Access 2000的Docmd方法 68928.8 用命令条对象定制应用 69428.9 指定一个自定义CommandBar并设置其他启动属性 69628.10 用VBA引用Access对象 69728.10.1 引用打开的窗体或报表及其属性 69728.10.2 引用控件及其属性 69828.10.3 引用子窗体或主窗体中的控件 69928.11 使用另一种集合语法 69928.12 响应由窗体和控件触发的
数据
事件 69928.13 疑难解答 70128.14 现实世界—处理事件驱动的编程 701第29章 组合框和列表框编程 70229.1 流线型决策支持前台 70229.2 用组合框约束查询选择 70229.2.1 设计决策支持查询 70329.2.2 创建窗体并添加列表框 70329.2.3 向窗体添加查询组合框 70429.3 添加代码生成查询的
SQL
语句 70729.4 将组合框窗体转换成Access
数据
项目 70929.4.1 导入并测试组合框窗体 71029.4.2 使“行来源”
SQL
语句与Transact-
SQL
语句一致 71029.5 详化一个列表框选择 71229.5.1 创建详化查询和添加列表框 71229.5.2 详化列表框编程 71329.6 给列表框和组合框添加新的特征 71429.6.1 重复列表框
数据
项和选择一个
数据
项 71429.6.2 添加一个选项来选择所有国家或产品 71529.7 向ADP转移时处理Jet专有函数 71829.8 疑难解答 71929.9 现实世界—Access组合框和列表框 720第30章 使用ADO记录集、窗体和控件 72130.1 利用VBA操纵记录集 72130.1.1 生成临时记录集 72130.1.2 应用Move方法 72330.1.3 在循环中使用EOF和BOF 72330.1.4 使用AbsolutePosition属性 72430.2 使用Find方法和书签 72430.3 修改记录集的记录 72630.3.1 编辑和增加记录 72630.3.2
删除
记录 72630.4 由记录集填充组合框 72730.4.1 创建frmCombo2并改变组合框设计 72730.4.2 用代码填充组合框 72830.5 改变组合框列表的排序 72930.6 由记录集对象填充列表框 73130.7 格式化值列表组合框的列 73330.8 将frmComboVBA导
出
到一个Access
数据
项目 73630.9 疑难解答 73730.10 现实世界—适应ADO 737第31章 Access 9x应用向Access 2000的转换 73831.1 理解.mdb文件升级过程 73831.2 把不安全文件从Access 9x转换到Access 2000 73831.2.1 在Access 2000中第一次打开文件时升级 73831.2.2 在Access 2000中打开文件后升级 74031.3 转换安全的Access 9x文件 74131.3.1 在一个混合的Access 9x和Access2000环境中进行升级 74131.3.2 升级后台
数据
库和工作组文件 74131.4 将Access 2.0应用文件.mdb升级为Access 2000 74131.4.1 Win16函数调用转换为Win32函数调用 74231.4.2 表上的32个索引限制 74331.4.3 将16位OLE控件转换为32位ActiveX控件 74431.5 疑难解答 74431.6 现实世界—升级的诱惑 744
Access 2000
数据
库系统设计(PDF)---001
目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署
数据
访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试. 31.2.3 DAP设计模式 51.3 为Microsoft
数据
引擎创建 Access
数据
项目 51.3.1 新的ADP工具和对象 61.3.2 NorthwindCS项目和da Vinci工具 箱的深入研究 61.4 OfficeVBA编辑器和Access的集成 91.5 DAP和DHTML的HTML源编辑器 101.6 浏览和编辑子
数据
表中的相关记录 111.7 使Jet和
SQL
Server 7.0/MSDE
数据
库 相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2
数据
库
窗口
131.8.3 窗体和报表 141.8.4 名称自动更正 151.8.5 与Office 2000相关的改进 151.9 安装Access 2000 171.9.1 Access 2000的初始安装 171.9.2 定制Access 2000 201.10 安装和配置Microsoft
数据
引擎 20 1.11 现实世界—为什么升级 23第2章 建立第一个Access 2000应用 252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1
数据
库
窗口
中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 使用切换面板管理器 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识的透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access的表显示 443.2.1 最大化文档
窗口
463.2.2 把文档
窗口
最小化为图标 473.2.3 表
数据
表视图中的工具栏 483.2.4 工具栏自定义 503.2.5 右击快捷方式菜单 523.3 使用功能键 533.3.1 全局功能键 533.3.2 字段、网格和文本框的功能键 分配 533.4 设置默认的选项 543.4.1 系统默认值 553.4.2
数据
表视图的默认值 583.5 使用Access帮助 593.5.1 上下文相关的帮助 593.5.2 “帮助”菜单 603.5.3 Microsoft Access的帮助
窗口
613.5.4 “Office助手” 643.6 使用“
数据
库实用工具” 663.6.1 压缩和修复
数据
库 673.6.2 将
数据
库转换为Access 2000格式 683.6.3 将
数据
库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access
数据
库和表 724.1 定义Access
数据
库的元素 724.2 理解关系型
数据
库 744.3 使用Access
数据
库文件和表 754.3.1 Access系统
数据
库 754.3.2 Access 库
数据
库 754.4 创建一个新
数据
库 754.5 理解表和字段的属性 774.6 选择字段
数据
类型、大小和格式 804.6.1 为数值和文本
数据
选择字段大小 814.6.2 选择显示格式 834.6.3 使用输入掩码 874.7 使用Northwind Traders示例
数据
库 884.8 向现有的
数据
库添加一个新表 904.8.1 设计Personnel Actions表 914.8.2 创建Personnel Actions表 934.8.3 在
数据
表视图中直接创建一个表 964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中字段的顺序 1044.11.2 改变字段
数据
类型和大小 1054.11.3 改变表之间的关系 1064.12 复制和粘贴表 1074.13 疑难解答 1084.14 现实世界—
数据
库战略和表战术 108第5章 输入、编辑和验证表中的
数据
1105.1 在Access表中输入测试
数据
1105.2 使用键盘操作进行
数据
输入和编辑
数据
1105.2.1 创建No
Access 2000
数据
库系统设计(PDF)---002
Access 2000
数据
库系统设计(PDF)---002目 录译者序前言第一部分 Access基础第1章 Access 2000的新增功能 11.1 Access 2000透视 11.2 用Office Web组件部署
数据
访问页 21.2.1 Office Web 组件 21.2.2 DAP演示测试. 31.2.3 DAP设计模式 51.3 为Microsoft
数据
引擎创建 Access
数据
项目 51.3.1 新的ADP工具和对象 61.3.2 NorthwindCS项目和da Vinci工具 箱的深入研究 61.4 OfficeVBA编辑器和Access的集成 91.5 DAP和DHTML的HTML源编辑器 101.6 浏览和编辑子
数据
表中的相关记录 111.7 使Jet和
SQL
Server 7.0/MSDE
数据
库 相一致 111.8 Access在2000年问题上的改进 121.8.1 四位数年份选项设置 121.8.2
数据
库
窗口
131.8.3 窗体和报表 141.8.4 名称自动更正 151.8.5 与Office 2000相关的改进 151.9 安装Access 2000 171.9.1 Access 2000的初始安装 171.9.2 定制Access 2000 201.10 安装和配置Microsoft
数据
引擎 20 1.11 现实世界—为什么升级 23第2章 建立第一个Access 2000应用 252.1 理解Access的应用设计方法 252.2 从模板文件创建Access应用 262.3 熟悉联系管理应用 292.3.1
数据
库
窗口
中的表对象 292.3.2 切换面板窗体 322.3.3 Access窗体 332.3.4 Access报表 352.3.5 Access模块 362.4 使用切换面板管理器 382.5 探索窗体设计视图和VBA类模块 392.6 现实世界—所学知识的透视 40第3章 Access导航 423.1 理解Access功能和模式 423.1.1 定义Access功能 423.1.2 定义Access操作模式 443.2 理解Access的表显示 443.2.1 最大化文档
窗口
463.2.2 把文档
窗口
最小化为图标 473.2.3 表
数据
表视图中的工具栏 483.2.4 工具栏自定义 503.2.5 右击快捷方式菜单 523.3 使用功能键 533.3.1 全局功能键 533.3.2 字段、网格和文本框的功能键 分配 533.4 设置默认的选项 543.4.1 系统默认值 553.4.2
数据
表视图的默认值 583.5 使用Access帮助 593.5.1 上下文相关的帮助 593.5.2 “帮助”菜单 603.5.3 Microsoft Access的帮助
窗口
613.5.4 “Office助手” 643.6 使用“
数据
库实用工具” 663.6.1 压缩和修复
数据
库 673.6.2 将
数据
库转换为Access 2000格式 683.6.3 将
数据
库转换为Access 97格式 693.6.4 添加切换面板窗体 693.6.5 创建.mde文件 703.7 疑难解答 703.8 现实世界—HTML帮助或者障碍 71第4章 使用Access
数据
库和表 724.1 定义Access
数据
库的元素 724.2 理解关系型
数据
库 744.3 使用Access
数据
库文件和表 754.3.1 Access系统
数据
库 754.3.2 Access 库
数据
库 754.4 创建一个新
数据
库 754.5 理解表和字段的属性 774.6 选择字段
数据
类型、大小和格式 804.6.1 为数值和文本
数据
选择字段大小 814.6.2 选择显示格式 834.6.3 使用输入掩码 874.7 使用Northwind Traders示例
数据
库 884.8 向现有的
数据
库添加一个新表 904.8.1 设计Personnel Actions表 914.8.2 创建Personnel Actions表 934.8.3 在
数据
表视图中直接创建一个表 964.9 设置字段的默认值 964.10 使用关系、关键字字段和索引 974.10.1 建立表之间的关系 984.10.2 实施参照完整性 1004.10.3 选择一个主键 1014.10.4 往表中添加索引 1024.11 改变字段和关系 1044.11.1 重新安排表中字段的顺序 1044.11.2 改变字段
数据
类型和大小 1054.11.3 改变表之间的关系 1064.12 复制和粘贴表 1074.13 疑难解答 1084.14 现实世界—
数据
库战略和表战术 108第5章 输入、编辑和验证表中的
数据
1105.1 在Access表中输入测试
数据
1105.2 使用键盘操作进行
数据
输入和编辑
数据
1105.2.1 创建Northwind.mdb的试验用复本 1115.2.2 使用
数据
输入和编辑键 1115.2.3 用于Windows剪贴板操作的组合键 1125.2.4 在字段和文本框上使用快捷键 1135.2.5 设置
数据
输入选项 1145.3 向表中添加记录 1145.4 选择、追加、替换和
删除
表记录 1155.5 验证
数据
输入 1165.5.1 添加字段级有效性规则 1165.5.2 添加表级有效性规则和使用表达式 生成器 1185.6 向Personnel Actions表添加记录 1195.7 输入Personnel Actions表
数据
和测试 有效性规则 1205.8 疑难解答 1215.9 现实世界—批量
数据
输入 121第6章 排序、查找和筛选表中的
数据
1236.1 理解排序和筛选的作用 1236.2 排序表的
数据
1236.2.1 冻结表中某个字段的显示 1246.2.2 在单个字段上排序
数据
1246.2.3 在多个字段上排序
数据
1256.2.4
删除
表排序次序和解冻列 1256.3 查找表中的匹配记录 1266.4 自动地替换匹配的字段值 1276.5 筛选表
数据
1286.5.1 按选定内容筛选 1286.5.2 按窗体筛选 1306.5.3 高级筛选和排序 1326.5.4 添加一个多字段排序和复合筛选 准则 1326.5.5 使用复合准则 1346.5.6 将筛选保存为查询与筛选的加载 1356.6 定制
数据
表视图 1366.7 复制、导
出
和邮寄排序和筛选后的
数据
1386.8 疑难解答 1396.9 现实世界—基于计算机的排序和 搜索 139第7章 链接、导入和导
出
表 1417.1 从其他应用或者向其他应用移动
数据
1417.2 理解Access如何处理其他
数据
库文件 格式的表 1427.2.1 识别PC
数据
库文件格式 1437.2.2 链接和导入外部 ISAM表 1437.2.3 用
ODBC
链接Visual FoxPro表 1457.2.4 处理外部文件中的图像 1487.2.5 将字段
数据
类型转换为Access
数据
类型 1497.2.6 使用链接表管理器加载项重新 链接表 1507.2.7 导入表和将
数据
库文件链接为表 1507.3 导入和链接电子
数据
表文件 1517.3.1 通过导入Excel工作表创建一个表 1517.3.2 链接Excel工作表 1567.4 使用Microsoft Outlook和Exchange 文件夹 1567.4.1 用Outlook导
出
和导入Jet 4.0表 1577.4.2 使用Exchange/Outlook向导的链接 1597.5 导入文本文件 1607.5.1 使用导入文本向导 1617.5.2 导入文本向导的高级选项 1637.5.3 使用分隔文本文件 1657.5.4 处理宽度固定的文本文件 1667.5.5 追加文本
数据
到一个现有的表 1677.6 使用剪贴板导入
数据
1677.6.1 向一个表粘贴新记录 1687.6.2 通过从剪贴板上粘贴来替换记录 1707.7 从Access表导
出
数据
1717.7.1 通过Windows剪贴板导
出
数据
1717.7.2 将
数据
导
出
为一个文本文件 1727.7.3 以其他文件格式导
出
数据
1737.8 疑难解答 1737.9 现实世界—Microsoft的付
出
与 回报 175第二部分 最大限度地利用查询第8章 设计Access 查询 1778.1 查询简介 1778.2 “简单查询向导”的使用 1778.3 使用查询设计
窗口
1798.3.1 为查询选择字段 1808.3.2 按准则选择记录和排序显示 1828.3.3 创建更为复杂的查询 1838.3.4 改变查询列标题的名字 1848.3.5 将查询作为报表进行打印 1868.3.6 使用查询的
数据
1878.4 创建其他的查询类型 1888.4.1 创建和使用简单的生成表操作 查询 1888.4.2 向生成表查询添加参数 1908.5 疑难解答 1918.6 现实世界—查询设计优化 191第9章 理解查询操作符和表达式 1939.1 编写表达式作为查询准则和
数据
验证 依据 1939.2 理解表达式中的元素 1949.2.1 操作符 1949.2.2 文字 1979.2.3 标识符 1989.2.4 函数 1989.2.5 固有的和命名常数 2059.3 创建Access表达式 2059.3.1 创建默认值的表达式 2069.3.2 使用表达式进行
数据
有效性验证 2069.3.3 作为查询准则的表达式 2069.3.4 计算查询字段值的表达式 2109.3.5 表达式的其他用途 2129.4 疑难解答 2129.5 现实世界—Access表达式代数学 212第10章 创建多表查询和交叉表查询 21410.1 介绍表的连接 21410.2 连接表以创建多表查询 21510.2.1 创建传统的单列等值连接 21610.2.2 为查询结果集指定排序次序 21810.2.3 使用表之间的间接关系创建查询 21910.2.4 创建多列等值连接和选择 唯一值 22010.3 使用表中的查找字段 22210.3.1 用查阅向导添加外部键下拉列表 22210.3.2 向一个表添加固定值查找列表 22510.4 向表或者查询添加子
数据
表 22610.4.1 表子
数据
表 22710.4.2 查询子
数据
表 22810.5 外连接、自连接和Theta连接 23010.5.1 创建外连接 23010.5.2 创建自连接 23110.5.3 创建带准则的不相等Theta连接 23210.6 用查询
更新
表中的
数据
23310.6.1 确定你是否能
更新
查询的特性 23310.6.2 用查询字段属性
窗口
格式化
数据
23410.7 使表的所有字段都可以被访问 23510.8 在多个记录上创建计算 23510.8.1 使用
SQL
的聚集函数 23510.8.2 基于表中所有记录进行计算 23610.8.3 基于表中被选定的记录进行计算 23810.9 设计参数查询 24010.9.1 向月销售量查询添加一个参数 24010.9.2 指定参数的
数据
类型 24110.10 创建交叉表查询 24210.10.1 使用向导生成一个季度产品销售 交叉表查询 24210.10.2 设计一个月产品销售交叉表查询 24510.10.3 使用固定列标题的交叉表查询 24610.11 从其他
数据
库中的表创建查询 24710.12 疑难解答 24810.13 现实世界—优化多表查询 249第11章 用操作查询修改
数据
25111.1 操作查询入门 25111.2 用生成表查询创建新表 25111.2.1 设计和测试选择查询 25211.2.2 将选择查询转换为生成表查询 25311.2.3 为新表建立关系 25411.2.4 使用新的tblShipAddresses表 25511.3 创建操作查询向一个表中追加记录 25611.4 用操作查询从一个表中
删除
记录 25711.5
更新
表中多个记录的值 25811.6 测试级联
删除
和
更新
26111.6.1 创建测试表和建立关系 26111.6.2 测试级联
删除
26211.6.3 测试级联
更新
26211.7 疑难解答 26311.8 现实世界—操作查询之外的选择 26311.8.1 浏览模式
更新
26411.8.2 基于窗体的
更新
26411.8.3 用
SQL
语句进行
更新
26411.8.4 用
SQL
Server存储过程进行
更新
265第三部分 设计窗体和报表第12章 创建和使用窗体 26712.1 理解Access窗体和控件的角色 26712.2 使用窗体向导创建事务处理窗体 26812.2.1 为窗体选择
数据
源 26812.2.2 用窗体向导创建基本窗体 26812.3 使用窗体设计
窗口
27212.3.1 窗体设计
窗口
的元素 27312.3.2 窗体设计工具栏按钮和菜单 选择 27312.3.3 格式工具栏 27512.3.4 窗体的默认值 27512.3.5 使用自动套用格式 27612.3.6 改变对象的颜色 27712.4 选择、编辑、移动窗体元素和控件 28112.4.1 改变窗体页眉和窗体页脚的大小 28212.4.2 选择、移动和缩放单个控件 28212.4.3 将控件和网格对齐 28312.4.4 选择和移动多个控件 28312.4.5 对齐一组控件 28412.4.6 使用Windows 剪贴板和
删除
控件 28412.4.7 改变控件的颜色和边框样式 28512.4.8 改变控件的内容 28512.4.9 使用格式刷 28612.5 重新安排Personnel Actions窗体 28612.5.1 设置主窗体的属性 28712.5.2 设置子窗体的属性 28812.6 使用事务处理窗体 28912.6.1 窗体视图中的工具栏按钮 28912.6.2 使用Personnel Actions窗体 29012.6.3 向Personnel Actions表追加新记录 29012.6.4 编辑现有的
数据
29212.6.5 提交和回退对表的改变 29212.7 在测试之后修改窗体或者控件的 属性 29212.7.1 为
数据
输入而改变字段的次序 29212.7.2 从Tab键次序中
删除
字段 29312.8 现实世界—窗体设计技巧 293第13章 设计自定义多表窗体 29613.1 扩展你的窗体设计技能 29613.2 了解Access工具箱 29613.2.1 控件分类 29613.2.2 工具箱 29713.2.3 Access的控件向导、生成器和 工具栏 29813.3 使用工具箱添加控件 30013.3.1 创建作为主窗体基础的查询 30113.3.2 创建一个具有页眉和页脚的空白 窗体 30213.3.3 向窗体页眉上添加一个标签 30313.3.4 格式化文本和调整文本控件的 大小 30413.3.5 创建绑定、
多行
、计算文本框 30513.3.6 改变属性的默认视图和获取帮助 30813.3.7 用向导添加选项组 30813.3.8 使用剪贴板复制控件到其他窗体 31113.3.9 使用组合和列表框 31213.3.10 创建一个组合框来查找特定的 记录 31813.3.11 创建选项卡控件 32013.3.12 改变控件类型 32413.4 完成主Personnel Actions Entry窗体 32413.5 使用子窗体/子报表向导创建子窗体 32613.6 修改连续窗体的设计 32813.7 覆盖表的字段属性 32913.8 为打印窗体添加页眉和页脚 33013.9 疑难解答 33013.10 现实世界—Access的向导化 331第14章 打印基本报表和邮件标签 33314.1 理解窗体和报表之间的关系 33314.2 Access 报表类型的分类 33414.3 用“报表向导”创建分组报表 33414.4 使用Access的报表
窗口
33814.5 使用自动套用格式和自定义报表样式 34014.6 修改基本的“报表向导”报表 34014.6.1
删除
、重新部署和编辑现有的 控件 34014.6.2 向报表添加计算控件 34514.6.3 对齐和格式化控件并调整行间距 34714.7 传统报表的边距调整和打印 35014.8 通过组的保持同页属性防止
出
现 孤立的记录 35114.9 将多列报表作为邮件标签打印 35214.10 疑难解答 35314.11 现实世界—虚拟的无纸办公室 354第15章 高级报表 35515.1 从头开始创建报表 35515.2 报表
数据
的分组与排序 35515.2.1 分组
数据
35615.2.2
数据
分组排序 35815.3 从空白报表开始 35915.3.1 将一个报表用作一个子报表 35915.3.2 创建Monthly Sales by Category 报表 36115.4 集成子报表 36415.4.1 向绑定报表添加链接子报表 36415.4.2 使用未链接子报表和未绑定报表 36615.5 自定义报表 36715.5.1 添加和
删除
报表的节 36715.5.2 分页控制以及打印页眉和页脚 36815.5.3 减少报表的长度 36815.6 向报表添加其他控件 36815.7 邮递报表快照 36915.8 疑难解答 37015.9 现实世界—报表设计的技巧 371第四部分 在Intranet和Internet上发布
数据
第16章 超级链接和HTML 37316.1 允许
数据
传送的Web页面 37316.2 Microsoft的Internet程序透视 37416.2.1 数字神经系统和Windows DNA 37516.2.2 Microsoft的Internet相关的客户端 产品 37616.2.3 Microsoft的服务器方组件 37816.2.4 Microsoft支持Internet相关产品的 技术 37816.3 用超级链接在Web和Intranet中 导航 37916.4 理解Access 2000的超级链接字段
数据
类型 38216.4.1 测试Northwind Orders表中的超级 链接 38216.4.2 编辑和插入传统的超级链接 38416.4.3 链接到一个Word文档的书签 38416.4.4 指定到Intranet Server或者Web上的 页面的超级链接 38716.4.5 为超级链接添加屏幕提示 38816.4.6 使用表超级链接打开一个Access 对象 38816.5 在Access控件上使用超级链接 38916.6 指定其他Internet URL 39016.7 疑难解答 39116.8 现实世界—到Internet或者不到 Internet 391第17章 从表和查询生成Web页面 39317.1 简化基于Web的决策支持方式 39317.2 将表和查询
数据
表导
出
到HTML 39317.2.1 创建一个非格式化的Web页面 39517.2.2 从一个查询创建 Web页面 39817.3 使用HTML模板 39917.3.1 使用包含在Office 2000中的Access HTML模板 39917.3.2 用模板导
出
一个查询
数据
表 40117.4 将报表导
出
到HTML 40217.5 从HTML表导入
数据
40417.6 创建动态 Web页面 40617.6.1 理解ASP 40717.6.2 为ASP创建一个
ODBC
数据
源 40817.6.3 将Access查询导
出
为ASP 40817.7 疑难解答 41017.8 现实世界—ASP和DAP 410第18章 设计
数据
访问页 41218.1 转向一个新的Access窗体模型 41218.2 理解Access的动态HTML实现 41318.2.1 支持DHTML和DAP的技术 41318.2.2 DOM HTML和DHTML 41418.3 DAP入门 41518.3.1 Review Products页 41518.3.2 Review Orders页 41818.3.3 HTML源代码编辑器 41918.3.4 Analyze Sales
数据
透视表页 42018.3.5 Sales页 42118.3.6 读写页 42318.4 使用“
数据
页向导”创建简单的DAP 42418.5 使用自动创建
数据
页创建纵栏式 DAP 42718.5.1 使用记录浏览控件的筛选和排序 特征 42818.5.2 修改自动创建
数据
页DAP的设计 42918.5.3 改变记录浏览控件的属性 43118.6 从头开始创建DAP 43218.6.1 用页字段列表添加一个
数据
透视表 43218.6.2
数据
透视表列表控件在IE 5.0中的 使用 43318.6.3 在IE5.0中更改透视表的属性 43418.7 用
数据
透视表列表向DAP添加图表 43518.7.1 为
数据
透视表列表创建一个查询 43518.7.2 添加和格式化
数据
透视表列表 43718.7.3 使用图表向导向
数据
透视表列表 绑定一个Office 图表 43818.8 生成分组页 44018.8.1 创建一个三级层次分组页结构 44018.8.2 填充明细内容 44218.8.3 添加相关表的字段和标题 44318.9 疑难解答 44418.10 现实世界—DAP准备好大展 宏图了吗? 444第五部分 集成Access与其他Office 2000应用程序第19章 往窗体和报表中添加图表和图形 44719.1 用图形丰富窗体和报表 44719.2 用Microsoft Graph 2000创建图形和 图表 44719.2.1 创建作为图形基础的查询 44819.2.2 使用“图表向导”创建非链接 图形 44919.2.3 更改图形的设计特征 45219.2.4 从交叉表查询中创建图形 45519.2.5 把图形链接到表或查询中的单个 记录上 45719.3 在页中使用图表Web控件 45819.3.1 为图表Web控件设计查询 45919.3.2 添加基于单
数据
列系列的office图表 45919.3.3 更改Office图表的属性 46219.4 往窗体或报表中添加未绑定对象 控件 46319.4.1 在Personnel Actions查询中包含 相片 46319.4.2 在Personnel Actions窗体中显示雇员 的图像 46319.4.3 缩放图形对象 46519.4.4 检查位图图像文件格式 46619.5 使用图像控件 46719.6 疑难解答 46819.7 现实世界—可视化
数据
468第20章 与Microsoft Excel一起使用 Access 47020.1 用
数据
透视表切分
数据
47020.2 使用Access的
数据
透视表向导 47020.2.1 为
数据
透视表创建查询 47120.2.2 用向导产生一个
数据
透视表窗体 47220.3 在Excel中处理
数据
透视表 47520.3.1 提高
数据
透视表的格式化程度 47520.3.2 用
数据
透视表切分
数据
47720.3.3 通过筛选进行切分 47820.3.4 折叠或展开明细
数据
的显示 47920.3.5 更改维的坐标轴 48120.4 格式化
数据
透视表报表 48120.5 从
数据
透视表中创建
数据
透视图表 48220.6 把Excel用作OLE服务器 48420.6.1 在窗体中嵌入常规的Excel工作表 48420.6.2 从OLE对象中抽取值 48620.6.3 链接到Excel工作表中一定范围的 单元格 48720.7 疑难解答 48920.8 现实世界—OLAP和
数据
透视表 489第21章 与Microsoft Word和邮件合并一起 使用Access 49221.1 集成Access 2000和Word 2000 49221.2 使用Access邮件合并向导 49221.2.1 创建和预览新套用信函 49221.2.2 使用已有的主合并文档及新
数据
源 49421.3 与Access
数据
库一起使用Word 2000的 邮件合并功能 49721.3.1 用Microsoft查询和
ODBC
数据
源来 创建新的邮件合并
数据
源 49721.3.2 从已有查询创建套用信函 50121.4 在Access表中嵌入或链接Word文档 50221.4.1 在表中嵌入或链接Word 2000文档 50321.4.2 创建窗体以显示被嵌入文档 50421.5 疑难解答 50621.6 现实世界—Microsoft查询和 OLE DB 506第六部分 使用高级Access技术第22章 关系
数据
库设计与实现的研究 50922.1 查看Access 2000新增的
数据
库设计 功能 50922.2 集成对象和关系
数据
库 51022.3 理解
数据
库系统 51022.3.1
数据
库设计的目标 51022.3.2
数据
库设计过程 51122.3.3
数据
库设计的面向对象方法 51222.3.4
数据
库术语 51422.3.5 关系
数据
库中表和关键字的类型 51522.4
数据
建模 51522.4.1 应用
数据
库 51622.4.2 主题
数据
库 51622.4.3 图表化
数据
模型 51722.4.4
数据
库模式 51722.5 把
数据
规范化到关系模型 51822.5.1 规范化规则 51822.5.2 关系类型 52222.6 使用Access 2000的“表分析器向导” 52522.7 用
数据
库文档管理器创建
数据
字典 52822.8 使用Access索引 52922.9 实施
数据
库完整性 53022.9.1 保证实体完整性和可审计性 53022.9.2 维护参照完整性 53322.10 疑难解答 53322.11 现实世界—为什么学习关系理论? 533第23章 结构化查询语言 53523.1 理解Access 2000中
SQL
的角色 53523.2 使用Access学习
SQL
53623.3 理解
SQL
语法 53723.4 用
SQL
编写SELECT查询 53723.4.1 使用
SQL
标点号和符号 53923.4.2 使用
SQL
语句创建Access查询 53923.4.3 使用
SQL
聚集函数 54123.4.4 用
SQL
创建连接 54223.4.5 使用联合查询 54323.4.6 实现子查询 54523.5 编写操作和交叉表查询 54623.6 添加IN以使用其他
数据
库中的表 54623.6.1 操作其他Access
数据
库 54723.6.2 对其他
数据
库类型使用IN子句 54823.6.3 用Jet DDL创建表 54823.6.4 比较ANSI和Jet
SQL
54923.6.5 Access中
SQL
保留字 54923.6.6 对应于
SQL
关键字的Jet
SQL
保留字 54923.6.7 用于替代ANSI
SQL
关键字的 Access函数和操作符 55023.6.8 不存在于ANSI
SQL
中的Jet
SQL
保留字、操作符和函数 55123.6.9 Jet 的 DISTINCTROW 和
SQL
的 DISTINCT关键字 55223.6.10 Jet
SQL
保留字不支持的通用 ANSI
SQL
关键字和功能 55423.7 在窗体、报表和宏中使用
SQL
语句 55523.8 疑难解答 55523.9 现实世界—把
SQL
作为第二种语言 555第24章 多用户网络应用的安全 55824.1 网络化Access 2000应用程序 55824.2 在网络化环境下安装Access 55924.3 与其他用户共享你的Access
数据
库 文件 55924.3.1 为文件共享创建一个文件夹和系统 文件 55924.3.2 准备共享你的
数据
库文件 56224.3.3 为文件共享而拆分
数据
库 56224.3.4 修补链接、
数据
源和DAP的超链接 56424.3.5 用“工作组管理员”选择工作组 56524.4 使用命令行来打开共享
数据
库 56624.5 维护
数据
库安全 56824.5.1 指定局域网上
数据
库安全的原则: 56824.5.2 用密码保护单个
数据
库 56924.5.3 管理组和用户 57024.6 理解
数据
库对象所有权 57524.6.1 对象的所有者权限 57524.6.2 更改
数据
库对象的所有权 57524.7 授予和撤消对
数据
库对象的访问权限 57624.7.1 使用安全向导更改权限 57724.7.2 手工更改组权限 58024.7.3 给特定用户授予其他权限 58124.7.4 授予对其他工作组中某
数据
库的 访问权限 58124.8 在网络上共享
数据
库 58224.8.1 在Windows 9x网络上共享
数据
库 文件 58224.8.2 用户级安全共享文件 58324.8.3 共享来自网络服务器的
数据
库文件 58424.9 访问共享的工作组和
数据
文件 58424.9.1 粘附被共享的工作组系统文件 58524.9.2 刷新到共享
数据
文件的链接 58524.10 管理
数据
库和应用 58624.10.1 备份和恢复
数据
库 58624.10.2 压缩和修复
数据
库文件 58724.10.3 加密和解密
数据
库文件 58724.11 疑难解答 58824.12 现实世界—共享文件与客户/服务器 后端 588第25章 创建Access
数据
项目 59025.1 将Access转变成客户/服务器模式 59025.2 理解MSDE的作用 59125.2.1
SQL
Server版本与特性 59125.2.2 MSDE的优点 59225.3 安装与启动MSDE 59225.4 熟悉ADP 59525.4.1 适应MSDE与
SQL
Server 7.0的特性 59525.4.2 启动Northwind CS示例工程 59625.5 使用项目设计器 59725.5.1 MSDE表操作 59825.5.2 浏览MSDE视图 60025.5.3 图形化表关系 60225.5.4 编写存储过程 60325.5.5 为表添加触发 60425.6 使用升迁向导来创建ADP 60525.6.1 运行Access升迁向导 60525.6.2 检查向导成功还是失败 60725.7 使用DTS向导压缩
数据
库 60825.8 连接远程MSDE
数据
库 61025.8.1 使用
SQL
Server客户网络实用工具 61025.8.2 验证与使用远程
数据
库 61125.8.3 建立MSDE安全 61225.9 疑难解答 61325.10 现实世界—尝试中的 ADP 61425.10.1 ADP的缺陷 61425.10.2
SQL
Server 的优点:ADP、MSDE 和
SQL
Server 7.0 614第七部分 Access应用的程序设计和转换第26章 编写VBA代码 61726.1 理解VBA在Access中的作用 61726.2 介绍VBA 6.0 61826.2.1 在什么情况下使用VBA代码 61826.2.2 VBA命名习惯 61826.2.3 模块、函数和子过程 61926.2.4 模块元素 62026.2.5 VBA和Access模块的引用 62126.2.6 VBA中
数据
类型和
数据
库对象 62226.2.7 变量和命名习惯 62326.2.8 符号常量 62726.2.9 VBA命名的可选参数 62826.3 控制程序流 62826.3.1 转移和标号 62926.3.2 条件语句 62926.3.3 重复操作:循环 63126.4 处理运行错误 63326.4.1 使用Err对象查找错误类型 63426.4.2 在窗体或者报表模块中使用Error 事件 63426.5 浏览VBA编辑器 63526.5.1 模块
窗口
的工具栏 63526.5.2 模块快捷键 63626.5.3 VBA帮助系统 63726.6 检验实用工具函数模块 63726.6.1 向IsLoaded()函数中加一个断点 63826.6.2 用Debug对象把结果输
出
到立即
窗口
63926.6.3 使用文本比较选项 64026.7 现实世界—宏的应用 640第27章 理解通用
数据
访问、OLE DB和 ADO 64227.1 透视Microsoft新的
数据
访问组件 64227.2 与多种
数据
源的接口 64327.2.1 用OLE DB自底向上重新设计 64327.2.2 将OLE DB接口映射到ADO 64527.2.3 比较ADO和DAO对象 64627.3 创建ADODB.Recordsets 64727.4 用代码将控件绑定到记录集 64927.5 使窗体可修改 65027.5.1 连接到NorthwindCS MSDE
数据
库 65127.5.2 用DAO3.6代替ADO2.1 65127.6 浏览顶层ADO属性、方法和事件 65227.7 与ADODB.Connection对象一起工作 65427.7.1 Connection的属性 65427.7.2 Errors集合和Error对象 65627.7.3 Connection的方法 65727.7.4 Connection事件 65927.8 使用ADODB.Command对象 66027.8.1 Command对象的属性 66027.8.2 Parameters集合 66127.8.3 Parameter对象 66127.8.4 Command方法 66327.8.5 把参数值传递给存储过程的代码 66427.9 理解ADODB.Recordset对象 66627.9.1 Recordset的属性 66627.9.2 Fields集合和Field对象 66927.9.3 Recordset的方法 67127.9.4 断开连接的Recordset 67427.9.5 Recordset事件 67427.10 疑难解答 67527.11 现实世界—努力学习和使用ADO 675第28章 用VBA6.0响应事件 67728.1 介绍事件驱动的编程 67728.2 理解类模块的角色 67728.2.1 Main Switchboard类模块 67828.2.2 在Main Switchboard窗体中的事件 处理代码 67928.3 在对象浏览器和项目浏览器中检查 工程类模块成员 68128.4 通过命令按钮向导添加事件处理代码 68228.5 用函数来响应事件 68428.6 理解Access 2000的事件指令集 68528.7 使用Access 2000的Docmd方法 68928.8 用命令条对象定制应用 69428.9 指定一个自定义CommandBar并 设置其他启动属性 69628.10 用VBA引用Access对象 69728.10.1 引用打开的窗体或报表及其属性 69728.10.2 引用控件及其属性 69828.10.3 引用子窗体或主窗体中的控件 69928.11 使用另一种集合语法 69928.12 响应由窗体和控件触发的
数据
事件 69928.13 疑难解答 70128.14 现实世界—处理事件驱动的编程 701第29章 组合框和列表框编程 70229.1 流线型决策支持前台 70229.2 用组合框约束查询选择 70229.2.1 设计决策支持查询 70329.2.2 创建窗体并添加列表框 70329.2.3 向窗体添加查询组合框 70429.3 添加代码生成查询的
SQL
语句 70729.4 将组合框窗体转换成Access
数据
项目 70929.4.1 导入并测试组合框窗体 71029.4.2 使“行来源”
SQL
语句与Transact-
SQL
语句一致 71029.5 详化一个列表框选择 71229.5.1 创建详化查询和添加列表框 71229.5.2 详化列表框编程 71329.6 给列表框和组合框添加新的特征 71429.6.1 重复列表框
数据
项和选择一个
数据
项 71429.6.2 添加一个选项来选择所有国家 或产品 71529.7 向ADP转移时处理Jet专有函数 71829.8 疑难解答 71929.9 现实世界—Access组合框和列表框 720第30章 使用ADO记录集、窗体和控件 72130.1 利用VBA操纵记录集 72130.1.1 生成临时记录集 72130.1.2 应用Move方法 72330.1.3 在循环中使用EOF和BOF 72330.1.4 使用AbsolutePosition属性 72430.2 使用Find方法和书签 72430.3 修改记录集的记录 72630.3.1 编辑和增加记录 72630.3.2
删除
记录 72630.4 由记录集填充组合框 72730.4.1 创建frmCombo2并改变组合框设计 72730.4.2 用代码填充组合框 72830.5 改变组合框列表的排序 72930.6 由记录集对象填充列表框 73130.7 格式化值列表组合框的列 73330.8 将frmComboVBA导
出
到一个Access
数据
项目 73630.9 疑难解答 73730.10 现实世界—适应ADO 737第31章 Access 9x应用向Access 2000的 转换 73831.1 理解.mdb文件升级过程 73831.2 把不安全文件从Access 9x转换到 Access 2000 73831.2.1 在Access 2000中第一次打开 文件时升级 73831.2.2 在Access 2000中打开文件后升级 74031.3 转换安全的Access 9x文件 74131.3.1 在一个混合的Access 9x和Access 2000环境中进行升级 74131.3.2 升级后台
数据
库和工作组文件 74131.4 将Access 2.0应用文件.mdb升级为 Access 2000 74131.4.1 Win16函数调用转换为Win32函 数调用 74231.4.2 表上的32个索引限制 74331.4.3 将16位OLE控件转换为32位ActiveX 控件 74431.5 疑难解答 74431.6 现实世界—升级的诱惑 744
数据库
4,011
社区成员
39,816
社区内容
发帖
与我相关
我的任务
数据库
VC/MFC 数据库
复制链接
扫一扫
分享
社区描述
VC/MFC 数据库
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章