欢迎来到 PostareSQL数据库从入门到精通。
在我们生涯的早期,我们开始理解开源软件的质量。不仅通常情况下它们可以自由使用,而且它们提供极高的质量。如果你发现问题,你可以检查源代码,理解程序工作过程。如果你找到一个错误,你可以自己修复或找别人帮你修复。我们从 1978 年开始试用开源软件,包括优秀的 GNU工具,包括GNU Emacs 和 GCC。我们从1993年开始使用Linux并愉快地使用 Linux 内核和 GNU 工具建立了一个完整的,自由的计算环境,并且使用 X Window 系统提供了一个图形用户界面。 PostgreSQL 是一个采取 相同的开 源理念的 优 秀的数据库系统 。
数据库是非常有用的东西。很多人发现"桌面数据库"在办公室和家里的小应用程序中非常有用。很多网站是数据驱动的,很多内容都由网页服务器后面的数据库提供。随着数据库的普及,我们觉得有必要写一本书介绍数据库理论和实践。我们写这本书整体介绍数据库,全面覆盖现代的关系数据库的能以及怎么高效使用它们。使用 PostgreSQL 作为他的数据库的人都没有觉得 PostgreSQL 在哪方面有什么不足。它支持优秀的数据库设计,非常有弹性和扩展性,且运行在几乎你所能想到的计算机上,包括 Linux,Unix,Windows,Mac OS X,AlX,Solaris 以及 HP-UX。
对了,免得你好奇,我告诉你 PostgreSQL 念做"post-gres-cue-el"(而不是" post-gray-ess-cue-el")。
本书大致分为三部分。
第一部分包括入门,包括数据库概述(它们是什么以及它们用来干什么),尤其是 PostareSQL的概述(怎样获得,安装和启动以及使用)。如果你同时运行了示例,到第 5 章完成的时候,你将建立起第一个可工作的数据库并且可以使用一些工具来做一些有用的事情,例如输入数据和执行查询。
本书的第二部分深刻地探索关系数据库的核心; SQL 查询语言。通过示例程序和"做一个尝试"章节,你将学到数据库编程的很多方面。,从简单的数据插入和修改,强大的各类查询到通过存储过程和触发器扩展数据库功能。本章最重要的内容是数据库无关,所以你从本章获取的知识能够让你在使用其他数据库时如鱼得水。 当然,所有的用来说明的示例资源是用 PostgreSQL 来作为示例数据库。关于PostgreSQL 的管理和数据库设计的习惯用法也将在本章完整讨论。
本书的第三部分关注于在你的程序中发挥 PostgreSQL的能力。本章涵盖了通过大量的编程语言连接到数据库、执行查询以及处理结果集。无论你是使用 PHP或者 Perl开发动态网页、用 Java 或者 C#开发企业级应用程序或者用C写一个客户端程序,你将找到你想要的章节。
这是 PostgreSQL从入门到精通的第二版;第一版在 2001年发布。从那时起,每章的内容都根据 8.0版本的 PostgreSQL做了升级。我们在本书中有机会补充了新的一章讨论通过 C#访问 PostgreSQL。
本书都是关于一个最近最成功的开源产品,一个名叫 PostgreSQL 的关系数据库。
数据库开发商和开源开发者都是 PostgreSQL 的热心拥护者。任何使用程序管理大量数据的人都可以从数据库中获得大量益处。PostgreSQL 是一个非常优秀的关系数据库实现,全功能,开源且免费使用。
PostgreSQL 支持大量的主流开发语言,包括C,C++,Perl, Python,Java, Td以及 PHP。它是最接近工业标准 SQL92的查询语言,并且正在实现新的功能以兼容最新的 SQL 标准∶ SQL2003。PostgreSQL 也获得数个奖项,包括三次被评为 Linux Journal杂志编辑选择奖最佳数据库(2000.2003和 2004年度)以及 2004 年度 Linux新媒体奖最佳数据库系统。我们也许我们有点超越自我。你也许想知道到底 PostgreSQL 是什么,为什么你要使用它。
本章我们将设置场景为本书的剩余部分并提供一些关于数据库的概括性背景知识、不同类型的数据库、为什么他们非常有用以及 PostgreSQL在哪些地方符合这些要求。
基于数据编程
基本上所有的非普通计算机程序操作大量的数据,而目大量的应用程序被开发用来处理数据而不是进行计算任务。有些人估计当今世界上 80%的应用程序开发会通过某种方式连接到数据库中的复杂数据,所以数据库对于很多应用来说是一种非常重要的基础。
以数据编程的资源很丰富。大部分好的编程书籍都包含章节关于建立、存储和操作数据。有三本书(由 Wrox发布)包含以数据编程的信息∶
《Beginning Linux Programming》第三版覆盖了 DBM 库以及 MySQL 数据库系统。
《Professional Linux Programming》包含关于 PostgreSQL和 MySQL 数据库系统的章节。《Beginning Databases with MySQL》全面覆盖了MySQL 数据库系统。
静态数据
数据有很多形态和大小,我们根据数据的不同性质处理数据。有些情况下,数据非常简单--也许仅仅是—个数字例如π的数值存在程序中用来画圆。程序本身可能包含这个硬编码的圆周率的值。我们把这种数据叫做静态数据,它永远不需要改变。
另一种静态数据的例子是欧洲一些国家的汇率。在欧元区,货币都按固定的保留小数点后 6 位的精度兑换到欧元。假设我们开发一个欧元区货币转换程序。他可能有一个硬编码的货币名称和基本汇率表,保存对应到欧元的兑换点数,这些汇率永远不会改变。不过还没完,因为这张表会随着欧元区国家数量的增长而增长。当一个国家注册到欧元区,这个国家货币对欧元的汇率将被设定,它将需要被加入这张表中。当这种情况发生,汇率转换程序需要修改,内置的货币表被修改,程序需要重建。这需要在每次货币表发生变化时做一次。
一个更好的办法是应用程序读取一个包含简单的货币信息的文件,文件可能包含货币的名称、国际符号以及汇率。之后在这个表需要改变时我们仅仅需要改变 这个文件,而不需要改变程序。
我们使用的这个数据文件没有特别的结构;它仅仅包含几.行文本,包含一些数据让应用程序读取。它没有固定的结构。因此我们把这种文件叫做扁平文件。以下是我们的货币文件可能的样子∶
France FRF 6.559570 Germany DEM1.955830 ltaly ITL 1936.270020 Belgium BEF 40.339901
用于数据存储的扁平文件
扁平文件对于很多应用类型来说非常有用。由于文件保持在可管理大小,我们很容易改变它,扁平文件可能非常符合我们的需求。
很多系统和程序,特别是 UNIX平台,使用扁平文件存储数据或者进行数据交换。UNIX的密码文件就是一个例子,它通常情况下像以下的样子∶
neil:*:500:100:Neil Matthew:/home/neil:/bin/bash nick:*:501:100:Ridk Stones:/home/rick;/bin/bash
这个例子包含一系列的信息和属性组成的记录。文件被设计成每行包含一个记录,整个文件则用来保存相关的记录到一起。某些情形下,这种模式还不够用,因而,我们需要增加扩展的功能来配合应用程序完成必须的工作。
重复单元和其他问题
假设我们决定扩展货币汇率程序(本章前面介绍过)来记录每个国家的语言,以及人口和面积。在扁平文件中,我们需要每行一个记录,每个记录由几个熟悉构成。记录中每个独立的属性总在固定的位置∶例如货币符号总是第二个熟悉。所以我们可以认为按列读数据,每列总是相同类型的信息。
为了添加某个国家使用的语言,我们可能会认为我们只需为每一行要添加一个新列。当我们发现一些国家有不止一种官方语言时,我们碰到了一个问题。所以,在我们给 Belqium 的记录中,我们需要同时包含 Flemish 语和 French 语。对于 Switzerland,我们需要添加四种语言。扁平文件在这是应该看起来像这样∶
这个问题被称为重复单元。我们现在的问题是重复的数据项(语言)是在记录内重复,也就是说数据可能会在列内重复,而不仅仅是记录。扁平的文件无法应付这类问题,因为它无法判断什么时候语言项列完了,开始下一个记录了。解决这个问题唯一的方法是在文件内添加一些结构,但这种情况下这个文件不再是扁平文件了。
这里有另一个示例。记录 DVD 详细信息的程序可能需要记录生产的年份,导演,风格以及演员列表。我们可以设计一个和 Windows 的.ini 文件格式差不多的文件,就像这样∶
我们通过引入描述每个记录类型的标记解决了重复单元的问题。但是,现在你的程序为了获得需要的数据,需要读取和解析更复杂的文件。添加记录以及搜索这种结构就更困难了。我们怎样才能确保用于风格或分类的描述是从一个特定子集选择的。我们怎样才能很容易的搜索到Kubrick 导演的电影?
由于对数据的需求越来越匀水,我们被迫写越来越多的代码用来读季取和存储我们的数据。如 果我们打展我们的 DVD答理程序,为 DVD 出租店主包含一些有用的信息——例如会员信息,租金,退租信息和预定信息,在扁平文件中管理所有这些信息的希望渺茫。
另外一个通用问题就是大小的问题。虽然包含结构的文本文件可以通过暴力扫描回答复杂的查询类似于"告诉我所有的最近三个月租过最少一次喜剧的会员",不单代码很难编写,而且性能可能会很低。这是因为程序除了扫描整个文件来查找任何一片信息外没有别的办法,即使是仅仅返回一条数据的问题"谁主演了 2001年的 A Space Odyssey"。
我们需要的是一种在通用数据处理系统里用来存储和检索数据的方法,而不是总是发明一个个解决方案用干有点不同但非常相似的问题。
我们需要的是一个数据库和一个数据库管理系统。
什么是数据库管理系统
韦氏在线字典定义数据库为一个为(通过计算机)高速搜索和检索的而特别组织的大量数据集。
数据库管理系统(database management system,DBMS)通常是一套用来让程序开发人员从繁重的数据存储细节和管理中解脱出来的程序库、应用程序以及工具套件。它还提供了用来搜索和更新记录的能力。多年来,数据库管理系统发展出大量的特点用来解决各种各样特别的数据存储问题。
数据模型
从 1960 年代到 1970年代,开发人员通过很多不同的方法建立数据库来解决重复单元的问题。这些方法从术语上说就是数据库系统模型。IBM在这方面的研究为这些模型提供了大量的基础,这些一直被用到现在。
一个早期的数据库系统设计的主要驱动力是效率。一个是系统效率更高的通用方法是强制使用固定长度的数据库记录。或至少每个记录有固定的元素(每行有固定的列数)。这可以有效的避免重复单元的问题。如果你是一个过程语言的程序员,你早就知道这种情况了,你可以将每个数据库记录读到一个简单的C数据结构中。现实世界中很少有这样的简单的情况,所以我们需要找到一些处理复杂结构的数据的方法。数据库系统设计者通过引入不同类型的数据库实现了这种需求。
1960 年代晚期 IBM 的信息管理系统介绍了数据库的层次模型。在这种模型中,把数据记录看成是其他记录的集合以解决重复单元的问题。
该模型可以用来比较描述如何制造一个复杂的产品组成的材料清单。例如,假设一辆车是一个底盘,一个机构,一个发动机,四个轮子组成。这些主要设备都进一步分解。包括一些汽缸发动机,汽缸头,曲轴。这些组件是进一步分解,直到我们得到螺母和螺栓构成的每一个汽车零件。
层次数据库模型到今天一直在使用,包括 Software AG 公司的适配数据库系统(Adaptable Database System, ADABAS)。
层次数据库系统有能力通过优化数据存储在某些具体问题上更加高效,例如判断哪个汽车使用一个特别的部件。
【下载地址】
链接:https://pan.baidu.com/s/1FlkXBSacgvZHNQjpbG5Ztw
提取码:ntt2
相关文章
PostgreSQL 是一个采取 相同的开 源理念的 优 秀的数据库系统 。这本书整体介绍数据库,全面覆盖现代的关系数据库的能以及怎么高效使
Mysql PostgreSQL SqlServer数据库中字符串类型区别
对于关系数据库来说,字符串类型的字段是经常要用到的。对于众多的字符串类型,如何区分他们的用法?
FlashFXP绿色版网盘下载,附激活教程 1839
FlashFxp百度网盘下载链接:https://pan.baidu.com/s/1MBQ5gkZY1TCFY8A7fnZCfQ。FlashFxp是功能强大的FTP工具
Adobe Fireworks CS6 Ansifa绿色精简版网盘下载 1607
firework可以制作精美或是可以闪瞎眼的gif,这在广告领域是需要常用的,还有firework制作下logo,一些原创的图片还是很便捷的,而且fireworks用法简单,配合dw在做网站这一块往往会发挥出很强大的效果。百度网盘下载链接:https://pan.baidu.com/s/1fzIZszfy8VX6VzQBM_bdZQ
navicat for mysql中文绿色版网盘下载 1652
Navicat for Mysql是用于Mysql数据库管理的一款图形化管理软件,非常的便捷和好用,可以方便的增删改查数据库、数据表、字段、支持mysql命令,视图等等。百度网盘下载链接:https://pan.baidu.com/s/1T_tlgxzdQLtDr9TzptoWQw 提取码:y2yq
火车头采集器(旗舰版)绿色版网盘下载 1738
火车头采集器是站长常用的工具,相比于八爪鱼,简洁好用,易于配置。火车头能够轻松的抓取网页内容,并通过自带的工具对内容进行处理。站长圈想要做网站,火车头采集器是必不可少的。百度网盘链接:https://pan.baidu.com/s/1u8wUqS901HgOmucMBBOvEA
Photoshop(CS-2015-2023)绿色中文版软件下载 1858
安装文件清单(共46G)包含Window和Mac OS各个版本的安装包,从cs到cc,从绿色版到破解版,从安装文件激活工具,应有尽有,一次性打包。 Photoshop CC绿色精简版 Photoshop CS6 Mac版 Photoshop CC 2015 32位 Photoshop CC 2015 64位 Photoshop CC 2015 MAC版 Photoshop CC 2017 64位 Adobe Photoshop CC 2018 Adobe_Photoshop_CC_2018 Photoshop CC 2018 Win32 Photoshop CC 2018 Win64