《SQL语言与数据库 *** 作技术大全》 本书以应用广泛的SQL Server 2005数据库为依据,按照数据库 *** 作的一般顺序,用16章的篇幅,以基础介绍、数据库及表的创建、数据查询、数据 *** 纵、数据控制、事务控制和数据库管理的顺序,由浅到深地介绍Transact-SQL语言。 《24小时sql 2005 教程》(SQL Server 2005 Express in 24 Hours) 简介:写的清楚,而且实用。本书的作者是一个专家级的人物。他清楚详细的介绍了基本概念。 《SQL Server 2005盛宴系列课程》[ISO] 《零基础学SQL Server 2005 教案PPT/随书光盘》
看你学习oracle用来做什么了 数据库管理方面:Oracle9i数据库管理员指南
sql方面:oracle+SQL语法大全 程序设计相关的:Oracle专家高级编程 这三本书就差不多了 你去oracle网站上有oracle的白皮书,入门够用了
前言
信息泛滥并没有减弱的趋势 人们被来自电视 Internet和塞满邮箱的广告等各种各样的信息所淹没 令人遗憾的是 随着信息数量的增长 信息的质量却在急剧下降 图书被期刊和杂志取代 然后被报纸 Web页面 博客取代 最终又被推特(eet)取代 信息量变得越来越庞大 也变得越来越不可信赖 更糟糕的是 在Internet时代数据永远不会真正消失 它不停地累积 隐藏在各种文件 日志和数据库中 根据Google的前CEO Eric Schmidt的说法 现在人类在两天之内创造的数据量就相当于自从出现书写记录到 年(或者任何一年)所创造的数据 即现在只需要两天就会创造出大约 EB(即 亿GB)的数据 这一步伐还在不停地加速
当以电子化方式存储数据变成现实之后 它也带来了自己的规则 要理解数据的含义 人们必须去学习相应的语言 关系数据库理论为人们带来了对电子化数据的掌控能力 它采用结构化查询语言(Structured Query Language SQL)来处理数据 到目前为止 关系数据库获取了巨大的成功
自从 世纪 年代第一次提出关系数据库以来 关系数据库和SQL已经取得了长足的进步 关系数据库和SQL中包含的那些概念对于初学者来说可能并不直观 本书将为读者抽丝剥茧 使读者理解SQL背后的原理 既让读者了解SQL的强大功能 也了解它存在的局限
读者对象
本书从入门知识开始介绍 读者无须具备SQL或关系数据库的预备知识 本书将带领读者走入SQL的发现之旅 读者将亲自创建示例数据库 它不仅结合了本书中所介绍的SQL概念 还将通过几次反复重构引入数据建模 查询调整和优化的概念 本书还介绍了一些适用于每一种SQL的最佳实践
本书适合于准备学习关系数据库程序设计的计算机程序员 也适合那些希望从数据库中释放更强大威力的商业用户 SQL是关系数据库世界的通用语言 每一个对学习SQL这门强大语言感兴趣的人都适合阅读本书
先前已具有一定数据库使用经验的读者可以略过前两章 直接跳到更高级的内容 当然也可以复习一下这两章中介绍的重要原则
内容提要
本书介绍了当前已发布的SQL标准SQL: 把最主要的精力放在了SQL语言实际的运用上 强调了不同SQL实现之间存在的差异 本书介绍了很多示例 在这些示例中使用了最新版本的现代数据库系统对SQL的具体实现 这些数据库要么是可以免费下载的Express版本 要么是免费的开源软件 另外 本书还介绍了目前最流行的桌面型数据库软件Microsoft Access和OpenOffice 本书中介绍的数据库包括
IBM UDB
Oracle g
Microsoft SQL Server / /
MySQL /
PostgreSQL
Microsoft Access /
带有嵌入式 HSQLDB的OpenOffice BASE
本书结构
本书从整体着眼 向读者介绍了关系数据库的一般概念 特别是SQL中的概念 通过一个反复重构数据库的过程 循序渐进地向读者介绍了数据库的各种知识 在这一过程中 对于开始时介绍的每一个概念 随后都进行了更详细的分析 从而启发读者理解这些概念背后的关联性
第 章简要地介绍了SQL及其背后的关系理论 这一章只是浮光掠影般地介绍了数据库最基本的概念 后面的各章都在此基础上展开 该章介绍了数据与信息的区别 一些基本的原理还需要在后面章节中进一步解释 这一章还对本书中所使用的关系数据库管理系统(RDBMS)进行了一个概述
第 章对这些概念进行了更深入的介绍 根据关系模型的分析 应该将无组织的数据结构化 使之符合关系模型的要求 即将 冰箱磁铁 模式转换为 斗柜 模式 然后再将其转换为关系数据库中实际的表
第 章进一步介绍了关系模型 初步介绍了数据库的基本设计和规范化的基本过程 这一章还介绍了一些对规范化数据执行查询的SQL工具 此外 该章还介绍了动态SQL
SQL是一种基于集合的语言 这使得它既有强大的功能 也存在一定的局限 第 章讨论了最流行的过程化扩展(例如Oracle的PL/SQL和Microsoft的Transact SQL) 这一章还介绍了SQL函数 SQL函数可以作为一种补充手段 以弥补在处理基于记录的逻辑时SQL存在的固有不足
第 章介绍了聚合数据 总结了这种方式的威力和局限 该章将前面章节中介绍过的SQL聚合函数提高到了一个新的层次 演示了如何使用SQL来获取数据的聚合值
第 章介绍了子查询 当数据集是交错的 查询数据需要依靠多层次的数据筛选时 可以将一个查询作为另一个查询的筛选条件 可以调整SQL语句 用JOIN代替子查询 这是贯穿本书的主题之一
SQL的强大功能在于处理存储在多个关系表中的数据 第 章介绍了SQL如何在单个数据集中联合这些关系表的数据
本书介绍的是基本的SQL概念 打开了进一步学习SQL的大门 第 章是SQL发现之旅的下一站 它介绍了进一步学习SQL时应该考虑的问题
第 章介绍了性能优化技术 描述了在优化查询和数据库环境时常用的方法和最佳实践 第 章讨论了多用户环境中关系数据库的工作原理 介绍了SQL中实现的处理并发数据访问的机制
SQL所有的 *** 作都与结构和顺序有关 毕竟它是结构化查询语言 真实的数据可以是各种规模和结构 第 章介绍了SQL如何处理半结构化数据(XML文档) 非结构化数据(文本文件)和二进制数据(例如和声音)
第 章简要地讨论了数据库领域的最新发展 例如列式数据库 NoSQL数据库 对象数据库和面向服务的架构(SOA) 以及它们与SQL的关系
对于本书所讨论的每一种数据库 附录A按部就班地描述了安装示例数据库Library的过程 以及如何使用特定的指令生成Library数据库的初始数据 可以从本书支持网站上下载到这些SQL脚本
对于本书介绍的关系数据库软件包 附录B提供了一个详细的安装步骤
附录C描述了每一种数据库所提供的工具 使用这些工具可以访问 创建数据库对象 *** 纵存储在表中的数据
附录D介绍了开源项目SQuirreL Universal SQL Client 可以通过Java Database Connectivity(JDBC)接口 使用SQuirreL Universal SQL Client来访问各种数据库 该附录详细地介绍了如何安装和配置该软件
学习本书的条件
为了充分利用本书 建议下载和安装本书中使用的关系数据库软件 这些软件绝大多数都是免费的 或者具有免费的试用版 可以按照附录B中介绍的步骤来安装这些软件
支持网站和代码
在学习每一章时 建议下载相应的SQL脚本 创建并生成数据库 可以从 wrox 或者 agilitator 下载到本书的代码 在支持网站中 可以使用搜索框来查找指定名称的图书 在找到指定的图书之后 单击Download Code链接就可以访问允许下载的文件 可以通过>
目前还没有听说openoffice可以生成MySQL数据库系统的E-R关系模型图。不过,MySQL官方是有一个软件有这样的功能。那就是MySQL Workbench(GUI Tools),MySQL Workbench工具是专门用于进行数据库建模的,有非常方便和丰富的功能支持关系型数据库的建模,具体内容可参考mysqlcom官方网站,或者国内的合作伙伴的网站介绍。
补充一下,最新的MySQL Workbench已经完全包含了数据库建模与设计、数据库SQL开发和数据库管理与维护等功能,可参考MySQL官网的介绍。
MySQL官方相关的建模与管理工具:
MySQL Workbench (GUI Tool)
MySQL Workbench provides DBAs and developers an integrated tools environment for:
-- Database Design & Modeling
-- SQL Development (replacing MySQL Query Browser)
-- Database Administration (replacing MySQL Administrator)
BTW,楼上的回答的确太牛X了!
一、使用JDBC的方式连接数据库,完成在数据库“学生”中建立数据表“学生成绩”并显示建表以后的结果。
二、设计一个java数据库应用程序,它能按照菜单(用输出对话框显示)的选项,对任务一创建的“学生成绩”表进行任意数据记录和本人信息显示。
第 章 多用户环境
数据库并不是一个孤岛 可以想象这样的场景 一个或多个用户都在访问数据库 所有的修改和保存都按照一种正确的顺序执行 不会陷入混乱 在现实中 创建数据库通常都是为了实现多人共享数据 即使对于桌面型数据库 Microsoft Access和OpenOffice BASE 也可以通过网络进行共享 RDBMS服务器本身就是专门设计用于支持多用户环境的
当一个以上的用户访问同一个数据集时 一些新的问题就产生了 哪些数据应该对于每一个用户都可见呢?谁的修改应该具有优先权?在执行一个较长的数据库过程期间 用什么保证数据的修改不会丢失?为了找到这些问题(以及很多其他问题)的答案 下面将介绍会话 事务和锁的概念
上面的这些问题可以用RDBMS的术语重新表述为
事务为潜在的数据一致性问题提供了解决方案
锁用于处理数据的并发性问题
会话代表了事务和锁存在的上下文环境
会话
在RDBMS服务器和访问它的一个用户之间发生的任何通信过程都是发生在一个会话的上下文环境中 可以将会话视为一个唯一的通道 它仅为你打开 供你访问数据 或者在桌面型数据库的情形下 例如Microsoft Access和OpenOffice BASE 就是专属于你自己的一个数据文件的副本 当你连接到数据库并通过认证时 RDBMS将为你自动创建一个会话
在多用户环境中 令人担忧的问题之一就是数据的完整性 当一个客户端应用程序建立了一个到RDBMS服务器的连接时 称为 打开了一个会话 会话就是该应用程序与服务器进行通信的私有通道 在会话期间 用户可能修改了一些首选项(例如默认语言或默认数据格式) 这些设置仅影响到当前这个特定的用户环境 并且仅仅只在该会话期间有效 各种RDBMS对会话的实现细节和会话的默认行为可能有所差异 但这些基本的原则是保持一致的
本书中使用的工具都是客户端在会话上下文中访问RDBMS服务器的例子 对于桌面型数据库则有所不同 例如Microsoft Access文件 它既可以作为数据存储使用 也可以包含很多通常与应用程序相关的对象 例如表单 报表等(有很多办法可以将这些功能划分到前端和后端文件中) 对于Microsoft Access 会话就是打开的mdb/accdb文件的一个本地副本 在使用完之后必须将其合并回 主 文件(关于这一话题的更多内容 请参考有关Microsoft Access的专业出版物)
OpenOffice BASE的架构与Microsoft Access不同 从本质上讲 OpenOfficeBASE被设计为一个桌面型的通道 为任何支持JDBC驱动程序的数据库提供一个前端 它内置的HSQLDB数据库引擎是一个默认的选择 嵌入版本的OpenOffice BASE并未设计用于多用户环境
RDBMS为各自的RDBMS服务器都提供了一些命令行工具 这是所有RDBMS的共同特性 所有RDBMS都提供了一个图形化的用户界面(GUI) 另外还有很多第三方工具 关于这些工具的更多信息 请参考附录C和附录D的内容
SQL标准定义了很多参数 可以使用这些参数来连接数据库 并在会话期间保持这些参数 RDBMS已经实现了其中绝大部分参数 尽管在某些元素的实现上使用了私有的语法 但是只是语法形式的不同 本质是一样的
在Oracle中 为了建立一个数据库连接 用户必须具有系统特权CREATESESSION;要想修改会话的参数 用户必须具有ALTER SESSION特权 在初始时 会话的所有默认参数都是从一个特殊的Oracle配置文件中加载的 只有数据库管理员或者具有必要特权的人才能修改这个配置文件 一旦连接建立之后(即创建了会话) 用户就可以根据自己的偏好和工作的要求修改会话的参数
IBM DB 为会话环境提供了非常少的用户控制 它提供了一个SET SESSION AUTHORIZATION语句(遵循SQL标准)和一个等效的SET SESSION_USER语句 用于修改会话的上下文
SETPASSTHRU语句为会话提供了最直接的控制 它可以为将SQL数据直接提交到数据库打开和关闭一个会话 另外 在会话期间创建的全局临时表将使用SESSION组件作为限定的模式(在临时表的名称与某个永久表的名称相同的情况下 避免在访问表时出现歧义)
当客户端终止了一个会话 自发地终止会话或异常地终止会话 为会话设置的所有参数都将消失 此外 对于所有悬而未决的事务 在客户端自发地终止会话的情况下将执行一个隐式的提交 在会话异常终止的情况下将执行一个回滚
数据库管理员(DBA)可以杀死或断开一个会话 但在各个RDBMS中执行该命令的语法存在一定的差别
试一试修改会话参数
Microsoft SQL Server 提供了大量的语句 可以修改当前会话的设置 这些语句并不是SQL标准的一部分 实际上它们是Transact SQL方言的一部分 下面的例子将修改其中一个设置 ANSI_NULLS 并查看该设置对查询输出的影响
( ) 打开Microsoft SQL Server Management Studio Express 连接到LIBRARY数据库
( )下面的语句用于从LIBRARY数据库的PHONE表中获取所有BK_PRICE字段不为NULL的记录
SET ANSI_NULLS ON
GO
SELECT bk_title
FROM books
WHERE bk_price <> NULL
GO
( row(s) affected)
( ) 尽管实际上可以料想到 LIBRARY数据库中的所有图书都具有相应的价格 表中一定存在满足这一条件的记录 但是该查询却没有返回任何记录
( ) 清除查询窗格中的内容 输入新的SQL批语句 如下所示
SET ANSI_NULLS OFF
GO
SELECT bk_title
FROM books
WHERE bk_price<> NULL
GO
BK_TITLE
SQL Bible
Steppenwolf
示例说明
由于NULL并不是一个特殊的值 它是一个 表示缺少值的占位符 因此对NULL值应该区别对待 SQL 标准强制要求凡是涉及NULL值的比较 *** 作总是返回FALSE 把MicrosoftSQL Server 的ANSI_NULLS参数调整为ON将指示数据库遵循这一标准 但Oracle / g和IBM DB 都没有类似于ANSI_NULLS这样的设置
如果使用更为标准的ISNULL语法 就可以完全避免这一情况
SELECT bk_title
FROM books
WHERE bk_price IS NOT NULL
在所有RDBMS中 上面这个查询都可以返回正确的结果
返回目录 SQL实战新手入门
编辑推荐
Oracle索引技术
高性能MySQL
lishixinzhi/Article/program/SQL/201311/16452
以上就是关于SQL书籍推荐全部的内容,包括:SQL书籍推荐、SQL实战新手入门:前言、配置好MySQL ,ODBC,OpenOffice后一切正常,但是openoffice不能生成数据库的关系图,这是为什么等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)