突出重围

出版时间:2010-10  出版社:赵松涛、 等 电子工业出版社 (2010-10出版)  作者:赵松涛  页数:436  

前言

图书难做,技术类的图书越来越难做,因为网络已经让资料的搜索和盗版几乎没有成本,还缘于社会转型期的喧嚣和浮躁已经让人很难静下心来读书。在接连出版了几本叫好不叫座的数据库图书后,我几乎已经完全丧失了写作的勇气。是郭立主任和她领导的博文视点这个团体给了我勇气和力量,在历经3年的打磨和反复修改的基础上,才有了这本图书的问世。个中辛苦,唯有自知。从SQL Server 6.5到SQL Server 2008,我一直在学习、研究并使用,10多年的过程中,对其了解和掌握也有一个逐步加深的过程。如果说有什么心得和体会的话,我的理解是Transact-SQL语言应该是SQL Server的核心和精髓,因为不论是管理和开发,最终落脚都是Transact-SQL语言的作用。遗憾的是,大部分学习SQL Server的人员都在简单掌握其图形化管理界面操作后,往往忽略对Transact-SQL的学习和了解。一方面是SQL Server的联机丛书已经做得足够仔细,另外一方面也是因为Transact-SQL的学习没有好的实例和代码可以借鉴。最近几年,我逐步深入研究SQL Server的核心机制,在此基础上形成了自己的一些研究结论。这本图书就是将自己对Transact-SQL的了解和掌握,以及研究使用的实例代码呈现给读者,绝非对联机丛书的简单雷同使用。因此,本书可以称为是一名数据库技术爱好者的独家秘笈。原创留口碑,专业出精品。无论是管理还是开发人员,我相信这本书都可以作为您的案头丛书。

内容概要

  《突出重围:Transact-SQL管理与开发实例精粹》将作者10余年从事SQL Server数据库管理和开发经验积累的Transact-SQL综合性实例整理归类并进行剖析。可以帮助读者快速借鉴和开发出适合自己的Transact-SQL实例,这些实例既可以用于数据库管理,也可以用于数据库系统开发。同时,由于Transact-SQL语言良好的传承和继承性,因此,《突出重围:Transact-SQL管理与开发实例精粹》的绝大部分代码可以跨越SQL Server版本的限制,在SQL Server 2008、2005甚至2000上都可以使用,即使今后推出的新版本,几乎也不用修改就可以移植使用。《突出重围:Transact-SQL管理与开发实例精粹》涉及Transact-SQL使用的各个方面,但又不是联机丛书语法的简单复制,而是侧重于通过实例来学习综合使用Transact-SQL各语法要素完成特定任务的方法。  《突出重围:Transact-SQL管理与开发实例精粹》既适合数据库管理人员,也适合开发人员阅读和参考,还可作为大中专院校及各类培训班的教材,极具实用性。

作者简介

  赵松涛,工程师,北京大学计算机专业硕士。 高校教学5年,从事计算机网络和数据库系统管理、应用开发6年。目前在一线从事SQL、Server和Dracle数据库的系统管理、应用开发,并为大型企业和高校做培训,广受学员好评。从2001年至今,先后独立和合作出版了6本数据库方面的图书。 对数据库的体系结构,日志的绪构和作用,以及数据库的,备份和恢复机制等有较深入的理解。

书籍目录

第1章 Transact-SQL语法元素	11.1 标识符	11.1.1 必须有标识符吗	11.1.2 标识符的排序规则	11.1.3 常规标识符	21.1.4 带分隔符的标识符	31.2 数据类型	31.2.1 哪些对象需要数据类型	31.2.2 如何选择恰当的数据类型	41.2.3 基本数据类型	51.2.4 SQL Server 2008新增数据类型	51.2.5 深入研究tinyint数据类型	61.2.6 深入研究smallint数据类型	81.2.7 深入研究int(Integer)数据类型	101.2.8 深入研究bigint数据类型	121.2.9 decimal(numeric)数据类型的使用	141.2.10 float数据类型的使用	161.2.11 real数据类型的使用	171.2.12 char数据类型的使用	171.2.13 varchar数据类型的使用	171.2.14 用CAST函数转换数据类型	181.2.15 用CONVERT函数转换数据类型	181.3 常量	191.3.1 数值型常量的格式	191.3.2 字符串型常量的格式	201.3.3 日期时间型常量的格式	201.4 注释	201.4.1 添加单行注释信息	201.4.2 添加多行注释信息	201.5 变量	211.5.1 变量的数据类型	211.5.2 变量的分类	211.5.3 局部变量的声明	211.5.4 局部变量的赋值	221.5.5 局部变量的作用域	231.6 常用聚合函数	231.6.1 计算平均值AVG	231.6.2 计算最小值MIN	241.6.3 计算最大值MAX	251.6.4 计算求和值SUM	261.6.5 计算项数值COUNT(COUNT_BIG)	261.6.6 计算标准偏差值STDEV	271.6.7 计算方差VAR	281.7 常用日期时间函数	291.7.1 获取当前日期GETDATE	291.7.2 获取年度信息YEAR	301.7.3 获取月份信息MONTH	301.7.4 获取天数信息DAY	301.7.5 任意获取日期时间值部分DATEPART	311.7.6 日期加法DATEADD	311.7.7 日期减法DATEDIFF	321.7.8 2008中新增的日期时间型函数	331.7.9 判断是否为日期数据ISDATE	331.8 常用字符串函数	331.8.1 获取字符的ASCII码ASCII	331.8.2 获取ASCII码对应的字符CHAR	341.8.3 获取字符的Unicode编码UNICODE	351.8.4 获取Unicode编码对应的字符NCHAR	361.8.5 获取字符串第一次出现位置PATINDEX	361.8.6 生成空格字符串SPACE	371.8.7 按指定次数重复生成字符串REPLICATE	381.8.8 截取子串SUBSTRING	391.8.9 获取字符串长度LEN	391.8.10 替换字符串中内容STUFF	401.8.11 指定位置搜索字符串中内容CHARINDEX	411.8.12 生成带分隔符的Unicode字符串QUOTENAME	421.8.13 转换浮点数字为字符串STR	421.8.14 截取左边字符串LEFT	431.8.15 截取右边字符串RIGHT	431.8.16 截取左边空格LTRIM	441.8.17 截取右边空格RTRIM	441.8.18 转换为小写字符串LOWER	451.8.19 转换为大写字符串UPPER	451.8.20 反序字符串REVERSE	461.8.21 获取字符串字节数DATALENGTH	461.9 常用文本和图像函数	471.9.1 查找特定字符串PATINDEX	471.9.2 获取文本指针TEXTPTR	471.9.3 检测文本指针是否有效TEXTVALID	491.9.4 读取文本图像列内容READTEXT	491.9.5 写入文本图像列内容WRITETEXT	501.9.6 更新文本图像列内容UPDATETEXT	511.10 常用数学函数	521.10.1 计算绝对值ABS	521.10.2 获取大于等于的最小整数值CEILING	531.10.3 获取小于等于的最大整数值FLOOR	531.10.4 获取随机数RAND	531.10.5 获取指定长度和精度ROUND	541.11 常用元数据函数	541.11.1 获取数据库标识符DB_ID	541.11.2 获取数据库名称DB_NAME	551.11.3 获取数据库属性值DATABASEPROPERTYEX	561.11.4 获取文件组标识符FILEGROUP_ID	571.11.5 获取文件组名称FILEGROUP_NAME	581.11.6 获取文件组属性值FILEGROUPPROPERTY	581.11.7 获取文件标识符FILE_ID	601.11.8 获取文件名称FILE_NAME	611.11.9 获取文件属性值FILEPROPERTY	621.11.10 获取数据对象标识符OBJECT_ID	631.11.11 获取数据对象名称OBJECT_NAME	641.11.12 获取文件属性值OBJECTPROPERTYEX	661.12 运算符	671.12.1 算术运算符	671.12.2 位运算符	681.12.3 比较运算符	681.12.4 逻辑运算符	681.12.5 字符串连接运算符	691.12.6 赋值运算符	691.12.7 运算符的优先级	69第2章 Transact-SQL语句	702.1 控制流语句	702.1.1 程序块语句BEGIN..END	702.1.2 判断语句IF..ELSE	712.1.3 循环语句WHILE	722.1.4 分支判断语句CASE	742.1.5 无条件退出语句RETURN	752.1.6 无条件跳转语句GOTO	772.1.7 延期执行语句WAITFOR	782.2 运行时生成语句	792.2.1 用EXECUTE执行动态命令	802.2.2 用SP_EXECUTESQL执行动态命令	812.2.3 参数替换	832.2.4 为什么提倡使用SP_EXECUTESQL	842.2.5 使用输出参数的SP_EXECUTESQL	852.3 语句之间数据的传递	862.3.1 Transact-SQL语句之间数据的传递	862.3.2 Transact-SQL与高级语言之间数据的传递	872.4 错误处理	902.4.1 SQL Server数据库引擎错误	912.4.2 用TRY..CATCH发现错误	912.4.3 捕获错误的系统函数	922.4.4 用@@ERROR捕获上一条语句的错误	932.4.5 用RAISERROR反馈错误	942.5 批处理	962.5.1 GO的含义	962.5.2 研究批处理的执行	962.5.3 批处理的意义	992.5.4 为什么临时变量作用域不能跨批处理	1002.5.5 如何编写批处理	1012.5.6 批处理如何处理错误	1012.5.7 脚本	102第3章 查询服务器配置信息	1033.1 配置查询环境	1033.2 查询服务器属性值	1043.2.1 ServerProperty系统函数	1043.2.2 查询数据库引擎版本	1053.2.3 综合使用ServerProperty函数查询	1053.3 判断登录账户身份	1063.4 读写注册表信息	1063.4.1 读注册表xp_regenumvalues	1073.4.2 读注册表xp_regread	1073.4.3 写注册表xp_regwrite	1083.4.4 删除注册表项xp_regdeletevalue	1083.4.5 读注册表项xp_instance_regread	1093.4.6 写注册表xp_instance_regwrite	1093.4.7 读注册表中的主要数据文件路径信息	1103.4.8 读注册表中的错误日志文件路径信息	1113.4.9 读注册表中的日志文件路径信息	1123.5 综合实例	1133.5.1 获取“常规”选项卡信息	1133.5.2 获取服务器配置参数信息	1143.5.3 获取服务器上数据库信息	1153.5.4 获取服务器上处理器数量	1153.5.5 提升SQL Server服务器优先级	1163.5.6 获得Windows版本信息	1163.5.7 获得身份验证机制	1173.5.8 获得登录审核机制	1183.5.9 自动检测服务器重要的配置参数	1183.5.10 查询服务器的用户或用户组	1263.5.11 查询用户角色或应用程序角色	127第4章 登录过程	1294.1 连接	1294.1.1 查询所有连接信息	1294.1.2 查询连接总数	1304.1.3 查询阻塞的连接	1304.1.4 查询用户建立的连接	1304.1.5 查询系统建立的连接	1304.1.6 查询活动的用户连接	1314.1.7 查询用户连接的不同客户机	1314.2 配置	1314.2.1 查询当前系统配置	1314.2.2 查询当前最大工作线程数	1324.3 会话	1324.3.1 查询服务器上的所有会话	1324.3.2 查询会话建立的游标	1324.3.3 查询会话的错误信息	1334.3.4 查询会话的缓冲区命中率	1334.3.5 查询会话的操作系统线程	1344.3.6 查询当前会话ID	1354.4 综合运用	1354.4.1 综合查询连接统计信息	1354.4.2 判断当前登录的权限	1374.4.3 查询会话超时设置	1374.4.4 判断连接是否为DAC	1384.4.5 查询当前连接的网络参数	1384.4.6 查询SQL Server版本信息	1394.4.7 查询服务器基本属性	1394.4.8 查询当前登录名	1414.4.9 查询当前的活动事务数	1414.4.10 查询数据库缓冲区命中率低的会话	1414.4.11 查询数据库缓冲区命中率最低的会话的SQL语句	142第5章 数据库相关	1445.1 查询数据库信息	1445.1.1 查询所有的用户数据库名称	1445.1.2 用sp_dboption存储过程配置数据库	1455.1.3 配置数据库的恢复模式	1455.1.4 判断数据库的名称是否含有特定字符	1465.1.5 判断两个数据库的排序规则是否一致	1475.1.6 判断数据库是否系统数据库和可读	1485.1.7 查询可以访问的数据库	1485.1.8 查询数据库的文件	1495.1.9 查询数据库的系统表	1505.1.10 查询数据库的排序规则	1515.1.11 查询数据库的排序规则Windows代码	1525.1.12 查询数据库支持的排序规则	1525.1.13 统计数据库上的进程数	1525.1.14 查询数据库的兼容性级别	1535.1.15 查询数据库的最后备份时间	1535.1.16 查询数据库的最后日志备份时间	1535.2 数据库的存储空间	1545.2.1 查询数据库的总空间	1545.2.2 查询数据库的数据文件总空间	1545.2.3 查询数据库的日志文件总空间	1555.2.4 查询数据文件已经分配的空间	1555.2.5 查询数据文件的可用空间	1555.2.6 查询日志文件已经分配的空间	1575.3 综合运用	1595.3.1 查询数据库的属性	1595.3.2 获取所有数据库的数据文件空间使用率排序	159第6章 未公开的DBCC命令	1626.1 DBCC PAGE查询数据页面	1626.1.1 查询DBID和DBNAME	1636.1.2 查询FILENUM和PAGENUM	1636.1.3 DBCC PAGE的典型用法	1636.2 DBCC LOG查询日志	1646.3 DBCC ERRORLOG初始化错误日志	1656.4 DBCC FLUSHPROCINDB清除缓存存储过程	1666.5 DBCC BUFFER查询缓冲区	1666.6 DBCC DBINFO显示数据库结构	1676.7 DBCC DBTABLE显示数据字典	1686.8 DBCC IND显示表的索引页面信息	1686.9 DBCC PRTIPAGE显示索引每行的数据页	1696.10 DBCC RESOURCE显示服务器资源情况	1696.11 DBCC DBRECOVER恢复质疑数据库	1706.12 DBCC CACHESTATS查看内存统计信息	1706.13 DBCC MEMORYSTATUS查询内存分配	1716.14 DBCC跟踪标记	1716.14.1 概念	1716.14.2 打开跟踪标记	1726.14.3 关闭跟踪标记	1726.14.4 查询跟踪标记状态	1726.15 DBCC SHOWFILESTATS显示数据文件空间	1726.16 WITH TABLERESULTS表格显示信息	1736.17 DBCC LOGINFO查询虚拟日志信息	1736.18 DBCC EXTENTINFO查询盘区数	174第7章 数据和日志文件	1767.1 FILEPROPERTY函数获得文件属性	1767.1.1 判断文件是否只读	1767.1.2 判断文件是否主要数据文件	1777.1.3 查询文件已经使用空间	1777.2 FN_VIRTUALFILESTATS获得文件I/O性能	1777.2.1 查询指定文件的I/O性能	1787.2.2 查询指定数据库的所有文件的I/O性能	1787.2.3 查询所有数据库所有文件的I/O性能	1797.2.4 查询文件I/O性能的动态性能视图	1807.3 日志文件相关	1807.2.1 查询VLF分布情况	1807.2.2 移动日志文件的内容	1827.2.3 删除日志文件的内容	1827.4 数据文件相关	1837.4.1 查询所有数据库的数据文件空间情况	1837.4.2 查询数据库存储空间的详细分布	1857.4.3 查询已分配空间中的行内数据	1927.4.4 查询已分配空间中的LOB大型数据	1937.4.5 查询已分配空间中的行溢出数据	1947.4.6 查询哪些类型的对象使用了数据空间	1947.4.7 查询使用数据空间的对象类型及其数量	1947.5 综合查询数据库文件的I/O性能	195第8章 数据对象	1978.1 索引	1978.1.1 更新表上所有索引的统计信息	1978.1.2 更新表上特定索引的统计信息	1998.1.3 统计数据库中索引使用的空间总和	2008.1.4 索引使用的空间详细情况	2038.2 表	2088.2.1 获得数据库表的存储空间分布	2088.2.2 获得数据缓冲区中数据对象的存储分布	212第9章 性能监控	2189.1 对象分配性能	2189.1.1 监控盘区分配情况	2189.1.2 监控盘区回收情况	2199.1.3 监控页面拆分情况	2209.1.4 监控表上锁升级情况	2219.2 内存性能	2229.2.1 SQL Server内存详解	2239.2.2 查询SQL Server服务器使用的内存数量	2259.2.3 查询连接使用的内存数量	2259.2.4 查询锁使用的内存数量	2269.2.5 查询优化器使用的内存数量	2269.2.6 查询SQL使用的内存数量	2269.2.7 查询服务器能够使用的最大内存数量	2279.2.8 查询当前服务器上可用内存数量	2279.2.9 查询最小服务器内存	2289.2.10 查询最大服务器内存	2289.2.11 查询计算机的物理内存	2299.2.12 查询计算机的虚拟内存	2299.3 过程缓冲区性能	2299.3.1 查询过程缓冲区使用的内存	2299.3.2 查询过程缓冲区内容类别	2309.3.3 查询过程缓冲区命中率	2309.3.4 查询过程缓冲区对象分布比例	2319.3.5 查询过程缓冲区中各类对象的命中率	2329.3.6 查询过程缓冲区各类对象使用的比例	2329.3.7 清除过程缓冲区中的对象	2339.3.8 过程缓冲区中消耗资源Top对象	2349.4 数据缓冲区性能	2389.4.1 查询数据缓冲区的内存数量	2389.4.2 查询数据缓冲区的理想内存数量	2399.4.3 查询数据缓冲区的可用内存数量	2399.4.4 查询数据缓冲区中数据使用的内存	2399.4.5 查询数据缓冲区的命中率	2409.4.6 清除数据缓冲区中的对象	2409.4.7 数据缓冲区中消耗资源Top对象	2419.5 其他实例	2429.5.1 查询资源等待情况	2429.5.2 查询计数器种类和性能值	2439.5.3 查询执行计划的属性	2449.5.4 查询性能计数器表是否可以使用	2459.5.5 查询服务器内存总体分布情况	245第10章 管理其他实例	25010.1 检测和使用XP_CMDSHELL	25010.1.1 检测XP_CMDSHELL是否启用	25010.1.2 用XP_CMDSHELL执行命令	25310.2 错误日志	25310.2.1 产生并使用新的错误日志文件	25310.2.2 获得错误日志文件的信息	25410.3 代理服务	25410.3.1 判断代理服务是否启动	25410.3.2 查询代理服务上产生的警报	25410.3.3 配置代理服务自启动	25510.3.4 判断代理服务是否允许访问	25510.3.5 获得代理服务启动信息	25610.3.6 记录代理服务启动时间	25610.3.7 获得代理服务子系统的信息	25610.3.8 获得代理服务详细配置信息	25610.3.9 运行代理服务监视器	25810.3.10 刷新代理服务作业	25810.3.11 查询代理服务活动作业	25910.4 设置登录环境	25910.5 数据库	26010.5.1 产生数据库检查点	26010.5.2 设置数据库单用户模式	26010.5.3 分离数据库	26010.5.4 附加数据库	26010.5.5 判断指定路径的日志文件是否存在	26110.5.6 获取主要数据文件中的文件信息	26110.5.7 获取主要数据文件中的数据库信息	26210.5.8 获取数据库的用户表信息	26310.5.9 脱机数据库	26410.5.10 联机数据库	26410.5.11 收缩数据库	26410.5.12 判断用户是否可以访问master数据库	26410.6 访问注册表	26510.7 读取硬盘空间信息	26610.8 判断文件是否存在	26610.9 存储空间的碎片	26610.9.1 数据的存储类型	26710.9.2 数据的存储结构	27010.9.3 存储空间的碎片类型	27010.9.4 碎片对数据操作性能的影响	27110.9.5 dbcc showcontig检测碎片	27210.9.6 dm_db_index_physical_stats检测碎片	27410.9.7 消除碎片的方法	27710.9.8 自动检测当前数据库的碎片	27810.9.9 自动消除数据库的碎片	283第11章 数据查询	28811.1 语法结构	28811.2 选择列表	28911.2.1 选择所有列	28911.2.2 选择特定列	29311.2.3 包含运算符的查询	29511.2.4 包含函数的查询	29611.2.5 消除重复项	29711.3 FROM子句	29811.3.1 使用表别名	29811.3.2 使用表提示	30111.4 WHERE子句	30511.4.1 WHERE子句中的运算符	30611.4.2 比较查询	30711.4.3 范围查询	30811.4.4 列表查询	30911.4.5 模式匹配查询	31011.5 GROUP BY子句	31211.5.1 语法结构	31211.5.2 实例分析	31311.6 ORDER BY子句	31411.6.1 语法结构	31411.6.2 实例分析	31511.7 HAVING筛选查询	31611.7.1 HAVING筛选查询的语法结构	31611.7.2 HAVING筛选查询实例	31611.8 INTO查询	31611.8.1 INTO查询的语法结构	31611.8.2 INTO查询实例	31711.9 SELECT联结查询	31711.9.1 SELECT联结查询的语法结构	31711.9.2 SELECT联结查询的分类	31711.9.3 笛卡儿积查询	31811.9.4 等值联结查询	31811.9.5 自然联结查询	31811.9.6 自身联结查询	31811.9.7 内联结查询	31911.9.8 左外联结查询	31911.9.9 右外联结查询	32011.9.10 全外联结查询	32011.10 SELECT嵌套查询	32011.10.1 什么是SELECT嵌套查询	32011.10.2 什么是SELECT嵌套子查询	32111.10.3 简单嵌套查询	32111.10.4 in嵌套查询	32211.10.5 some嵌套查询	32211.10.6 all嵌套查询	32311.10.7 exists嵌套查询	32411.11 操作结果集	32411.11.1 Union形成并集	32411.11.2 Except形成差集	32511.11.3 InterSect形成交集	32611.11.4 用公用表表达式临时存储结果集	326第12章 数据操作	32812.1 INSERT语句研究	32812.1.1 表结构和索引结构	32812.1.2 执行前的日志情况分析	32912.1.3 执行情况分析	32912.1.4 执行后的日志情况分析	33112.1.5 研究数据的变化情况	33212.1.6 研究结论	33312.2 UPDATE语句研究	33412.2.1 执行前的日志情况分析	33412.2.2 执行情况分析	33412.2.3 执行后的日志情况	33512.2.4 研究结论	33812.3 DELETE语句研究	33812.3.1 执行前的日志情况分析	33812.3.2 执行情况分析	33912.3.3 执行后的日志情况	33912.3.4 研究结论	34112.4 深入探讨语句内部机制	34112.4.1 谁先插入数据	34212.4.2 谁先更新数据	34212.4.3 谁先删除数据	342第13章 T-SQL游标	34313.1 游标概述	34313.1.1 什么是游标	34313.1.2 游标的类型	34413.1.3 默认结果集是如何使用的	34413.1.4 什么是MARS	34513.1.5 使用游标还是默认结果集	34513.1.6 使用服务器游标还是客户机游标	34613.2 T-SQL游标定义及使用	34613.2.1 T-SQL游标的生命周期	34613.2.2 T-SQL游标的声明	34713.2.3 T-SQL游标的打开	34713.2.4 T-SQL游标的读取	34813.2.5 T-SQL游标的关闭	34813.2.6 T-SQL游标的释放	34913.2.7 T-SQL游标的综合实例	349第14章 事务和锁	35114.1 多用户数据库的并发问题	35114.1.1 并发访问的实例	35114.1.2 并发问题	35214.2 事务	35314.2.1 事务的特性	35314.2.2 事务的状态	35414.3 SQL SERVER中的事务机制	35514.3.1 事务模式	35514.3.2 更改事务模式	35614.3.3 事务的启动	35714.3.4 事务日志记录	35714.3.5 事务编程语句	35714.3.6 事务的调度	35814.3.7 事务的隔离性级别	35814.3.8 批(GO)	35914.4 锁	36014.4.1 锁的粒度	36014.4.2 锁的类型(模式)	36114.4.3 锁持有度	36114.4.4 动态锁机制	36214.4.5 查看锁	36214.5 死锁	36314.5.1 死锁的发生	36414.5.2 消除死锁的方法	36414.5.3 SQL Server 死锁检测和结束机制	36514.5.4 跟踪和检测死锁	365第15章 存储过程	367第16章 自定义函数和触发器	402第17章 某项目数据库T-SQL开发实例	416

章节摘录

插图:

编辑推荐

《突出重围:Transact-SQL管理与开发实例精粹》:专业专注,独到独家,深度深入。专业:作者10余年从事数据库管理研发的经验分享。专注:致力于数据库研发,所著数据库图书拥有良好的口碑。独到:数年磨一剑,独到的讲解思路令人叹为观止。独家:市面上SQL Server管理和开发无类似图书。深度:作者对SQL Server的深入研究得到微软专家的好评。深入:教读者融会贯通Transact-SQL的综合使用。

图书封面

评论、评分、阅读与下载


    突出重围 PDF格式下载


用户评论 (总计1条)

 
 

  •   大致翻阅了下, 想看懂也不是一件容易事
 

250万本中文图书简介、评论、评分,PDF格式免费下载。 第一图书网 手机版

京ICP备13047387号-7