根据定义,数据库管理系统的目的就是管理数据。即使一条简单的SELECT 1语句也涉及表达式求值以产生一个整型数据值。MySQL中的每个数据值都有类型。例如, 37.4 是一个数,而“ a b c”是一个串。有时,数据的类型是明显的,因为在使用CREATE TABLE 语句时指定了作为表的组成部分定义的每个列的类型,如:
■ 表达式求值规则。MySQL提供了许多可用于表达式的运算符和函数,以便对数据进行检索、显示和处理。表达式求值的规则包括类型转换规则,在一种类型的值用于另一类型的值的情况时需用到类型转换规则。理解何时进行类型转换以及怎样进行转换很重要;有的转换没有意义而且会产生错误值。将串“13”赋给整数列结果为值13,但是将串“a b c” 赋给该列得到0 值,因为“a b c”不是一个数。更坏的是,如果进行比较而不了解值的转换,可能会带来很大的危险,如在打算只对几行进行操作时,可能会更新或删除了表中的所有行。附录B和附录C提供了MySQL列类型、运算和函数的更多信息。
2. (字符)串值 串是诸如“Madison, Wi s c o n s i n”或“patient shows improvement”这样的值。既可用单引号也可用双引号将串值括起来。串中可使用几个转义序列,它们用来表示特殊的字符,见表2 - 1。每个序列以一个反斜杠(“\”)开始,指出临时不同于通常的字符解释。注意NUL 字节与NULL 值不同;NUL 为一个零值字节,而NULL 为没有值。
要在串中包括一个引号,可有如下三种选择:
■ 如果串是用相同的引号括起来的,那么在串中需要引号的地方双写引号即可。如:
■ 如果串是用另外的引号括起来的,则不需要双写相应引号。如:
■ 用反斜杠方式表示;这种方法不去管用来将串括起的是单引号还是双引号。如:
在串的环境中,可用十六进制常数来指定串值。其语法与前面描述的数值值相同,但是每对十六进制的数字都被看作ASCII 代码并转换为字符,其结果用于串。例如, 0 x 6 16 2 6 3作为串时为“ a b c”。
3. 日期和时间值
日期和时间是一些诸如“ 1999 - 0 6 - 17”或“12 : 3 0 : 4 3”这样的值。MySQL还支持日期/时间的组合,如“ 1999-06-17 12:30:43”。要特别注意这样一个事实,即MySQL是按年-月-日的顺序表示日期的。MySQL的初学者通常对这一点很惊奇,其实这是ANSI SQL 的标准格式。可以利用DATE _ F O R M AT( ) 函数以任意形式显示日期值,但是缺省显示格式首先显示年,而且输入值也必须首先给出年。