楼主: keaide

[参考文档] MySQL数据库技术

[复制链接]
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
31#
 楼主| 发表于 2006-5-28 20:00 | 只看该作者
1.5 与mysql 交互的技巧
    本节介绍怎样更有效地且键入工作量较小地与mysql 客户机程序进行交互。介绍怎样更简单地与服务器连接,以及怎样不用每次都从头开始键入查询。
    1.5.1 简化连接过程
    在激活mysql 时,有可能需要指定诸如主机名、用户名或口令这样的连接参数。运行一个程序需要做很多输入工作,这很快就会让人厌烦。有几种方法可最小化所做的键入工作,使连接更为容易,它们分别为:
    ■ 利用选项文件存储连接参数。
    ■ 利用外壳程序的命令历史重复命令。
    ■ 利用外壳程序的别名或脚本定义mysql 命令行快捷键。
    1. 利用选项文件
    自版本3.22 以来,MySQL 允许在一个选项文件中存储连接参数。然后在运行mysql 时就不用重复键入这些参数了;仅当您曾经在命令行上键入过它们时可以使用。这些参数也可以为其他MySQL 客户机所用,如为mysqlimport 所用。这也表示在使用这些程序时,选项文件减少了键入工作。为了利用选项文件方法指定连接参数,可建立一个名为~ / . m y.cnf (即主目录中的一个名为. m y.cnf 的文件)。选项文件是一个无格式的文本文件,因此可用任何文本编辑器来创建它。文件的内容所下所示:

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
32#
 楼主| 发表于 2006-5-28 20:00 | 只看该作者
[client] 行标记客户机选项组的开始;它后跟的所有行都是为MySQL 客户机程序获得选项值准备的,这些行一直沿续到文件的结尾或另一不同的参数组的开始。在连接到服务器时,用指定的主机名、用户名和口令替换s e r v e r h o s t、yourname 和y o u r p a s s。对于笔者来说,. m y.cnf 如下所示:

   只有[client] 行是必须的。定义参数值的行都是可选的;可以仅指定那些所需要的参数。例如,如果您的MySQL 用户名与UNIX 的登录名相同,则不需要包括user 行。在创建了. m y.cnf 文件后,设置其访问方式为某个限定值以保证别人不能读取它:

    在Windows 下,选项文件的内容是相同的,但其名称不同( c : \ m y. c n f),而且不调用chmod 命令。因为选项文件在版本3.22 前未加到M y S Q L,所以更早的版本不能使用它们。特别是在Windows 下,您不能与共享MySQL 分发包一起得到的客户机使用选项文件,因为它是基于MySQL 3.21 的。选项文件在注册过的MySQL 的Windows 版本下工作得很好,否则可以从MySQL Web 站点取得更新的支持选项文件的客户机。关于选项文件的详细内容可参阅附录E“MySQL 程序参考”。
    2. 利用外壳程序的命令历史诸如c s h、tcsh 和bash 这样的外壳程序会在一个历史列表中记下您的命令,并允许重复该列表中的命令。如果采用的是这样的外壳程序,其历史列表可帮助免除完整命令的键入。例如,如果最近调用了m y s q l,可按如下命令再次执行它:% !my 其中“!”告诉外壳程序搜索整个命令历史找到最近以“ m y”开头的命令,并像您打入的一样发布它。有的外壳程序还允许利用上箭头和下箭头键(或许是Ctrl-P 和C t r l - N)在历史列表中上下移动。可用这种方法选择想要的命令,然后按Enter 执行它。tcsh 和bash 有这种功能,而其他外壳程序也可能有。可参阅相应的外壳程序以找到更多使用历史列表的内容。

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
33#
 楼主| 发表于 2006-5-28 20:00 | 只看该作者
3. 利用外壳程序的别名或脚本如果使用的外壳程序提供别名功能,那么可以设置允许通过键入简短名调用长命令的命令快捷键。例如,在csh 或tcsh 中,可利用alias 命令设置名为samp_db 的别名,如下所示:

    而bash 中的语法稍有不同:

   可以定义一个别名使这两个命令等价:

    显然,第一个比第二个更好键入。为了使这些别名在每次登录时都起作用,可将在外壳程序设置文件中放入一个alias 命令(如,csh 放入. c s h r c,而bash 放入. b a s h _ p r o f i l e)。快捷键的其他形式是建立利用适当的选项执行mysql 的外壳程序脚本。在UNIX 中,等价于samp_db 别名的脚本文件如下所示:

    如果笔者命名此脚本为samp_db 并使其可执行(用chmod +x samp_db),那么可以键入samp_db 运行mysql 并连接到笔者的数据库中。在Windows 下,可用批命令文件来完成相同的工作。命名文件s a m p _ d b . b a t,并在其中放入如下的行:

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
34#
 楼主| 发表于 2006-5-28 20:01 | 只看该作者
此批命令文件可通过在DOS 控制台提示符下键入samp_db 来执行,也可以双击它的Windows 图标来执行。如果访问多个数据库或连接到多个主机,则可以定义几个别名或脚本,每一个都用不同的选项调用m y s q l。
    1.5.2 以较少的键入发布查询
    mysql 是一个与数据库进行交互的极为有用的程序,但是其界面最适合于简短的、单行的查询。当然, mysql 自身并不关心某个查询是否分成多行,但是长的查询很不好键入。输入一条查询也不是很有趣的事,即使是一条较短的查询也是如此,除非发现有错误才愿意重新键入它。
    有几种可用来避免不必要的键入或重新键入的技巧:
    ■ 利用mysql 的输入行编辑功能。
    ■ 利用拷贝和粘贴。
    ■ 以批方式运行m y s q l。
    ■ 利用现有数据来创建新记录以避免键入I N S E RT 语句。
    1. 利用mysql 的输入行编辑器
    mysql 具有内建的GNU Readline 库,允许对输入行进行编辑。可以对当前录入的行进行处理,或调出以前输入的行并重新执行它们(原样执行或做进一步的修改后执行)。在录入一行并发现错误时,这是非常方便的;您可以在按Enter 键前,在行内退格并进行修正。如果录入了一个有错的查询,那么可以调用该查询并对其进行编辑以解决问题,然后再重新提交它。(如果您在一行上键入了整个查询,这是最容易的方法。)表1-4 中列出了一些非常有用的编辑序列,除了此表中给出的以外,还有许多输入编辑命令。利用因特网搜索引擎,应该能够找到R e a d l i n e手册的联机版本。此手册也包含在Readline 分发包中,可在h t t p : / / w w w.gnu. org/ 的GN U Web 站点得到。

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
35#
 楼主| 发表于 2006-5-28 20:02 | 只看该作者
根据定义,数据库管理系统的目的就是管理数据。即使一条简单的SELECT 1 语句也涉及表达式求值以产生一个整型数据值。MySQL 中的每个数据值都有类型。例如, 37.4 是一个数,而“ a b c”是一个串。有时,数据的类型是明显的,因为在使用C R E ATE TABLE 语句时指定了作为表的组成部分定义的每个列的类型,如:

    而有时,数据类型是不明确的,如在一个表达式中引用直接值时,将值传送给一个函数,或使用从该函数返回的值,如:

   I N S E RT 语句完成下列操作,这些操作全都涉及数据类型:
   ■ 将整数值14 赋给整数列i n t _ c o l。
   ■ 将串值“ a”和“b”传递给函数C O N C AT( )。C O N C AT( ) 返回串值“a b”,这个串值被赋予串列s t r _ c o l。
   ■ 将整数值1 9 9 9 0 115 赋给日期列d a t e _ c o l。而这是不匹配的,因此, MySQL 将自动进行数据类型转换。要有效地利用M y S Q L,必须理解其怎样处理数据。本章描述了MySQL 能够处理的数据类型,并讨论了在处理这些数据类型时所出现的问题,主要内容如下:

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
36#
 楼主| 发表于 2006-5-28 20:02 | 只看该作者
■ 通用数据类型,包括NULL 值。
   ■ 特殊数据类型,以及描述每种列类型的属性。有些列类型是相当常见的,如CHAR 串类型。而有的如A U TO_INCREMENT 整型和T I M E S TAMP 日期类型,其性能很特殊,应该加以理解以免出错。
   ■ 恰当地选择表的列类型。在创建表时,重要的是要了解怎样为自己的目的选择最好的类型,以及在几种类型都可以用于想要存储的值时选择一种类型。
   ■ 表达式求值规则。MySQL 提供了许多可用于表达式的运算符和函数,以便对数据进行检索、显示和处理。表达式求值的规则包括类型转换规则,在一种类型的值用于另一类型的值的情况时需用到类型转换规则。理解何时进行类型转换以及怎样进行转换很重要;有的转换没有意义而且会产生错误值。将串“1 3”赋给整数列结果为值1 3,但是将串“a b c” 赋给该列得到0 值,因为“a b c”不是一个数。更坏的是,如果进行比较而不了解值的转换,可能会带来很大的危险,如在打算只对几行进行操作时,可能会更新或删除了表中的所有行。附录B和附录C提供了MySQL 列类型、运算和函数的更多信息。
   2.1 MySQL 数据类型
   MySQL 有几种数据类型,下面分别进行介绍。
   1. 数值值
   数值是诸如48 或193.62 这样的值。MySQL 支持说明为整数(无小数部分)或浮点数(有小数部分)的值。整数可按十进制形式或十六进制形式表示。整数由数字序列组成。以十六进制形式表示的整数由“ 0 x”后跟一个或多个十六进制数字(” 0”到“9”及“a”到“f”)组成。例如, 0x0a 为十进制的1 0,而0 x ffff 为十进制的6 5 5 3 5。十六进制数字不区分大小写,但其前缀“ 0 x”不能为“ 0 X”。即0x0a 和0x0A 都是合法的,但0X0a 和0X0A 不是合法的。浮点数由一个阿拉伯数字序列、一个小数点和另一个阿拉伯数字序列组成。两个阿拉伯数字序列可以分别为空,但不能同时为空。MySQL 支持科学表示法。科学表示法由整数或浮点数后跟“ e”或“E”、一个符号(“+”或“-”)和一个整数指数来表示。1.34E+12 和43.27e-1 都是合法的科学表示法表示的数。而1.34E12 不是合法的,因为指数前的符号未给出。指数前的“ e”也是一个合法的十六进制数字,因此有可能会弄错。数值前可放一个负号“ -”以表示负值。

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
37#
 楼主| 发表于 2006-5-28 20:02 | 只看该作者
2. (字符)串值 串是诸如“Madison, Wi s c o n s i n”或“patient shows improvement”这样的值。既可用单引号也可用双引号将串值括起来。串中可使用几个转义序列,它们用来表示特殊的字符,见表2 - 1。每个序列以一个反斜杠(“\”)开始,指出临时不同于通常的字符解释。注意NUL 字节与NULL 值不同;NUL 为一个零值字节,而NULL 为没有值。

    要在串中包括一个引号,可有如下三种选择:
    ■ 如果串是用相同的引号括起来的,那么在串中需要引号的地方双写引号即可。如:

    ■ 如果串是用另外的引号括起来的,则不需要双写相应引号。如:

    ■ 用反斜杠方式表示;这种方法不去管用来将串括起的是单引号还是双引号。如:

使用道具 举报

回复
论坛徽章:
456
ITPUB年度最佳版主
日期:2011-12-28 15:24:18马上有对象
日期:2014-02-19 11:55:14马上有钱
日期:2014-02-19 11:55:14马上有房
日期:2014-02-19 11:55:14马上有车
日期:2014-02-19 11:55:14ITPUB年度最佳版主
日期:2014-02-19 10:05:27优秀写手
日期:2013-12-18 09:29:09ITPUB社区千里马徽章
日期:2013-06-09 10:15:34ITPUB年度最佳版主
日期:2013-01-30 17:30:25版主9段
日期:2012-07-03 02:21:03
38#
 楼主| 发表于 2006-5-28 20:02 | 只看该作者
在串的环境中,可用十六进制常数来指定串值。其语法与前面描述的数值值相同,但是每对十六进制的数字都被看作ASCII 代码并转换为字符,其结果用于串。例如, 0 x 6 1 6 2 6 3作为串时为“ a b c”。
    3. 日期和时间值
    日期和时间是一些诸如“ 1 9 9 9 - 0 6 - 1 7”或“1 2 : 3 0 : 4 3”这样的值。MySQL 还支持日期/时间的组合,如“ 1999-06-17 12:30:43”。要特别注意这样一个事实,即MySQL 是按年-月-日的顺序表示日期的。MySQL 的初学者通常对这一点很惊奇,其实这是ANSI SQL 的标准格式。可以利用D AT E _ F O R M AT( ) 函数以任意形式显示日期值,但是缺省显示格式首先显示年,而且输入值也必须首先给出年。
    4. NULL 值
    NULL 是一种“无类型”的值。它过去惯常表示的意思是“无值”、“未知值”、“丢失的值”、“溢出值”以及“没有上述值”等。可将NULL 值插入表中、从表中检索它们,测试某个值是否是N U L L,但不能对NULL 值进行算术运算(如果对NULL 进行算术运算,其结果为N U L L)。

使用道具 举报

回复
论坛徽章:
7
六级虎吧徽章
日期:2009-03-30 21:56:32
39#
发表于 2006-7-14 19:07 | 只看该作者
继续支持一下!

使用道具 举报

回复
论坛徽章:
0
40#
发表于 2006-8-1 11:46 | 只看该作者
先顶一下

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表