| 1、MySQL数据库技术(36) |
|
6.8 其他主题 本节包括几个主题,这些主题不完全适合于本章从client1 到client5 的开发中的任一小节的内容: ■ 在使用结果集元数据帮助验证这些数据适合于计算之后,使用结果集数据计算结果。 ■ 如何处理很难插入到查询中的数据。 ■ 如何处理图形数据。 .. |
| 2、MySQL数据库技术(35) |
|
6.7 客户机程序5—交互式查询程序 让我们把迄今为止研究的诸多内容整理一下,编写一个简单的交互式客户机程序。它的功能包括可以进入查询,用通用目标查询处理程序process_query 执行查询,并用前面研究过的显示格式process_result_set() 显示查询结果。 客户机程序5在某些方面与mysql 类.. |
| 3、MySQL数据库技术(34) |
|
6.6 处理查询 我们已经知道了如何开始和结束与服务器的会话,现在应该看看如何控制会话。本节介绍了如何与服务器通信以处理查询。执行的每个查询应包括以下几步: 1) 构造查询。查询的构造取决于查询的内容—特别要看是否含有二进制数据。 2) 通过将查询发送到服务器执行来发布查询。 .. |
| 4、MySQL数据库技术(33) |
|
6.5 客户机程序4—在运行时获取连接参数 现在我们有了容易修改的防止出现错误的连接代码,我们要了解一些如何做某些比使用NULL 连接参数更灵巧的事情,如在运行时允许用户指定一些值。客户机程序3由于固定连接参数方面的缺陷,要想更改那些值中的任何一个,都必须编辑源文件并重新编译。这十分不方便,特别是想使程序用于其他人时。在运行时指定连接参数.. |
| 5、MySQL数据库技术(32) |
|
6.4 客户机程序3—产生连接代码模块 对于我们的第三个客户机程序,即客户机程序3,通过将它封装到函数do_connect() 和do_disconnect() 中,将使连接和断开代码更加模块化,这样可以很容易地由多个客户机程序使用。这提供一种选择,可将连接代码精确地嵌入到main() 函数中。无论如何,对在应用程序过程中套用老调的任何代码.. |
| 6、MySQL数据库技术(31) |
| 6.3 客户机程序2—增加错误检查 我们的第二个客户机程序将像第一个客户机程序一样,但是将修改它们,考虑错误出现的可能性。“将错误检查作为读者的练习”这样的项目在编程文献中相当常见,这或许是因为检查错误相当令人讨厌。但是,我赞同这种观点,即MySQL 客户机程序应该测试错误条件并适当地进行回应。由于某种原因,返回状态值的客户机库的调用做这些事情,而且您要承担.. |
| 7、MySQL数据库技术(30) |
| 6.2 客户机程序1—连接到服务器 我们的第一个MySQL 客户机程序很简单:连接到服务器、断开,并退出。它本身并不是非常有用,但是必须知道如何做它,因为实际上用MySQL 数据库做任何事情都必须与服务器连接。这是一个公用的操作,开发创建连接的代码是编写每个客户机程序都将使用的代码。除此之外,这项任务带给我们一些简单开始的事情。以后,我们可以增加这个客户机.. |
| 8、MySQL数据库技术(29) |
| MySQL提供用C编程语言编写的客户机库,可以用它编写访问M y S Q L的客户机程序。这个库定义了应用程序编程接口,包括下面的实用程序: ■ 建立和终止与服务器会话的连接管理例程。 ■ 构造查询的例程,将例程发送到服务器,并处理结果。 ■ 当其他C API调用失败时,确定错误准确原因的状态和错误报告函数。.. |
| 9、MySQL数据库技术(28) |
| 5.2 选择API 本节介绍根据各种类型的应用程序选择A P I的方法,比较C、DBI 和PHP API 的能力,并给出它们相对的优点和缺点,并指出什么时候应选择哪一个。 首先应该指出,笔者不认为任一种语言优于其他语言。尽管笔者的确有自己的喜好,但还是统统使用它们。您也会有自己的喜好,像我的评论家一样。一个评论家会感觉应该强调C 对.. |
| 10、MySQL数据库技术(27) |
| 5.1 MySQL 可用的API 为了方便应用程序的开发,MySQL 提供了用C 编程语言编写的客户机库,它允许从任何C 程序的内部访问MySQL 数据库。客户机库实现应用程序编程接口( A P I),API 定义客户机程序如何建立和执行与服务器的通信。 然而,使用C 来编写MySQL 程序并不受限制。许多其他语言处理器本身也是由C 编写的,或具.. |
| 11、MySQL数据库技术(26) |
| 在本书的这部分中,我们将讨论编写自己的访问MySQL 数据库的程序所需要知道的内容。MySQL 有一组实用程序。例如, mysqldump 导出表的上下文和结构定义, mysql import将数据文件加载到表中, mysqladmin 实现管理w操作, mysql 可以使用户与服务器交互来执行任意的查询。每个标准的MySQL 实用程序都倾向于小巧,重点放在程序可完成特定.. |
| 12、MySQL数据库技术(25) |
| 4.6 管理员的优化 前面各段介绍了普通的MySQL 用户利用表创建和索引操作,以及利用查询的编写能够进行的优化。不过,还有一些只能由MySQL 管理员和系统管理员来完成的优化,这些管理员在MySQL 服务器或运行MySQL 的机器上具有控制权。有的服务器参数直接适用于查询处理,可将它们打开。而有的硬件配置问题直接影响查询处理速度,应该对它们进行调整。&n.. |
| 13、MySQL数据库技术(24) |
| 4.5 调度与锁定问题 前面各段主要将精力集中在使个别的查询更快上。MySQL 还允许影响语句的调度特性,这样会使来自几个客户机的查询更好地协作,从而单个客户机不会被锁定太长的时间。更改调度特性还能保证特定的查询处理得更快。我们先来看一下MySQL 的缺省调度策略,然后来看看为改变这个策略可使用什么样的选项。出于讨论的目的,假设执行检索( SELECT)的客户机程序为读取.. |
| 14、MySQL数据库技术(23) |
| 4.4 有效地装载数据 很多时候关心的是优化SELECT 查询,因为它们是最常用的查询,而且确定怎样优化它们并不总是直截了当。相对来说,将数据装入数据库是直截了当的。然而,也存在可用来改善数据装载操作效率的策略,其基本原理如下: ■ 成批装载较单行装载更快,因为在装载每个记录后,不需要刷新索引高速缓存;可在成批记录装入后才刷新。 &n.. |
| 15、MySQL数据库技术(22) |
| 4.3 列类型选择与查询效率 要选择有助于使查询执行更快的列,应遵循如下规则(这里,“BLOB 类型”应该理解为即包含B L O B也包含TEXT 类型): ■ 使用定长列,不使用可变长列。这条准则对被经常修改,从而容易产生碎片的表来说特别重要。例如,应该选择CHAR 列而不选择VARCHAR 列。所要权衡的是使用定长列时,表所占用.. |
| 16、MySQL数据库技术(21) |
| 4.2 MySQL 查询优化程序 在发布一个选择行的查询时, MySQL 进行分析,看是否能够对它进行优化,使它执行更快。本节中,我们将研究查询优化程序怎样工作。更详细的信息,可参阅MySQL 参考指南中的“Getting Maximum Performance from MySQL”,该章描述了MySQL 采用的各种优化措施。该章中的信息会不断变化,因为MySQL 的开.. |
| 17、MySQL数据库技术(20) |
| 关系数据库的世界是一个表与集合、表与集合上的运算占统治地位的世界。数据库是一个表的集合,而表又是行和列的集合。在发布一条SELECT 查询从表中进行检索行时,得到另一个行和列的集合。这些都是一些抽象的概念,对于数据库系统用来操纵表中数据的基本表示没有多少参考价值。另一个抽象概念是,表上的运算都同时进行;查询是一种概念性的集合运算,并且集合论中没有时间概念。当然.. |
| 18、MySQL数据库技术(19) |
| 3.9 MySQL 不支持的功能 本节介绍其他数据库中有而MySQL 中无的功能。它介绍省略了什么功能,以及在需要这些功能时怎么办。一般情况下, MySQL 之所以忽略某些功能是因为它们有负面性能影响。有的功能正在开发者的计划清单上,一旦找到一种方法可以实现相应的功能而又不致于影响良好性能的目标,就会对它们进行实现。 ■ 子选择。子选择是嵌套在.. |
| 19、MySQL数据库技术(18) |
| 3.8 解决方案随笔 本节内容相当杂;介绍了怎样编写解决各种问题的查询。多数内容是在邮件清单上看到的解决问题的方案(谢谢清单上的那些朋友,他们为解决方案作了很多工作)。 3.8.1 将子选择编写为连接 MySQL自3.24版本以来才具有子选择功能。这项功能的缺少是MySQL 中一件常常令人惋惜的事,但有一件事很多人似乎没.. |
| 20、MySQL数据库技术(17) |
| 3.7 加注释 MySQL 允许在SQL 代码中使用注释。这对于说明存放在文件中的查询很有用处。可用两个方式编写注释。以“ #”号开头直到行尾的所有内容都认为是注释。另一种为C 风格的注释。即,以“/ *”开始,以“* /”结束的所有内容都认为是注释。C 风格的注释可跨多行,如: 自MySQL 3.23 版以来,可在C 风格的注释中“隐藏” My.. |
| 21、MySQL数据库技术(16) |
| 3.6 检索记录 除非最终检索它们并利用它们来做点事情,否则将记录放入数据库没什么好处。这就是SELECT 语句的用途,即帮助取出数据。SELECT 大概是SQL 语言中最常用的语句,而且怎样使用它也最为讲究;用它来选择记录可能相当复杂,可能会涉及许多表中列之间的比较。SELECT 语句的语法如下: 除了词“ S E L E C T”和说明希望检.. |
| 22、MySQL数据库技术(15) |
| 3.5 获取数据库和表的有关信息 MySQL 提供了几条获取数据库和表中信息的语句。这些语句对于了解数据库的内容及了解自己表的结构很有帮助。还可以将它们作为使用A LTER TABLE 的一种辅助手段;能够知道当前列是如何定义的,计划出怎样对列进行更改会更为容易。SHOW 语句可用来获取数据库和表的几个方面的信息,它有如下用法: DESCRIBE.. |
| 23、MySQL数据库技术(14) |
| 3.4 创建、删除、索引和更改表 可利用C R E ATE TA B L E、DROP TABLE 和A LTER TABLE 语句创建表,然后,对它们进行删除,更改它们的结构。对于它们中的每一条语句,存在MySQL 专有的扩充,这些扩充使各语句更为有用。C R E ATE INDEX 和DROP INDEX 语句使您能够增加或删除现有表上的索引。 .. |
| 24、MySQL数据库技术(13) |
| 3.3 创建、删除和选择数据库 MySQL 提供了三条数据库级的语句,它们分别是: C R E ATE DATABASE 用于创建数据库,DROP DATABASE 用于删除数据库,USE 用于选择缺省数据库。 1. CREATE DATABASE 语句 创建一个数据库很容易;只要在C R E ATE DATABASE .. |
| 25、MySQL数据库技术(12) |
| 3.2 MySQL 的命名规则 几乎每条SQL 语句都在某种程度上涉及一个数据库或其组成成分。本节介绍引用数据库、表、列、索引和别名的语法规则。名称是区分大小写的,这里也对其进行了介绍。 3.2.1 引用数据库的成分 在用名称引用数据库的成分时,受到可使用的字符以及名称可具有的长度的限制。名称的形式还依赖于使.. |
| 26、MySQL数据库技术(11) |
|
为了与MySQL 服务器进行通信,必须熟练掌握S Q L。例如,在使用诸如mysql 客户机这样的程序时,其功能首先是作为一种发送SQL 语句给服务器执行的工具。而且,如果编写使用编程语言所提供的MySQL 接口的程序时,也必须熟悉SQL 语言,因为需要发送SQL 语句与服务器沟通。 第1章“M y S Q L与S Q L介绍”的教程介绍了.. |
| 27、MySQL数据库技术(10) |
| MySQL 允许编写包括常量、函数调用和表列引用的表达式。这些值可利用不同类型的运算符进行组合,诸如算术运算符或比较运算符。表达式的项可用圆括号来分组。表达式在SELECT 语句的列选择列表和WHERE 子句中出现得最为频繁,如下所示: 所选择的每列给出了一个表达式,如WHERE 子句中所示的那样。表达式也出现在DELETE 和U P D ATE.. |
| 28、MySQL数据库技术(09) |
| 2.3 选择列的类型 上一节描述了各种可供选择的MySQL 的列类型及其属性,以及它们可存储的各种值,所占用的存储空间等等。但是在实际创建一个表时怎样决定用哪些类型呢?本节讨论在做出决定前应考虑的各种因素。最“常用”的列类型是串类型。可将任何数据存储为串,因为数和日期都可以串的形式表示。但是为什么不将所有列都定义为串从而结束这里的讨论呢?让我们来看一个简单的例.. |
| 29、MySQL数据库技术(08) |
| 数据库中的每个表都是由一个或多个列构成的。在用C R E ATE TABLE 语句创建一个表时,要为每列指定一个类型。列的类型比数据类型更为特殊,它仅仅是如“数”或“串”这样的通用类型。列的类型精确地描述了给定表列可能包含的值的种类,如SMALLINT 或VA R C H A R ( 3 2 )。 MySQL 的列类型是一种手段,通过这种手段可以描述一个表列包含什么类型的.. |
| 30、MySQL数据库技术(07) |
| 根据定义,数据库管理系统的目的就是管理数据。即使一条简单的SELECT 1 语句也涉及表达式求值以产生一个整型数据值。MySQL 中的每个数据值都有类型。例如, 37.4 是一个数,而“ a b c”是一个串。有时,数据的类型是明显的,因为在使用C R E ATE TABLE 语句时指定了作为表的组成部分定义的每个列的类型,如: 而有时,数据类型是不明确的,如在.. |
| 31、MySQL数据库技术(06) |
| 1.5 与mysql 交互的技巧 本节介绍怎样更有效地且键入工作量较小地与mysql 客户机程序进行交互。介绍怎样更简单地与服务器连接,以及怎样不用每次都从头开始键入查询。 1.5.1 简化连接过程 在激活mysql 时,有可能需要指定诸如主机名、用户名或口令这样的连接参数。运行一个程序需要做很多输入工作,这很快就会让人.. |
| 32、MySQL数据库技术(05) |
| 1.4.9 删除或更新现有记录 有时,希望除去某些记录或更改它们的内容。DELETE 和U P D ATE 语句令我们能做到这一点。 DELETE 语句有如下格式: DELETE FROM t b l _ n a m e WHERE 要删除的记录 WHERE 子句指定哪些记录应该删除。它是可选的.. |
| 33、MySQL数据库技术(04) |
| 现在我们已经具备了所需的所有基础知识;可以将MySQL 投入工作了!本节提供一个教程,帮助熟悉M y S Q L。在完成这个教程时,将创建一个样例数据库和这个数据库中的表,然后增加、检索、删除和修改信息与数据库进行交互。此外,在操作这个样例数据库的过程中,将能学到下列东西: ■ 如何利用mysql 客户机程序与MySQL 通信。 ■ .. |
| 34、MySQL数据库技术(03) |
| 您可能会注意到,已经读了本书这么多页,但是还没有看到几句行话和术语。虽然我们大致提了一下怎样利用样例数据库,但事实上,关于什么是“数据库”,我们一点东西都还没有介绍。不过,我们现在打算设计该数据库,然后开始实现它,这样就不能再避而不谈数据库术语了。介绍数据库术语就是本节的目的。本节介绍的一些术语全书都要用到,因此必须对其熟悉。所幸的是,关系数据库中的许多概念是相当简单的。事实上,关系数.. |
| 35、MySQL数据库技术(02) |
| 本节介绍一个样例数据库,这个数据库在本书各个部分都可能用到。在学习将M y S Q L 投入工作时,这个数据库为您提供了参考的例子。我们主要从前面描述过的两种情形来给出例子: ■ 机构的秘书方案。我们需要一些比“机构”更为明确的信息,所以现在就来构造一个,它具有这样一些特性:它由为了研究美国历史这个共同目的而聚集在一起的一群人组成(一时找不到更好的名称,就暂.. |
| 36、MySQL数据库技术(01) |
| 本章介绍MySQL 关系数据库管理系统(R D B M S)及其所采用的结构化查询语言(S Q L)。文中给出了应该掌握的基本术语和概念,并介绍了本书中使用的样例数据库,提供了怎样利 用MySQL 创建数据库并对其进行存取访问的指导。 在此,如果您对数据库不熟悉,可能还不能肯定是否需要一个数据库或是否能够使用一 个数据库。或者,如果您对MySQL 或SQL 一.. |