想真实的书一样
发表于5年前 | 作者: blog | 分类: 工业平板电脑 | 破蛋日:2020年01月30日 |
为了能让更多的编程小白轻松地入门编程,我把高效学习法结合 Python 中的核心知识,写成了这本书。随意翻上几页,你就会发现这本书和其他编程书的不同,其中有大量的视觉化场景帮你理解概念,穿插了若干有趣的小项目,最重要的是,这本书是为零基础小白而设计的。 既然笨办法不能让我学会 Python,那么我决定用一种聪明方法来学,为自己创造学习的捷径。这种高效学习法的核心在于: 1、精简:学习最核心的关键知识; 2、理解:运用类比、视觉化的方法来理解这些核心知识; 3、实践:构建自己的知识体系之后,再通过实践去逐渐完善知识体系。 不写字典式的知识体系,有些编程书像字典一样,各种细枝末节的知识都涵盖在内。但我认为,正如不应该让小孩拿着字典学汉语,也不应该让初学者拿着这样的厚书学编程。在汉语中,掌握常见的1500-2000个字就能看懂80%的文字。在编程中,同样有着最核心的关键知识。先用这些关键的知识构建你的知识体系会让学习效率加速,这是比一开始就钻到各种细枝末节里面更好的学习方式。这是精简的意义。 不去对比各种语言的特点,许多程序员背景的作者喜欢去对比 Python 和其他语言有什么异同,或者试图让你通过理解 C 语言从而理解 Python,但我不会这么做。我知道对于大多数读者,Python 很可能是将要学习的第一门编程语言,所以我不会用一个陌生概念讲解另一个陌生概念,反过来,我会运用类比和视觉化的方法讲解 Python 中的抽象概念,把复杂的东西简单的讲清楚。这是理解的捷径。 不追求让你达到精通的程度,事实上我也很怀疑有哪本书能线天从入门到精通。精通一门语言,需要在实际项目开发中踩过许多坑,需要熟悉计算机运作的底层原理。我是一名实用主义的开发者,我相信你也一样,学习编程是为了真正做出点东西来,也许你想爬取大量的数据和信息,方便用来分析与决策。也许你想快速搭建一个网站,展示自己的产品。也许你对量化交易感兴趣,想试着把自己的投资策略程序化。对于实用主义的开发者来说,更应该追求的是“达成”而不是“精通”。先掌握项目所需的最少必要知识,然后把热情和精力投入到搭建真实项目中,而不是死磕半年的基础知识,直到把所有兴趣都耗竭了也没做出来什么像样的东西。在实践过程中,你自然会逐渐完善知识体系。在这本书里面,会穿插一些真实项目的片段,让你知道学了这个基础知识能用在哪,并且完成一些小型项目。这是让你最有成就感的实践。 说了这么多,就是为了让你能放下疑虑。这不是一本让你中途放弃的编程书,这是一本黏着你看完的编程书。大多数读者都能在一周内读完,其中有35岁才开始学编程的中年男子、有工作非常忙碌的女性创业者、还有对编程感兴趣的高中生。所以,相信你也可以跟着这本书一起从零到一。
早期的计算机主要就是用来进行数据处理或称数值计算的。后来随着计算机技术及其周边设备和通讯能力的发展,计算机更多地用于了大量繁杂事务的在线处理,生产设备的实时控制等。在此过程中,计算机系统积累了越来越多的数据,数据处理的任务就更加繁重。到今天,即使是发展中的我们中国,在一个企业中有数以几十或上百GB、甚至TB计的生产经营数据已不是什么希奇的事情了。企业的数据和由此而产生的信息是企业的重要财富。它最真实、具体的反映了企业运作的本质状况。但是,面对堆积如“山”的数据,你可能并未看清企业运作的本质规律是什么,或者说你至少是未能全部看清楚。面对激烈竞争的市场经济,企业的经营和管理者任何不符合客观事物规律性的决策都会给企业带来损失,甚至失败。运用有力的工具,不断地探索企业成败、得失的原委,并以此不断完善企业运作,这是每一个成功的企业家必不可少的工作任务。 美国SAS软件从60年代在北卡洲立大学开创伊始就致力于计算机数据处理的研究。几十年来无数的成功事例使人们推崇SAS为国际上标准的数理统计分析软件;进而,SAS的丰富数据采集、数据管理、数据分析和信息展现的能力,又使之成为决策支持的最好的工具;近几年,SAS又推出了套装的SAS/Enterprise Miner这一企业级的数据处理分析和决策支持软件包。SAS系统的软件和这些软件运用的无数成功经验,一定能帮你从企业堆积如“山”的数据中“挖掘”出隐藏着的规律性,以支持你正确的经营决策。 SAS的数据挖掘软件集成了一系列有效的技术手段全面地支持你的工作。首先是支持你的数据重组工作。在你的企业或组织中或许已经有了成功的各种业务系统,其中的数据体系对应着一项项事务处理和一个又一个控制环节,它们定能完美的支持其原有的工作。但当你从企业级的角度去审视,并想进一步分析处理时,你会感到这些数据过于分散,数量越来越大,并难以整合。美国数据挖掘技术开拓者Gregory Piatetsky-Shapiro曾戏言说:“原来曾希望计算机系统成为我们智慧的源泉,但从中涌出的却是洪水般的数据!”其实不必埋怨数据太多,也不必埋怨原来的数据结构不好,它们是适应原有工作任务的,只是不适合你现在的要求而已。要支持你的企业级的决策,就是需要“洪水般的数据量”,但是要面向企业级的工作任务对其进行重组。数据仓库系统支持你进行数据重组,并以全新的数据、信息的结构形式支持你的全新的工作方式。这在前面五篇连载文章中已作了详尽的介绍。建立数据仓库,这是进一步能有成效的进行数据挖掘的基础工作。 要看清企业或组织运作的状况,第一步就是能查询到反映你所关心事情的相应数据、信息。以SAS的多维数据库产品MDDB构造的数据仓库从物理结构上保证了你查询的迅速、方便。d在提出在线分析处理OLAP概念时,多维数据结构是实现其任务的第一项要求。一些简单的决策支持所需要的就是有针对性的数据。在数据重组后的数据仓库中还建立了所谓数据市场(Data Marts),它就可以更针对决策支持的需要而设计,其中还可综合不同层次的汇总数据和跨数据仓库主题的数据。 SAS软件研究所对数据挖掘所下的定义是:数据挖掘是按照既定的业务目标,对大量的企业数据进行探索、揭示隐藏其中的规律性并进一步将之模型化的先进、有效的方法。 对数据的探索、挖掘首先要有一个明确的业务目标。一组生产数据可作生产能力的分析;可作生产成本核算的分析;亦可作影响产品质量诸因素的分析。目标决定了此后数据挖掘过程的各种运作,并导引了运作的方向。虽然说数据挖掘的业务目标在过程中不是不可修正的,也应当在工作进程中不断的进一步明确化,但其基本原则内容要保持稳定不变,否则数据挖掘工作是难以有效的进行的。 这里所指的大量企业数据最好是按照数据仓库的概念重组过的,在数据仓库中的数据、信息才能最有效的支持数据挖掘。假如所取用的数据并不足以反映企业的真实情况,当然也不可能挖掘出有用的规律。数据仓库的数据重组,首先是从企业正在运行的计算机系统中完整地将数据取出来。所谓完整,就是决策支持目标所涉及的各个环节不能有遗漏;其次各个环节的数据要按一定的规则有机、准确地衔接起来。从决策支持的主题来看,这重新组织过的数据,以极易取用的数据结构方式,全面的描述了该主题。 有了反映业务主题全貌的数据后,在进行数据的分析、探索时,对于不同的人,可能会采用不同的方式方法。Gartner Group在评价数据挖掘工具时,也特别提到了面对各种不同类型人员的可伸缩性和完整性。SAS支持各层次用户: 业务水平和数学水平可能比较一般,对这样的用户提供方便的数据查询是非常重要的。实际上早期的决策支持主要就是数据查询的支持。可能也要做一些简单的数理统计分析。若统计分析的要求是较明确的,可以事先做好,向他们提供统计分析的结果。这可做成SAS数据仓库中的信息市场(Information Mart)。对应他们随机的需求,应当提供菜单式选择的方便工具。 业务水平较高,但数学水平一般,且没有时间和兴趣再钻研数学方法的人,除了以上资源外,还应提供能简便的实现各种常用的数理统计的工具。让他们不必受累于繁杂的过程,通过简单的需求设定,即可执行他们需要的操作。 有计算机和数学知识,但对业务的熟悉程度一般的人员。对他们要提供较全面的数据处理工具,如:数理统计;聚类分析;决策树;人工神经元网络;……等。 对有很深计算机和数学造诣的数据分析专家不仅要提供上述环境,而且还要提供实现各种算法的工具和开发平台。 SAS系统提供了适合各类人员使用的既完整,又有伸缩性的模块化的工具。平板msr, 通过探索和模型化所得的结果可分成两种类型:一种是描述型的;另一种是预测型的。描述型的结果是指通过数据挖掘量化的搞清了业务目标的现状。通过数据挖掘还可以建立起企业或某个过程的各种不同类型模型。这些模型不仅能描述当前的现状和规律性,而且利用它还可以预测当条件变化后可能发生的状况。这就为企业开发新产品、定位客户群体、甚至于为企业业务重组提供决策支持依据。 在世界走向信息化的今天,充分利用企业的信息资源,挖掘企业和所对应市场的运作规律性,以不断提高企业的经济效益是先进企业的必由之路。 SAS数据挖掘软件广泛应用于客户关系管理、金融风险防范、供应关系管理、数据库营销、企业均衡记分卡、e-智能化及竞争优势分析等方面。SAS新近推出了专用于网络流量分析的最新软件产品e-Discovery和webHound,可对优化网站的结构和客户关系管理起到非常有效的作用。 正象是你拿个镐在山上挖几下不能算是开采矿山一样,用数理统计方法或人工神经元网络作个数据分析,也不能说就是在进行数据挖掘了。要开采矿山,首先要按照人类总结千百年来经验所形成的理论规律去找矿;发现矿藏后还要根据其实际地质情况,有针对性的采用相应的方法最有效的挖掘才能获得有价值的宝藏。同样,要想有效地进行数据挖掘也必须要有好的工具和一整套妥善的方法论。可以说在数据挖掘中你采用的工具、使用工具的能力、以及数据挖掘过程中的方法论在很大程度上决定了你能开拓的成果。SAS研究所不仅有丰富的工具供你选用,而且在多年的数据处理研究工作中积累了一套行之有效的数据挖掘方法论──SEMMA,通过使用SAS技术进行数据挖掘,我们愿意和你分享这些经验。 根据客户的不同层次的业务需求,SAS公司把数据挖掘等深层次分析分为两个层次,同时提供两种产品及方案套件供用户选择。这两种方案分别为:一、深层统计分析与预测套件;二、数据挖掘套件。在下面几节中会一一加以介绍。
“知识就是力量”,当我拿起笔准备写这本书的时候,立刻就想起了这句话。很久以前,我还很小的时候,有一本最喜欢的杂志就叫这个名字,最近好长时间没有机会看到这本杂志了,不知道现在这份杂志是不是还存在。在当时,这份杂志告诉我一个全新的世界,从飞往外太空的迭达罗斯飞船到如何从海洋中找到稀有金属,书中所描述的世界对一个充满了好奇心的孩子是如此的奇妙,它告诉我好多好多以前甚至根本没有梦想过的事情。从杂志和书本中得到的这些远远超过同龄小伙伴的知识以及随之而来的对更多知识的渴望,也是支持我直到今天还能在这个狂飙一样的行业继续生存的力量之所在。
CruiseYoung提供的带有详细书签的电子书籍目录 基础教程(第3版)(Amazon五星图书,自学与参考两相宜) 基本信息 原书名: SQL: Visual QuickStart Guide 原出版社: Peachpit Press 作者: (美)Chris Fehily 译者: 冯宇晖 贾文峰 丛书名: 图灵程序设计丛书 数据库 出版社:人民邮电出版社 ISBN:01 上架时间:2009-11-27 出版日期:2009 年12月 开本:16开 页码:343 版次:3-1 编辑推荐 Amazon五星图书,自学与参考两相宜. 任务驱动,数百实例教你掌握SQL精髓.. 触类旁通,展现主流DBMS的SQL语句异同… 内容简介 本书是一本sql的入门书,介绍如何使用最常用的sql语言维护和查询数据库信息。书中介绍了各种dbms,关系模型理论,sql语法,从表中检索数据,操作符和函数,汇总和分组数据,联结,子查询,集合操作,创建、更改和删除表,索引,视图,事务和sql技巧等。本书比较了各种dbms中的sql实现,并给出大量实例代码及经验技巧。. 本书适合sql初学者,同时也可作为数据库应用开发人员和最终用户的参考书。… 作译者 Chris Fehily 知名技术作家,顾问,具有十几年的设计和开发经验,主要兴趣在编程语言和生物信息学等。 目录 封面 -13 版权声明 -12 译者序 -11 前言 -10 目录 -3 第1章DBMS介绍 1 1.1运行SQL程序 1 1.2Microsoft Access 3 1.3Microsoft SQL Server 6 1.3.1SQL Server 2000 7 1.3.2SQL Server 2005/2008 9 1.4Oracle 10 1.5IBM DB2 12 1.6MySQL 16 1.7PostgreSQL 17 第2章关系模型 20 2.1表、列和行 21 2.1.1表 21 2.1.2列 21 2.1.3行 22 2.2主键 24 2.3外键 25 2.4联系 26 2.4.1一对一 27 2.4.2一对多 27 2.4.3多对多 28 2.5规范化 29 2.5.1第一范式 29 2.5.2第二范式 30 2.5.3第三范式 31 2.5.4其他范式 32 2.6示例数据库 33 2.6.1表authors 33 2.6.2表publishers 34 2.6.3表titles 35 2.6.4表titles_authors 35 2.6.5表royalties 36 2.7创建示例数据库 37 第3章SQL基础 40 3.1SQL语法 40 3.2SQL标准和一致性 42 3.3标识符 43 3.4数据类型 44 3.5字符串类型 45 3.6二进制大型对象类型 47 3.7精确数字类型 48 3.8近似数字类型 49 3.9布尔类型 50 3.10日期和时间类型 51 3.11时间间隔类型 53 3.12唯一标识符 54 3.13其他数据类型 55 3.14空值 55 第4章从表中检索数据 58 4.1使用SELECT和FROM检索列 58 4.2使用AS创建列的别名 61 4.3使用DISTINCT消除重复的行 62 4.4使用ORDER BY排序行 63 4.5使用WHERE筛选行 68 4.6使用AND、OR和NOT组合及求反条件 71 4.6.1AND操作符 71 4.6.2OR操作符 72 4.6.3NOT操作符 73 4.6.4AND、OR和NOT一起使用 74 4.7使用LIKE匹配模式 77 4.8使用BETWEEN进行范围筛选 81 4.9使用IN进行列表筛选 83 4.10使用IS NULL测试空值 85 第5章操作符和函数 88 5.1创建派生列 88 5.2执行算术运算 89 5.3确定计算的顺序 92 5.4使用连接串 92 5.5使用SUBSTRING()提取子串 95 5.6使用UPPER()和LOWER()更改串的大小写 97 5.7使用TRIM()修整字符 99 5.8使用CHARACTER_LENGTH()得到串长度 101 5.9使用POSITION()查找子串 103 5.10执行日期及时间间隔运算 105 5.11获得当前日期和时间 106 5.12获得用户信息 108 5.13使用CAST()转换数据类型 109 5.14使用CASE计算条件值 112 5.15使用COALESCE()检查空值 115 5.16使用NULLIF()比较表达式 116 第6章汇总和分组数据 118 6.1使用聚合函数 118 6.2创建聚合表达式 119 6.3使用MIN()查找最小值 120 6.4使用MAX()查找最大值 120 6.5使用SUM()计算总和 121 6.6使用AVG()计算平均值 122 6.7使用COUNT()统计行数 124 6.8使用DISTINCT聚合不重复的值 125 6.9使用GROUP BY分组行 127 6.10使用HAVING筛选分组 132 第7章联结 135 7.1限定列名 135 7.2使用AS创建表的别名 136 7.3使用联结 137 7.4使用JOIN或WHERE创建联结 139 7.5使用CROSS JOIN创建交叉联结 141 7.6使用NATURAL JOIN创建自然联结 143 7.7使用INNER JOIN创建内联结 146 7.8使用OUTER JOIN创建外联结 165 7.9创建自联结 173 第8章子查询 177 8.1理解子查询 177 8.2子查询语法 179 8.3子查询和联结 179 8.4简单子查询和相关子查询 182 8.4.1简单子查询 183 8.4.2相关子查询 183 8.5在子查询中限定列名 186 8.6子查询中的空值 187 8.7使用子查询作为列表达式 188 8.8使用比较操作符比较子查询的值 191 8.9使用IN测试集合成员资格 194 8.10使用ALL比较所有子查询的值 200 8.11使用ANY比较某些子查询的值 202 8.12使用EXISTS检测存在性 205 8.13比较等价查询 209 第9章集合操作 212 9.1使用UNION合并行 212 9.2使用INTERSECT查找相同行 217 9.3使用EXCEPT查找不同行 218 第10章插入、更新和删除行 220 10.1显示表结构 220 10.2使用INSERT插入行 223 10.3使用UPDATE更新行 228 10.4使用DELETE删除行 232 第11章创建、更改和删除表 235 11.1创建表 235 11.2理解约束 236 11.3使用CREATE TABLE创建新表 236 11.4使用NOT NULL禁止空值 238 11.5使用DEFAULT确定默认值 240 11.6使用PRIMARY KEY指定主键 242 11.7使用FOREIGN KEY指定外键 244 11.8使用UNIQUE确保值唯一 248 11.9使用CHECK创建检查约束 250 11.10使用CREATE TEMPORARY TABLE创建临时表 252 11.11使用CREATE TABLE AS利用已存在表创建新表 254 11.12使用ALTER TABLE修改表 258 11.13使用DROP TABLE删除表 259 第12章索引 261 12.1使用CREATE INDEX创建索引 261 12.2使用DROP INDEX删除索引 264 第13章视图 265 13.1使用CREATE VIEW创建视图 265 13.2通过视图检索数据 269 13.3通过视图修改数据 271 13.3.1通过视图插入行 271 13.3.2通过视图更新行 272 13.3.3通过视图删除行 273 13.4使用DROP VIEW删除视图 274 第14章事务 275 第15章SQL技巧 280 15.1动态统计 280 15.2产生序列 283 15.3发现等差数列、递增数列和等值数列 287 15.4限定返回行的数量 291 15.4.1Microsoft Access 292 15.4.2Microsoft SQL Server 293 15.4.3Oracle 294 15.4.4IBM DB2 295 15.4.5MySQL 296 15.4.6PostgreSQL 297 15.5分配排名 298 15.6计算修整均值 299 15.7随机选取行 300 15.8处理重复值 302 15.9创建电线Microsoft Access 305 15.10.2Microsoft SQL Server 305 15.10.3Oracle 306 15.10.4IBM DB2 307 15.10.5MySQL 307 15.10.6PostgreSQL 308 15.11处理日期 308 15.11.1Microsoft Access 309 15.11.2Microsoft SQL Server 310 15.11.3Oracle 310 15.11.4IBM DB2 311 15.11.5MySQL 312 15.11.6PostgreSQL 313 15.12计算中值 315 15.13查询极值 316 15.14改变动态统计的中流 317 15.15旋转结果 318 15.16处理层次结构 320 索引 326 译者序 SQL是关系数据库编程的国际标准语言。本书系统、全面地介绍了标准SQL,并讲解了Microsoft Access、Microsoft SQL Server、Oracle、IBM DB2、MySQL、PostgreSQL等SQL实现及其与标准SQL之间的差异。. 本书结构严谨、内容丰富,给出大量实例代码及经验技巧。本书适合SQL初学者,同时也可作为数据库应用开发人员和最终用户的参考书。作为初学者,可通过学习本书快速、全面地掌握SQL;而作为数据库应用开发人员和最终用户,可以通过本书提高开发和应用关系数据库的能力。.. 本书由冯宇晖、贾文峰翻译,其中文前、第1~6章、第7章前6节由贾文峰翻译,第7章7~9节及第8~15章由冯宇晖翻译,全书由冯宇晖负责统稿。限于译者的水平,译文中难免有错误与不足之处,敬请读者和同行批评指正。译者的邮箱:和… 前言 SQL是一种标准的编程语言,用于创建、更新和检索存储在数据库中的信息。使用SQL,你可以将通常的问题(“我们的客户居住在何地?”)转化为数据库系统能够理解的语句(SELECT DISTINCT city, state FROM customers;)。你可能已经知道如何通过图形化的查询或报表工具来检索此类信息,但对于复杂的问题,或许你也意识到此类工具存在诸多限制和障碍——这时就需要SQL了。. 可以使用SQL来增加、更新、删除数据和数据库对象。所有现代关系型DBMS(数据库管理系统)都支持SQL,但不同产品的支持情况会有所不同。 本书涉及大多数流行DBMS的最新版本,并专门新增一章来介绍SQL技巧,包括最新的编程技巧提示、细微变化和高级主题,以及其他零星知识。关于SQL SQL可以如下表述: ·是一种编程语言; ·容易学习; ·是说明性语言; ·是交互式或嵌入式语言; ·是标准化语言; ·用于改变数据和数据库对象; ·不是首字母缩写词。 它是一种编程语言。SQL是一种可以用来编写程序,实现创建、修改、查询数据库的形式语言。数据库系统执行SQL程序,完成用户指定的任务,并显示结果或错误信息。编程语言有别于自然语言,它是为了特殊用途而设计的,其词汇量小、语句书写呆板且必须明确无误。如果你没有得到希望的结果,只能怪你自己的程序包含某些错误,而不是计算机错误地执行了指令(程序测试是编程的一项重要工作)。 和其他形式语言一样,SQL由一系列语法和语义规则定义。语法规则决定可以使用哪些单词和符号,以及如何将它们结合在一起。语义规则决定着语法正确的语句的真实含义。注意,SQL语句可能语法正确但语义错误。第3章会介绍SQL的语法和语义。 数据库与DBMS 数据库并不等同于用户使用的数据库软件,“Oracle是数据库”是不正确的说法。数据库软件被称作DBMS。数据库只是DBMS的一个组成部分,是数据本身;也就是说,它是一个存储结构化信息的容器(由至少一个文件组成)。除了控制数据库中数据的组织、完整性和检索,DBMS还要负责其他任务,如物理存储、安全、备份、错误处理等。 本书中可以认为DBMS是RDBMS的简写,在这里R代表关系型。关系型DBMS依照关系模型(见第2章)而不是层次模型或网状模型来组织数据。本书只讲解关系型系统,所以当书中出现DBMS时,就是指RDBMS,第一个字母R(关系型)被省略了。 它容易学习。同其他编程语言相比,SQL学起来更容易。如果以前没有写过任何程序,你会觉得从自然语言转向形式语言是很难的。不过,SQL语句读起来很像句子,容易学习。初学编程的人可能会理解SQL语句“SELECT au_fname,au_lname FROM authors ORDER BY au_lname;”的意思是“以姓氏为序列出作者的姓名”,但他们会发现,具有相同功能的C或Perl程序很难理解。 它是说明性语言。如果你从未编写过程序,那么跳过本段也不会影响你学习后面的内容。如果你用C或者PHP语言编写过程序,那意味着你有使用过程语言的经历,在编写这样的程序时需要指明得出结果所需的每个步骤。使用SQL这种说明性语言,只需描述想要的内容,而无需去管该如何做,数据库系统的优化器将决定“如何做”。因此,标准的SQL没有传统的流程控制结构,如if-then-else、while、for和goto语句。 为了说明这一点差异,本书给出了功能等同的Microsoft Access Visual Basic程序(VB属于过程语言)和SQL 程序。代码0-1显示了从包含作者信息的表中检索作者姓名的VB程序。你无需了解整个程序,但要注意它如何使用Do Until循环来显式地定义如何提取数据。代码0-2显示了如何用一条SQL语句(与约20行的VB程序形成鲜明对比)完成相同的功能。使用SQL,只需指明要完成什么工作,数据库管理系统在内部决定并执行得出结果所需的具体操作。 代码0-1这段Microsoft Access Visual Basic程序从一个包含作者信息的数据库表中获取姓名信 .息,并将结果存放在一个数组中 Sub GetAuthorNames() Dim db As Database Dim rs As Recordset Dim i As Integer Dim au_names() As String Set db = CurrentDb() Set rs = db.OpenRecordset(authors) rs.MoveLast ReDim au_names(rs.RecordCount – 1, 1) With rs .MoveFirst i = 0 Do Until .EOF au_names(i, 0) = ![au_fname] au_names(i, 1) = ![au_lname] i = i + 1 .MoveNext Loop End With rs.Close db.Close End Sub 此外,代码0-2是一个简单的SQL查询。在对简单的SQL查询添加排序、过滤、联结等常见的操作后,使用这样一条SELECT语句就可以完成的任务,使用过程代码则可能需要100多行。 代码0-2这条SQL语句完成的查询与代码0-1中Visual Basic程序完成的查询相同。Access内部的优化器可决定获取数据的最佳方式 SELECT au_fname, au_lname FROM authors; 它是交互式或嵌入式语言。在交互式SQL环境中,用户输入的SQL命令直接发送到数据库管理系统,得到结果后立即显示。DBMS的服务器同时拥有图形和命令行工具,用于接受用户输入的SQL语句或包含SQL程序(脚本)的文本文件。 在开发数据库应用程序时,可以将SQL语句“嵌入”到编写程序所用的宿主语言(host language)中 。宿主语言通常是一种通用语言(如C++、Java或COBOL)或脚本语言(如Perl、PHP或Python)。例如,一个PHP CGI脚本可以用SQL语句来查询MySQL数据库;MySQL将查询的结果返回给PHP变量,以便进一步分析或显示在网页上。根据前面的例子,可以将SQL语句嵌入到Visual Basic程序中(代码0-3)。 代码0-3这里,Visual Basic作为嵌入式SQL的宿主语言 Sub GetAuthorNames2() Dim db As Database Dim rs As Recordset Set db = CurrentDb() Set rs = db.OpenRecordset(SELECT au_fname, au_lname FROM authors;) –Do something with rs here. rs.Close db.Close End Sub 本书只包括交互式SQL。一般情况下,任何可以交互使用的SQL语句,也都可以用在宿主语言中。但在DBMS、宿主语言和操作环境中,语法上略有差异。.. 它是标准化语言。SQL不属于任何公司。它是一个由国际标准化组织(ISO)和国际工程协会(IEC)共同领导的国际标准工作组定义的开放标准。美国国家标准协会(ANSI)参加了这个工作组,并已批准该标准(见图0-1)。因为“ISO/IEC SQL”不常用,所以在本书中使用更常见的“ANSI SQL”。本书依据的是2003年的SQL标准,除非另外指明,否则书中的ANSI SQL、SQL:2003和SQL所指是一样的。要了解更多相关内容,参见3.2节。 所有DBMS供应商都增加了专有功能来增强这种语言。这些扩展通常是额外的命令、关键字、函数、操作符、数据类型,还有流程控制结构(如if、while和goto语句)。微软、甲骨文和IBM对标准SQL增加了相当多的功能,于是分别形成了Transact – SQL、PL/SQL和SQL PL语言,可被视为这些供应商自己的语言,而不只是SQL的超集。某个供应商的扩展通常与其他供应商的产品不兼容。本书没有介绍专有的SQL扩展,但当某供应商专有的SQL不符合书中给出的标准SQL例子时,会特别指出。 它用于改变数据和数据库对象。SQL语句分为以下3类。 ·数据操作语句(DML)用于在数据库中检索、计算、插入、编辑和删除数据。第4章至第10章介绍了数据操作语句SELECT、INSERT、UPDATE和DELETE。第14章介绍了语句START(或BEGIN)、COMMIT和ROLLBACK。 ·数据定义语句(DDL)用于创建、修改和销毁数据表、索引、视图等数据库对象。第11章至第13章介绍了数据定义语句CREATE、ALTER和DROP。 ·数据控制语句(DCL)用于授权某些用户查看、更改、删除数据或数据库对象。GRANT语句分配权限和角色(角色是一组权限的集合)。REVOKE语句用于取消权限。本书没有介绍GRANT和REVOKE,因为它们是数据库管理员的职责。书中介绍的所有DBMS(除了Access)都支持GRANT和REVOKE,但与SQL标准有一些差异。 它不是首字母缩写词。“SQL表示结构化查询语言”是一种普遍的误解。它只代表S–Q–L,不代表任何其他意思。为什么?因为ANSI就是这样解释的。官方名字是数据库语言SQL,如图0-1所示。而且,如果说SQL表示“结构化查询语言”,那会令刚开始学习SQL编程的新手感到困惑。业内人士认为“结构化查询语言”可能是SQL最糟糕的解释,因为SQL: ·不是结构化的(无法将其分解成程序块或过程); ·不只用于查询(它不只包含SELECT语句); ·不是一种语言(它不满足图灵完备性,你在学习计算理论时会遇到这个概念)。 关于本书 本书将介绍如何使用SQL编程语言维护和查询数据库信息。第1章至第3章将介绍各种DBMS、关系模型和SQL语法,之后会继续沿袭读者已经熟悉的Visual QuickStart系列图书基于任务、图解式的编写风格。 尽管阅读本书不要求读者有编程经验,但希望你熟悉操作系统的文件系统,知道如何在命令行模式或shell(在较早的Windows版本里称作DOS提示符,在Mac OS X里称作Terminal)中输入命令。 本书只介绍最常用的语句,不是SQL的详尽指南。要了解更多的SQL语句知识,请参考所用DBMS文档或包含更详细SQL标准的参考书。 ?提示 ·Peter Gulutzan和Trudy Pelzer所著的SQL-99 Complete, Really (CMP Books) 完整解释了SQL-99标准。要比SQL标准看着轻松,但没有提及具体的DBMS。 ·Kevin Kline、Daniel Kline和Brand Hunt所著的SQL in a Nutshell (O’Reilly)包含了本书介绍的DBMS(除Access以外),是比较全面的SQL:2003参考书。它适合于已经有一定基础的SQL程序员。 ·Troels Arvin的“Comparison of Different SQL Implementations”解释了DBMS实现SQL各种功能的不同之处,包括源文件和其他SQL图书、文章、资源的链接。它包括了SQL:2003和与本书相同的DBMS(除Access以外),见。 配套站点 在,你可以找到修正、更新代码和可供下载的示例数据库(见2.6节)。单击Contact链接就可以给我发对本书的问题、建议、修改及批评意见。 SQL Server 与桌面DBMS SQL服务器DBMS在客户/服务器网络中作为服务器端,它存储数据并响应客户端的SQL请求。客户端是一个应用程序或一台向服务器发送SQL请求并接受服务器响应的计算机。服务器真正执行对数据库的操作,客户端只是接收答案。如果网络使用了客户/服务器架构,客户端就是眼前桌面上的计算机,服务器则是放在另一房间、另一座大楼甚至另一个国家的强大的专业化设备。客户/服务器的请求和响应如何传递的规则在DBMS协议和类似ODBC、JDBC和接口中定义。 桌面DBMS是独立的程序,它存储数据库并执行所有SQL指令,平板msr或作为SQL服务器的客户端。桌面DBMS不能接受其他客户端的请求(或者说,不能作为SQL服务器)。 SQL服务器包括Microsoft SQL Server、Oracle、DB2、MySQL和PostgreSQL。桌面系统包括Microsoft Access和FileMaker Pro。注意,SQL server(没有大写)指的是所有供应商的SQL服务器产品,SQL Server(大写)是Microsoft的SQL服务器产品。 读者对象 本书的读者对象是数据库应用开发人员和最终用户(不是数据库设计人员或管理人员),主要适合以下人员。 ·熟悉计算机但缺乏编程经验。 ·正在自学或跟随指导老师学习SQL。 ·对数据库没有兴趣,但因为工作需要必须处理大量结构化信息。这类人包括统计人员、流行病工作者、网站编程人员、气象工作者、工程师、会计、投资者、科研人员、分析师、销售代表、金融规划和交易员、办公室文员及经理人。 ·对易用但不够强大的图形查询工具不太满意的人。 ·正从桌面数据库转到DBMS服务器(参见“SQL Server与桌面DBMS”)。 ·已经了解一些SQL,不满足于简单的SELECT语句。 ·需要创建、修改或删除表、索引和视图等数据库对象。 ·需要将SQL代码嵌入到C、Java、Visual Basic、PHP、Perl或其他宿主语言。 ·作为网站程序员,需要在网页上展示查询结果。 ·需要桌面SQL的参考书。 ·因为数据列表已经变得太大、太复杂,而无法使用电子表格管理,正从Microsoft Excel转向Microsoft Access。 本书不适合希望学习以下内容的读者。 ·如何设计数据库(尽管在第2章简述了设计概念)。 ·DBMS供应商在基本SQL语句上增加的扩展特性。 ·高级编程或管理。本书没有包含安装、权限、触发器、递归 、存储过程、复制、备份、恢复、游标、整理、字符集、翻译、XML及面向对象扩展。 排版约定 本书使用以下排版约定。楷体表示引入的新术语。英文斜体表示变量。代码体表示SQL代码和代码及一般文本里的语法,也表示可执行的代码、文件名、目录(文件夹)名、URL和命令行提示符文本。粗代码体表示SQL代码片段和结果对应正文中的解释部分。斜代码体表示SQL代码中必须使用值来取代的变量,例如必须用真实的列名取代column 。 语法约定 SQL是对行中断和每行长度都没有限制的自由形式语言。为了使代码易于阅读和维护,本书在SQL语法图解和代码中使用一致的风格。 ·每个SQL语句开始于新行。 ·每次缩进为2个字符。 ·每个语句的子句开始于新的缩进的行。 SELECT au_fname, au_lname FROM authors ORDER BY au_lname; ·SQL是不区分大小写的,这意味着myname、MyName和MYNAME是同样的标识符。本书对于SQL关键字(如SELECT、NULL和CHARACTER)使用大写(见3.1节);对于用户定义的值(如表、列和别名)使用小写。(对于一些DBMS,用户定义的标识符在引用时或其他一些场合是区分大小写的,因此最安全的方法,是在SQL程序中遵照标识符的大小写规定。) ·表0-1显示了本书在语法图中使用的特殊符号。 ·在SQL代码中所有引号是直的引号(如和),而不是弯曲的引号(如’和“),弯曲的引号会使代码无法运行。 ·当一行太窄而无法容纳一整行代码或输出时,将其分为两段或两段以上;箭头?表示行的继续。 表0-1语法符号 符号 说明 媒体评论 “我是个计算机教师,通常对那些计算机书没有太多好感。但这本书我忍不住要向大家推荐,我用它作SQL教材,效果很好……非常实用,例子很丰富,且知识点覆盖全面,深度也合适。”. ——者评论 “绝佳的SQL参考书。它一直在我手边,一旦遇到SQL方面的问题,我会首先寻求它的帮助。”… ——资深计算机取证专家Jerry
编辑推荐 OpenStack是一个可以让你在自己的物理服务器上创建私有云或者公有云平台的开源框架。你可以构建定制化的基础设施、平台和软件服务,而不用担心专有的云平台的费用和厂商锁定问题。拥有一个OpenStack私有云,你可以增强安全性、增加可控性、提高可靠性,并降低成本。 本书提供了真实环境使用案例和如何构建你自己的云平台的一步步的指导。本书能为你提供所需要的物理硬件集群和基础设施服务设计指导。你将会学到如何选择和设置虚拟服务器和物理服务器,如何实现软件定义网络以及在企业内部设计、部署和运营一个OpenStack云的技术细节,还会探索如何针对自己的环境对OpenStack部署做出zui佳的定制。zui后,你还会学到自己的云是如何提供面向用户的软件和基础设施服务的。 本书主要内容 ●开发和部署企业级私有云。 ●从IT的角度来看私有云技术。 ●自助型云计算对企业的影响。 阅读本书不需要拥有OpenStack或其他云开发经验。 内容简介 本书的主题是通过OpenStack来部署企业私有云。本书不只是像技术手册一样介绍如何部署OpenStack,还会解释各个
CruiseYoung提供的带有详细书签的电子书籍目录 权威指南 基本信息 原书名: The Gurus Guide to Transact-SQL 原出版社: Addison-Wesley 作者: (美)Ken Henderson 译者: 健莲科技 丛书名: 其他 出版社:中国电力出版社 ISBN:7508310616 上架时间:2002-8-9 出版日期:2002 年8月 页码:462 版次:1-1 内容简介 书籍 计算机书籍 Transact—SQL是结构化查询语言(SQL)的增强版本,与许多ANSI SQL标准兼容,Transact-SQL代码已成为SQL Server的核心。本书全面介绍了Transact—SQL,全书共21章,按照由浅入深的顺序,详细介绍了Transact-SQL基本概念和主要应用。本书示例清晰,说理透彻,实是不可多得之佳选。 本书可供各个层次的读者使用。 目录 封面 -15 封底 -14 扉页 -13 版权 -12 译者序 -11 前言 -10 原书序 -9 目录 -6 第1章 Transact-SQL简介 1 1.1 选择SQL编辑器 2 1.2 创建数据库 3 1.3 创建表 3 1.4插入数据 5 1.5 修改数据 6 1.6删除数据 6 1.7 数据查询 7 1.8 数据过滤 10 1.9 数据分组 16 1.10 数据排序 17 1.11 列别名 18 1.12 表别名 19 1.13 事务处理管理 19 1.14 小结 20 第2章Transact-SQL数据类型的细微差别 21 2.1 日期型 21 2.2 字符串型 31 2.3 数值型 49 2.4 BLOB型 53 2.5 位型(Bit) 60 2.6 uniqueidentifier(惟一标识符)型 61 2.7 光标变量 62 2.8 时戳 66 2.9 小结 68 第3章 遗漏值 69 3.1 NULL和表达式 70 3.2 NULL和函数 70 3.3 NULL和ANSI SQL 71 3.4 NULL和存储过程 73 3.5 必要时使用NULL 75 第4章 深入DDL 77 4.1 CREATETABLE 77 4.2 删除对象 81 4.3 创建索引 81 4.4 临时对象 82 4.5 对象命名及相关性 84 4.6 小结 86 第5章 深入DML 87 5.1 INSERT 87 5.2 UPDATE 96 5.3 DELETE 103 5.4 检测DML错误 107 5.5 小结 107 第6章 强大的SELECT语句 108 6.1 简单SELECT 108 6.2 计算字段和派生字段 109 6.3 SELECTTOP 109 6.4 派生表 111 6.5 连接 114 6.6 谓词 116 6.7 子查询 127 6.8 聚集函数 133 6.9 GROUPBY和HAVING 135 6.10 UNION 142 6.11 ORDERBY 143 6.12 小结 145 第7章 视图 146 7.1 约束 146 7.2 ANSI SQL模式视图 147 7.3 获取视图的源代码 148 7.4 可修改的视图 149 7.5 WITH CHECkOPTION 149 7.6 派生表 150 7.7 动态视图 151 7.8 使用视图划分数据 152 7.9 小结 154 第8章 统计函数 155 8.1 关于CASE 156 8.2 关于效率的考虑 157 8.3 方差和标准方差 157 8.4 中值 158 8.5 修剪 165 8.6 返回前n行 166 8.7 等级 169 8.8 模式 171 8.9 柱状图 172 8.10 累积和滑动聚集 173 8.11 极值 175 8.12 小结 177 第9章 运行和序列 178 9.1 序列(时序) 178 9.2 运行 183 9.3 间隔 186 9.4 小结 188 第10章 数组 189 10.1 作为大字符串的数组 189 10.2 作为表的数组 195 10.3 小结 202 第11章 集 203 11.1 联合 203 11.2 差集 205 11.3 交集 207 11.4 子集 209 11.5 小结 212 第12章 层次 213 12.1 简单层次 213 12.2 多级层次 214 12.3 锯齿状列表 220 12.4 小结 221 第13章 光标 222 13.1 光标和ISAM 222 13.2 光标类型 224 13.3 光标的正确使用 228 13.4 Transact-SQL光标语法 233 13.5 配置光标 241 13.6 修改光标 244 13.7 光标变量 245 13.8 光标存储过程 247 13.9 优化光标性能 247 13.10 小结 248 第14章 事务处理 249 14.1 事务处理的定义 249 14.2 SQL Server中的事务处理是如何工作的 250 14.3 事务处理类型 251 14.4 避免聚集事务处理 253 14.5 自动事务处理管理 253 14.6 事务处理隔离级别 255 14.7 事务处理命令和语法 258 14.8 事务处理的调试 264 14.9 事务处理代码的优化 265 14.10 小结 266 第15章 存储过程和触发器 267 15.1 存储过程的优点 268 15.2 内部步骤 268 15.3创建存储过程 270 15.4 存储过程的执行 278 15.5 关于环境的考虑 279 15.6 参数 282 15.7 重要的自动变量 285 15.8流控制语言 285 15.9 错误 287 15.10 嵌套 289 15.11 递归 289 15.12 自启动的存储过程 291 15.13 加密 291 15.14 触发器 291 15.15 存储过程的调试 295 15.16 小结 295 第16章 Transact-SQL性能协调 296 16.1 通用性能准则 296 16.2 数据库设计性能提示 297 16.3 索引性能提示 298 16.4 SELECT性能提示 300 16.5 INSERT性能提示 301 16.6 大量拷贝性能提示 302 16.7 DELETE和UPDATE性能提示 303 16.8 光标性能提示 303 16.9 存储过程性能提示 304 16.10 SARG 307 16.11 非标准化 321 16.12 查询优化器 335 16.13 索引协调向导 343 16.14 Profiler 345 16.15 性能监控器 345 16.16 小结 347 第17章 Transact-SQL的管理 348 17.1 GUI的管理 348 17.2 系统存储过程 349 17.3 Transact-SQL管理命令 350 17.4 系统管理函数 350 17.5 自动管理变量 351 17.6 常用的例程及其脚本 351 17.7 小结 403 第18章 全文搜索 404 18.1 全文谓词 405 18.2 行集函数 411 18.3 小结 414 第19章 OLE自动化 415 19.1 sp-exporttable 416 19.2 sp_importtable 419 19.3 sp_getSQLregistry 423 19.4 小结 425 第20章 未记载的Transact-SQL 426 20.1 未记载的定义 426 20.2 未记载的DBCC命令 427 20.3 未记载的函数和变量 438 20.4 未记载的跟踪标记 441 20.5未记载的过程 442 20.6 小结 447 第21章 杂项 448 21.1 模糊函数 448 21.2 数据清除 457 21.3 迭代表 461 21.4 小结 462 译者序 如果想利用Microsoft SQL Server在Windows NT Server或其他操作系统上构筑开发环境,完成MIS系统、客户/服务器应用、Internet环境下的World Wide Web应用,那么本书绝对是一本适合你的(系统开发人员或系统维护人员)必备参考书。 Transact—SQL是结构化查询语言(SQL)的增强版本,与许多ANSI SQL标准兼容,并提供重要的附加功能。Transact—SQL代码已成为MicrosoftSQL Server的核心。 本书共21章,按照由浅入深的顺序,详细介绍Transact—SQL基本概念和主要应用。前3章介绍Transact—SQL最基本的操作、数据类型和遗漏值。从第4章开始深入介绍DLL、DML,其中详细讲解SELECT语句的使用,以及视图、统计函数、运行和顺序,并涉及到一些重要的概念,如集、层次、光标和事务处理等,并说明了它们的使用方法。第15章介绍存储过程和触发器,它是管理数据库、查询数据需要了解的重要方面。第16到第19章分别介绍Transact—SQL的一些高级应用,如Transact—SQL性能协调(tuning)、Transact—SQL的管理、全文搜索、OLE自动化等。第20章介绍未被记载的Transact—SQL有关内容和应用。最后的第21章介绍有关Transact—SQL零散的内容。 本书作为Transact—SQL的使用入门和进行深入研究的一本指南,适用于所有Transact—SQL的使用者,也适于数据库用户、开发员和数据库管理人员。刚接触SQL的用户也可以通过这本书学习Transact—SQL的相关特性,对于想了解以前未用过的功能的有经验的用户而言,本书也是一本有益的参考书。尤其值得一提的是,本书的作者在书中提供了许多存储过程和脚本,读者可以直接而方便地使用它们,来减轻日常的劳动。 在翻译过程中,我们力求完美,但由于译音水平所限,不妥之处在所难免,恳请读者批评指正。 前言 KenHenderson想要做的就是写一本适用于Transact—SQL实际编程的尽可能最好的书,他成功了。Ken在开始写这本书时,头脑中已经有了本书中的大多数构想。当为生活而工作时,人们希望学习许多东西,搞清它们工作的原因以及其他不工作的原因。如果你是个有心人,那么你可以把你所掌握的写成一本书,其他人就可以从你的知识中受益。对初学一门语言的人来说,让其在仅知道语法和一些规则的情况下,设计一个工程并编写复杂程序是很困难的。难道你可以仅用一本词典和小型语法书就能熟悉一个陌生的国家吗? 好的,现在我们对这本书有了一个目标。下一步就是如何写以便人们能够使用它。VictorHugo在写字台前用翎毛笔在条纹纸上写出了很多伟大的作品,而在Internet时代的写作则与那时有很大不同。如今,一本书可以在一周内出版印刷,作者可以找来一些人通过电子邮件来阅读该书,找出作者遗漏或出现错误的问题,以及校对人员或排版人员遗漏的标点符号。简而言之,可以以最快的速度进行工作。 最好用两种方式工作。写书时,可邀请一大批与其无所事事还不如作为你的义务研究人员的人来帮助你! 因为我在SQL标准和编程的专业技术方面有一点点的声望,所以我是他通过电子邮件邀请来查看原稿的人之一。整洁的材料和一些技巧是我未曾见过的!我们交换了意见,我正在窃取,不,研究我的下一本书。你知道,交流总是双向的。 我想你会发现此书是很容易理解的,且有许多好的想法和代码样本。虽然这是一本指定用于Transact—SQL的书,但你会发现其中的许多方法和技术可用于任何SQL产品。尽情享用吧! 序言 本书适合编码员使用。本书的目的是帮助开发人员利用Transact-SQL创建应用程序,而不是介绍数据库的管理和设计。书中没有介绍终极用户和GUI应用程序的开发,也没有介绍服务器和数据库性能的调试。本书是关于开发代码的,目的是为应用程序开发出最好的Transact-SQL代码。 当我开始写这本书时,我是这样构想的: 大量引入代码样本–不仅告诉读者如何使用Transact-SQL,而且出示代码样本。 每章都包括了完整的代码样本,所以可以在没有计算机和光驱的情况下学习本书。 使用现代编码技术,其中带有着重于ANSI兼容性的细节和当前版本及增强版的特性。 每章内容相互独立–尽可能地不依赖在其他章节中创建的对象。 提供了真实的代码样本,它们脱离本书仍然有本身的价值。 避免重复已经在SQL Server在线书籍中大量提及的内容。 强调Transact-SQL与其他SQL语言不同的方面,而不只是写一本ANSI SQL的书。 避免过多的快照和在计算机书籍中常见的其他类型的填充版面的东西。 每章都由简单到复杂,并贯穿于全书。 提供轻松自由的注释,并不强调形式。注释将成为读者的良师。尽量用谈话的方式与读者交流。 这些目标是否兑现,以及兑现的程度如何,我想读者会有自己的衡量标准,我希望我的努力没有白费。 关于样本数据库 本书大量使用了SQL Server提供的Nothwind和pubs样本数据库。读者可以从周围的注释或者是代码本身来确定某个特定示例所使用的数据库。pubs数据库比Northwind数据库更经常使用,所以如果没有另外指定或不能确定时,那么使用的就是pubs数据库。 通常是在事务中修改这些数据库,这样就可以回滚这些修改;然而,出于安全考虑,应该在数据库被修改的章节后,删除数据库然后再重新创建它。重新创建数据库的脚本(instnwnd.sq1和instpubs.sql)在SQL Server的根目录的\Install子目录下。 精简结果 我对计算机书籍很憎恨的原因就是,有些书无耻地使用占用空间的办法来增加书的厚度–这是计算机出版业的黑暗的小秘密。现在有些技术书籍中到处是快照、表、图、提纲、工具条、图标、艺术条等。更有些人认为书越厚越好,有许多作者和出版商都非常高兴地来迎合他们。他们似乎沿用了一句老话的字面意思–一幅图顶一千个字,结果有时他们出版的书就像画册一样。 在本书中,我将公平地处理详尽度和空间效率之间的关系。我经常地截断或修剪查询结果集,尤其是那些对于页面来说过宽的或是过长的结果集(改动的部分我会指明)。有时我也会用缩小字体的办法来列出结果。我没有使用快照,除非它会对即将进行的讨论有非常大的用处(书中只有一章包含了快照)。这样做是为了与我所设定的目标(完整却不过度)保持一致。书中有近600段SQL脚本出现在被提及的章节中。希望所有的删节都不会损害本书整体的实用性和价值。 . 关于形式 我所憎恨的另一件事就是为了形式而搞的形式。一位艺术家曾说过画一条曲线要比画条直线更难,他的意思就是说,从某种意义上讲,把没有明确严格标准的事情做好要比把有清楚规则和固定先例的事情做好更难。画条直线要做的就只是找把直尺。那些关于作品的规则,特别是那些学术种类的规则,使得写书变得容易了,因为这些规则将写作的许多主观特性变得更客观了。这些规则会影响那些准作者的发展方向。于是,写作就由一个创造性的过程变成了机械的过程,按照这些规则,书就已经完成一半了,显然,这样就减少了作者进行创造性写作的决心。这样也会使其他一些好的作品变成了乏味的、课本式的论文,它们橡电话号码簿的白页一样无趣。 所以,我不认为正规的作品就是好的作品,这种想法是一个更高的标准,是所有技术型作家应该努力的目标。我属于Mark Twain的思想学派–避免剩余物,我相信采取这种思想,通常谈话的方式就不会完全落入俗套(我坦率地承认这是个主观的区别),技术型作家最终的目标就是以与读者谈话的方式来写作。这是人们–尤其是技术人员最熟悉的交流方式,也是人们学习和共享思想的方式。这种思想的方法不是我发明的,而是许多我所欣赏的作家写作方法,他们是MarkTwain、DeanKoontz、JoeCelko、ErnestHemingway、Robert Heinlein、AndrewMiller、OscarWilde、 P.J.ORourke、PatrciaOConnor。尽管这种方法很难构造,也很难自然地写出易读的故事来,但是如果作家试图表达的思想能像他们被发明一样被理解,那么还是很值得努力的。 作者简介 KenHenderson是数据库鉴赏家,居住在Dallas,与妻子、四个孩子和一条狗生活在一起。他把工作之外的时间,大部分都花在关心他的孩子成长上。与Henderson联系的email是:khen@khen.com.
周四客户关系软件分四大主要区域 : 1、操作区:为用户提供编辑数据时所需要的功能,如:增加、修改、删除,查询等。 2、增强区:增强区即数据显示条件区,主要为用户提供显示数据的分类、时间等条件。 3、功能区:是用户进入各功能模块的便捷途径,只要鼠标简单点击。 4、数据显示区:这区域是主要的目标区域,显示用户需要的数据。 周四客户关系软件(CRM)架构于市场营销管理理论及客户资源管理的基础上,充分考虑到国内企业的实际情况和具体条件进行开发的。我们的功能模块直接体现在销售过程中的各个环节中,突出“ 以客户为中心 ”的管理思想。企业通过周四客户关系软件实现专业化集中管理和控制,使公司能及时了解销 售网络情况、客户动态、客户人员结构、竞争对手、竞争产品、产品价格、客户服务等信息。 周四客户关系软件更加适合那些以意向订单(项目)管理和客户关系集中 管理为目标的公司。形成了高度集中的信息共享体系。合理地处理了一线业务人员、公司销售指挥中心等工作衔接问题。下面我们将介绍周四客户关系软件的各大功能模块: 一、团队管理 销售行动中不可缺少的基础设定,集中建立销售相关人员的基础信息,根据公司的需求设置销售区域及各区域的人员结构等。体现出销售部门人员的层次性,同时根据各销售区域的不同,合理分布销售人员。 二、客户资源管理 客户是公司赢利的直接对象,所以对客户资料、客户关系等信息的维护非常重要,加强客户信息的管理和销售过程的严格控制、以及良好的客户关系,已是保持公司盈利的重要手段。怎么留住老客户、分析潜在赢利客户、发现新客 户,周四客户关系系统为您提供了非常方便实用的执行功能。同时也提供了强大的客户分类功能与客户跟进功能,全面整合了跟进客户信息、客户的人员结构、竞争对手信息、意向订单(项目)结构、计划任务及销售过程中出现的问题。 三、工作记录及工作任务管理 销售人员向公司反馈业务进展的主要入口,记录销售人员跟进客户情况、工作方式及业务进展情况。计划任务在销售过程中是不可缺少的环节,周四客户关系软件提供两个工作计划指针与一个智能工作总结分析模块 1 、销售人员进行下一步工作安排,明确自己的工作重点,使工作更具条理性。同时销售管理中心作为 销售总后台,也可根据具体情况为销售人员安排工作任务。 2 、销售管理中心为销售人员制定合理的工作指标与工作计划量,目的是提高销售人员工作的主动性与 积极性。 3 、工作总结功能模板,方便销售人员进行周、月工作总结及管理人员进行区域(办事处)周、月工作 总结。 四、项目管理 周四客户关系软件将项目管理合理地引入销售工作环节中,我们可以将客户需求的一个产品、一个意向订单、某一工程或某一个计划看成一个项目。周四客户关系软件项目管理模块将清楚展现客户的人员结构、产品需求结构、客户的信誉度、客户的基本要求及公司的销售策略。项目管理引入的目的是使公司能更有效的分析客户的真实需求、将那些更有价值与潜在力的客户纳入公司客户群体中,减少销售人员的业务行为的盲目性。与客户分类一样,项目按区域(办事处)、业务员、等级进行分类。 五、产品结构管理 定义我们的销售产品及服务项目,将销售进行严格的细分,使业务人员更加明确公司的赢利方式。使销售人员站在公司最高利益的基础上提高业绩。 六、备忘录 业务过程中难免有些杂事,但与业务之间关系密切,为了提醒自己时时关注,备忘录是一个相当灵活的工具。备忘录中能记录临时要交代的或要办理的事情。让业务人员在业务过程中更具主动性。 七、工作请示与工作批示 销售工作过程中,遇到困难业务员可以直接作工作请示,销售管理中心能根据实际情况对业务员的工作进行有效的批示指导。 八、费用管理及文档资料管理中心 销售过程中产生费用是难免的,我们应该通过数据依据对费用进行有效的管控。 文档资料的集中管理也是非常必要的,将文档资料分类管理,更有利于文档资料的查询。 详细功能:周四客户关系软件(商务版试用).rar
CruiseYoung提供的带有详细书签的电子书籍目录 深入理解Android:卷I(51CTO网站“2011年度最受读者喜爱的原创IT技术图书”) 基本信息 作者: 邓凡平 出版社:机械工业出版社 ISBN:29 上架时间:2011-9-13 出版日期:2011 年9月 开本:16开 页码:488 版次:1-1 编辑推荐 结合实际应用开发需求,以情景分析的方式有针对性地对Android的源代码进行了十分详尽的剖析,深刻揭示Android系统的工作原理 机锋网、51CTO、开源中国社区等专业技术网站一致鼎力推荐 内容简介 《深入理解android:卷1》是一本以情景方式对android的源代码进行深入分析的书。内容广泛,以对framework层的分析为主,兼顾native层和application层;分析深入,每一部分源代 码的分析都力求透彻;针对性强,注重实际应用开发需求,书中所涵盖的知识点都是android应用开发者和系统开发者需要重点掌握的。 全书共10章,第1章介绍了阅读本书所需要做的准备工作,主要包括对android系统架构和源码阅读方法的介绍;第2章通过对android系统中的mediascanner进行分析,详细讲解了 android中十分重要的jni技术;第3章分析了init进程,揭示了通过解析init.rc来启动zygote以及属性服务的工作原理;第4章分析了zygote、systemserver等进程的工作机制,同时还讨论了 android的启动速度、虚拟机heapsize的大小调整、watchdog工作原理等问题;第5章讲解了android系统中常用的类,包括sp、wp、refbase、thread等类,同步类,以及java中的handler类和 looper类,掌握这些类的知识后方能在后续的代码分析中做到游刃有余;第6章以mediaserver为切入点,对android中极为重要的binder进行了较为全面的分析,深刻揭示了其本质。第7章对 audio系统进行了深入的分析,尤其是audiotrack、audioflinger和audiopolicyservice等的工作原理。第8章深入讲解了surface系统的实现原理,分析了surface与activity之间以及surface 与surfaceflinger之间的关系、surfaceflinger的工作原理、surface系统中的帧数据传输以及layerbuffer的工作流程。第9章对vold和rild的原理和机制进行了深入的分析,同时还探讨了 phone设计优化的问题;第10章分析了多媒体系统中mediascanner的工作原理。 本书适合有一定基础的android应用开发工程师和系统工程师阅读。通过对本书的学习,大家将能更深刻地理解android系统,从而自如应对实际开发中遇到的难题。 作译者 邓凡平,资深Android开发工程师,热衷于Android源代码的研究,对Android的架构设计和实现原理有非常深刻的认识和理解,应用开发经验也十分丰富。目前就职于国内一家领先的 Android企业,负责Framework的开发和维护。乐于分享,活跃于CSDN等专业社区,撰写的Android Framework源码的系列文章深受读者欢迎。此外,他对Linux内核、C/C++/Python相关的技术 ,以及高性能网络服务器和多核并行开发等也有一定的研究。 目录 封面 -17 封底 489 扉页 -16 版权 -15 推荐序 -14 前言 -12 致谢 -9 目录 -7 第1章 阅读前的准备工作 1 1.1 系统架构 2 1.1.1 Android系统架构 2 1.1.2 本书的架构 3 1.2 搭建开发环境 4 1.2.1 下载源码 4 1.2.2 编译源码 6 1.3 工具介绍 8 1.3.1 Source Insight介绍 8 1.3.3 Busybox的使用 11 1.4 本章小结 12 第2章 深入理解JNI 13 2.1 JNI概述 14 2.2 学习JNI的实例:MediaScanner 15 2.3 Java层的MediaScanner分析 16 2.3.1 加载JNI库 16 2.3.2 Java的native函数和总结 17 2.4 JNI层MediaScanner的分析 17 2.4.1 注册JNI函数 18 2.4.2 数据类型转换 22 2.4.3 JNIEnv介绍 24 2.4.4 通过JNIEnv操作jobject 25 2.4.5 jstring介绍 27 2.4.6 JNI类型签名介绍 28 2.4.7 垃圾回收 29 2.4.8 JNI中的异常处理 32 2.5 本章小结 32 第3章 深入理解init 33 3.1 概述 34 3.2 init分析 34 3.2.1 解析配置文件 38 3.2.2 解析service 42 3.2.3 init控制service 48 3.2.4 属性服务 52 3.3 本章小结 60 第4章 深入理解zygote 61 4.1 概述 62 4.2 zygote分析 62 4.2.1 AppRuntime分析 63 4.2.2 Welcome to Java World 68 4.2.3 关于zygote的总结 74 4.3 SystemServer分析 74 4.3.1 SystemServer的诞生 74 4.3.2 SystemServer的重要使命 77 4.3.3 关于SystemServer的总结 83 4.4 zygote的分裂 84 4.4.1 ActivityManagerService发送请求 84 4.4.2 有求必应之响应请求 86 4.4.3 关于zygote分裂的总结 88 4.5 拓展思考 88 4.5.1 虚拟机heapsize的限制 88 4.5.2 开机速度优化 89 4.5.3 Watchdog分析 90 4.6 本章小结 93 第5章 深入理解常见类 95 5.1 概述 96 5.2 以“三板斧”揭秘RefBase、 sp和WP 96 5.2.1 第一板斧——初识影子对象 96 5.2.2 第二板斧——由弱生强 103 5.2.3 第三板斧——破解生死魔咒 106 5.2.4 轻量级的引用计数控制类LightRefBase 108 5.2.5 题外线 Thread类及常用同步类分析 109 5.3.1 一个变量引发的思考 109 5.3.2 常用同步类 114 5.4 Looper和Handler类分析 121 5.4.1 Looper类分析 122 5.4.2 Handler分析 124 5.4.3 Looper和Handler的同步关系 127 5.4.4 HandlerThread介绍 129 5.5 本章小结 129 第6章 深入理解Binder 130 6.1 概述 131 6.2 庖丁解MediaServer 132 6.2.1 MediaServer的入口函数 132 6.2.2 独一无二的ProcessState 133 6.2.3 时空穿越魔术——defaultServiceManager 134 6.2.4 注册MediaPlayerService 142 6.2.5 秋风扫落叶——StartThread Pool和join Thread Pool分析 149 6.2.6 你彻底明白了吗 152 6.3 服务总管ServiceManager 152 6.3.1 ServiceManager的原理 152 6.3.2 服务的注册 155 6.3.3 ServiceManager存在的意义 158 6.4 MediaPlayerService和它的Client 158 6.4.1 查询ServiceManager 158 6.4.2 子承父业 159 6.5 拓展思考 162 6.5.1 Binder和线 匿名Service 165 6.6 学以致用 166 6.6.1 纯Native的Service 166 6.6.2 扶得起的“阿斗”(aidl) 169 6.7 本章小结 172 第7章 深入理解Audio系统 173 7.1 概述 174 7.2 AudioTrack的破解 174 7.2.1 用例介绍 174 7.2.2 AudioTrack (Java空间)分析 179 7.2.3 AudioTrack (Native空间)分析 188 7.2.4 关于AudioTrack的总结 200 7.3 AudioFlinger的破解 200 7.3.1 AudioFlinger的诞生 200 7.3.2 通过流程分析AudioFlinger 204 7.3.3 audio track cblk t分析 230 7.3.4 关于AudioFlinger的总结 234 7.4 AudioPolicyService的破解 234 7.4.1 AudioPolicyService的创建 235 7.4.2 重回AudioTrack 245 7.4.3 声音路由切换实例分析 251 7.4.4 关于AudioPolicy的总结 262 7.5 拓展思考 262 7.5.1 DuplicatingThread破解 262 7.5.2 题外线章 深入理解Surface系统 273 8.1 概述 275 8.2 一个Activity的显示 275 8.2.1 Activity的创建 275 8.2.2 Activity的UI绘制 294 8.2.3 关于Activity的总结 296 8.3 初识Surface 297 8.3.1 和Surface有关的流程总结 297 8.3.2 Surface之乾坤大挪移 298 8.3.3 乾坤大挪移的JNI层分析 303 8.3.4 Surface和画图 307 8.3.5 初识Surface小结 309 8.4 深入分析Surface 310 8.4.1 与Surface相关的基础知识介绍 310 8.4.2 SurfaceComposerClient分析 315 8.4.3 SurfaceControl分析 320 8.4.4 writeToParcel和Surface对象的创建 331 8.4.5 lockCanvas和unlockCanvasAndPost分析 335 8.4.6 GraphicBuffer介绍 344 8.4.7 深入分析Surface的总结 353 8.5 SurfaceFlinger分析 353 8.5.1 SurfaceFlinger的诞生 354 8.5.2 SF工作线 Transaction分析 368 8.5.4 关于SurfaceFlinger的总结 376 8.6 拓展思考 377 8.6.1 Surface系统的CB对象分析 377 8.6.2 ViewRoot的你问我答 384 8.6.3 LayerBuffer分析 385 8.7 本章小结 394 第9章 深入理解Vold和Rild 395 9.1 概述 396 9.2 Vold的原理与机制分析 396 9.2.1 Netlink和Uevent介绍 397 9.2.2 初识Vold 399 9.2.3 NetlinkManager模块分析 400 9.2.4 VolumeManager模块分析 408 9.2.5 CommandListener模块分析 414 9.2.6 Vold实例分析 417 9.2.7 关于Vold的总结 428 9.3 Rild的原理与机制分析 428 9.3.1 初识Rild 430 9.3.2 RIL_startEventLoop分析 432 9.3.3 RIL Init分析 437 9.3.4 RIL_ register分析 444 9.3.5 关于Rild main函数的总结 447 9.3.6 Rild实例分析 447 9.3.7 关于Rild的总结 459 9.4 拓展思考 459 9.4.1 嵌入式系统的存储知识介绍 459 9.4.2 Rild和Phone的改进探讨 462 9.5 本章小结 463 第10章 深入理解MediaScanner 464 10.1 概述ia分析 465 10.2.1 MSR模块分析 466 10.2.2 MSS模块分析 467 10.2.3 android.process.media媒体扫描工作的流程总结 471 10.3 MediaScanner分析 472 10.3.1 Java层分析 472 10.3.2 JNI层分析 476 10.3.3 PVMediaScanner分析 479 10.3.4 关于MediaScanner的总结 485 10.4 拓展思考 486 10.4.1 MediaScannerConnection介绍 486 10.4.2 我问你答 487 10.5 本章小结 488 前言 虽然前言位于书的最前面,但往往是最后才完成的。至今,本书的撰写工作算是基本完成了,在书稿付梓之前,心中却有些许忐忑和不。
文本标签:平板msr
本文地址:http://www.huapuxin.cn/blog/2645.html
除非注明,本站所有文章皆为原创,转载请以链接形式标明本文地址