《《MySQL中文参考手册》-公开DOC·毕业论文》由会员分享,可在线阅读,更多相关《《MySQL中文参考手册》-公开DOC·毕业论文(79页珍藏版)》请在金锄头文库上搜索。
1、MySQL中文参考手册 第一章, 前一章, 下一章, 最后一章 7 MySQL语言参考7.1 文字:怎么写字符串和数字7.1.1 字符串一个字符串是一个字符序列,由单引号(“”)或双引号(“”)字符(后者只有你不在ANSI模式运行)包围。例如:a stringanother string在字符串内,某个顺序有特殊的意义。这些顺序的每一个以一条反斜线(“”)开始,称为转义字符。MySQL识别下列转义字符: 0 一个ASCII 0 (NUL)字符。 n 一个新行符。 t 一个定位符。 r 一个回车符。 b 一个退格符。 一个单引号(“”)符。 一个双引号(“”)符。 一个反斜线(“”)符。 % 一
2、个“%”符。它用于在正文中搜索“%”的文字实例,否则这里“%”将解释为一个通配符。 _ 一个“_”符。它用于在正文中搜索“_”的文字实例,否则这里“_”将解释为一个通配符。 注意,如果你在某些正文环境中使用“%”或“%_”,这些将返回字符串“%”和“_”而不是“%”和“_”。 有几种方法在一个字符串内包括引号: 一个字符串内用“”加引号的“”可以被写作为“”。 一个字符串内用“”加引号的“”可以被写作为“”。 你可以把一个转义字符(“”)放在引号前面。 一个字符串内用“”加引号的“”不需要特殊对待而且不必被重复或转义。同理,一个字符串内用“”加引号的与“”也不需要特殊对待。 下面显示的SELE
3、CT演示引号和转义如何工作: mysql SELECT hello, hello, hello, hello, hello;+-+-+-+-+-+| hello | hello | hello | hello | hello |+-+-+-+-+-+mysql SELECT hello, hello, hello, hello, hello;+-+-+-+-+-+| hello | hello | hello | hello | hello |+-+-+-+-+-+mysql SELECT ThisnIsnFournlines;+-+| ThisIsFourlines |+-+ 如果你想要把二
4、进制数据插入到一个BLOB列,下列字符必须由转义序列表示: NUL ASCII 0。你应该用0(一个反斜线和一个ASCII 0)表示它。 ASCII 92,反斜线。用表示。 ASCII 39,单引号。用“”表示。 ASCII 34,双引号。用“”表示。 如果你写C代码,你可以使用C API函数mysql_escape_string()来为INSERT语句转义字符。见20.3 C API 函数概述。在 Perl中,你可以使用DBI包中的quote方法变换特殊的字符到正确的转义序列。见20.5.2 DBI接口。 你应该在任何可能包含上述任何特殊字符的字符串上使用转义函数! 7.1.2 数字整数表示
5、为一个数字顺序。浮点数使用“.”作为一个十进制分隔符。这两种类型的数字可以前置“-”表明一个负值。 有效整数的例子: 12210-32有效浮点数的例子: 294.42-32032.6809e+10148.00一个整数可以在浮点上下文使用;它解释为等值的浮点数。 7.1.3 十六进制值MySQL支持十六进制值。在数字上下文,它们表现类似于一个整数(64位精度)。在字符串上下文,它们表现类似于一个二进制字符串,这里每一对十六进制数字被变换为一个字符。 mysql SELECT 0xa+0 - 10mysql select 0x5061756c; - Paul十六进制字符串经常被ODBC使用,给出B
6、LOB列的值。 7.1.4 NULL值NULL值意味着“无数据”并且不同于例如数字类型的0为或字符串类型的空字符串。见18.15 NULL值问题。 当使用文本文件导入或导出格式(LOAD DATA INFILE, SELECT . INTO OUTFILE)时,NULL可以用N表示。见7.16 LOAD DATA INFILE句法。7.1.5 数据库、表、索引、列和别名的命名数据库、表、索引、列和别名的名字都遵守MySQL同样的规则: 注意,从MySQL3.23.6开始规则改变了,此时我们引入了用引用的标识符(数据库、表和列命名)(如果你以ANSI模式运行,也将用于引用标识符)。 标识符 最大
7、长度 允许的字符 数据库64在一个目录名允许的任何字符,除了/. 表64在文件名中允许的任何字符,除了/或. 列64所有字符别名255所有字符注意,除了以上,你在一个标识符中不能有ASCII(0)或ASCII(255)。 注意,如果标识符是一个限制词或包含特殊字符,当你使用它时,你必须总是用引用它: SELECT * from select where select.id 100; 在 MySQL的先前版本,命名规则如下: 一个名字可以包含来自当前字符集的数字字母的字符和“_”和“$”。缺省字符集是ISO-8859-1 Latin1;这可以通过重新编译MySQL来改变。见9.1.1 用于数据和
8、排序的字符集。 一个名字可以以在一个名字中合法的任何字符开始。特别地,一个名字可以以一个数字开始(这不同于许多其他的数据库系统!)。然而,一个名字不能仅仅由数字组成。 你不能在名字中使用“.”,因为它被用来扩充格式,你能用它引用列(见下面)。 建议你不使用象1e这样的名字,因为一个表达式如1e+1是二义性的。它可以解释为表达式1e + 1或数字1e+1。 在MySQL中,你能使用下列表格的任何一种引用列: 列引用 含义 col_name 来自于任意表的列col_name,用于包含该表的一个列的查询中tbl_name.col_name 来自当前的数据库的表tbl_name的列col_namedb
9、_name.tbl_name.col_name 行列col_name从表格tbl_name数据库db_name。这个形式在MySQL3.22或以后版本可用。 column_name 是一个关键词或包含特殊字符的列。 在一条语句的列引用中,你不必指定一个tbl_name或db_name.tbl_name前缀,除非引用会有二义性。例如,假定表t1和t2,每个均包含列c,并且你用一个使用t1和t2的SELECT语句检索c。在这种情况下,c有二义性,因为它在使用表的语句中不是唯一的,因此你必须通过写出t1.c或t2.c来指明你想要哪个表。同样,如果你从数据库db1中一个表t和在数据库db2的一个表t检
10、索,你必须用db1.t.col_name和db2.t.col_name引用这些数据表的列。 句法.tbl_name意味着在当前的数据库中的表tbl_name,该句法为了ODBC的兼容性被接受,因为一些ODBC程序用一个“.”字符作为数据库表名的前缀。 7.1.5.1 名字的大小写敏感性 在MySQL中,数据库和表对应于在那些目录下的目录和文件,因而,内在的操作系统的敏感性决定数据库和表命名的大小写敏感性。这意味着数据库和表名在Unix上是区分大小写的,而在Win32上忽略大小写。 注意:在Win32上,尽管数据库和表名是忽略大小写的,你不应该在同一个查询中使用不同的大小写来引用一个给定的数据库
11、和表。下列查询将不工作,因为它作为my_table和作为MY_TABLE引用一个表:mysql SELECT * FROM my_table WHERE MY_TABLE.col=1;列名在所有情况下都是忽略大小写的。 表的别名是区分大小写的。下列查询将不工作,: 因为它用a和A引用别名:mysql SELECT col_name FROM tbl_name AS a WHERE a.col_name = 1 OR A.col_name = 2;列的别名是忽略大小写的。 7.2 用户变量MySQL支持线程特定的变量,用variablename句法。一个变量名可以由当前字符集的数字字母字符和“_
12、”、“$”和“.”组成。缺省字符集是ISO-8859-1 Latin1;这可以通过重新编译MySQL改变。见9.1.1 用于数据和排序的字符集。 变量不必被初始化。缺省地,他们包含NULL并能存储整数、实数或一个字符串值。当线程退出时,对于一个线程的所有变量自动地被释放。 你可以用SET句法设置一个变量: SET variable= integer expression | real expression | string expression ,variable= .你也可以用variable:=expr句法在一个表达式中设置一个变量: select t1:=(t2:=1)+t3:=4,t1
13、,t2,t3;+-+-+-+-+| t1:=(t2:=1)+t3:=4 | t1 | t2 | t3 |+-+-+-+-+| 5 | 5 | 1 | 4 |+-+-+-+-+(这里,我们不得不使用:=句法,因为=是为比较保留的)7.3 列类型MySQL支持大量的列类型,它可以被分为3类:数字类型、日期和时间类型以及字符串(字符)类型。本节首先给出可用类型的一个概述,并且总结每个列类型的存储需求,然后提供每个类中的类型性质的更详细的描述。概述有意简化,更详细的说明应该考虑到有关特定列类型的附加信息,例如你能为其指定值的允许格式。 由MySQL支持的列类型列在下面。下列代码字母用于描述中: M 指出最大的显示尺寸。最大的合法的显示尺寸是 255 。 D 适用于浮点类型并且指出跟随在十进制小数点后的数码的数量。最大可能的值是30,但是应该不大于M-2。 方括号(“”和“”)指出可选的类型修饰符的部分。 注意,如果你指定一个了为ZEROFILL,MySQL将为该列自动地增加UNSIGNED属性。 TINYINT(M) UNSIGNED ZEROFILL 一个很小的整数。有符号的范围是-128到127,无符号的范围是0到255。 SMALLINT(M) U