———————————————————目录———————————————————
- 字面量
- 数据库对象
- 关键字和保留字
- 用户自定义变量
- 表达式
- 查询属性
- 注释
————————————————————————————————————————-
字面量
- String Literals
- Numeric Literals
- Date and Time Literals
- Hexadecimal Literals
- Bit-Value Literals
- Boolean Literals
- NULL Values
—————————————————————————————————————–
String Literals(字符串字面量)
1-1 字符串是由字节或字符组成的序列,用单引号(‘)或双引号(“)字符括起来。例子:
'a string'
"another string"
1-2 相邻的引号字符串被连接成一个字符串。下面这几行是等价的:
'a string'
'a' ' ' 'string'
1-3 如果启用了ANSI_QUOTES SQL模式,字符串字面值只能在单引号内引号,因为双引号内的字符串被解释为标识符。
1-4 二进制字符串是由字节组成的字符串。每个二进制字符串都有一个名为binary的字符集和排序规则。非二进制字符串是一串字符。它具有二进制以外的字符集和与该字符集兼容的排序规则。对于这两种类型的字符串,比较都是基于字符串单元的数值。对于二进制字符串,单位是字节;比较使用数字字节值。对于非二进制字符串,单位是字符,一些字符集支持多字节字符;比较使用数字字符代码值。字符代码排序是字符串排序的一个函数。
注意:在mysql客户端中,二进制字符串使用十六进制表示法显示,这取决于——binary-as-hex的值。
1-5 一个字符串字元可以有一个可选的字符集导入器和COLLATE子句,将其指定为一个使用特定字符集和COLLATE的字符串
[_charset_name]'string' [COLLATE collation_name]
//example
SELECT _latin1'string';
SELECT _binary'string';
SELECT _utf8'string' COLLATE utf8_danish_ci;
1-6 您可以使用N’literal'(或N’literal’)在国家字符集中创建字符串。这些语句是等价的:
SELECT N'some text';
SELECT n'some text';
SELECT _utf8'some text';
1-7 在字符串中,某些序列具有特殊的意义,除非启用了NO_BACKSLASH_ESCAPES SQL模式。每个序列都以反斜杠(\)开头,称为转义字符。例如,\x就是x,这些序列是区分大小写的。例如,\b被解释为退格,但\B被解释为B。转义处理是根据由character_set_connection系统变量指示的字符集来完成的。
1-8 \%和\_序列用于在模式匹配上下文中搜索%和_的字面量实例,否则它们将被解释为通配符。在字符串中包含引号字符有几种方法:
用'引号括起来的字符串中的'可以写成"。
用"引用的字符串中的"可以写成""。
在引号字符前加转义字符(\)。
用"引用的字符串中的'不需要特殊处理,也不需要双引号或转义。同样地,'引号中的'不需要特殊处理。
下面的SELECT语句演示了引号和转义的工作原理:
mysql> SELECT 'hello', '"hello"', '""hello""', 'hel''lo', '\'hello';
+-------+---------+-----------+--------+--------+
| hello | "hello" | ""hello"" | hel'lo | 'hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT "hello", "'hello'", "''hello''", "hel""lo", "\"hello";
+-------+---------+-----------+--------+--------+
| hello | 'hello' | ''hello'' | hel"lo | "hello |
+-------+---------+-----------+--------+--------+
mysql> SELECT 'This\nIs\nFour\nLines';
+--------------------+
| This
Is
Four
Lines |
+--------------------+
mysql> SELECT 'disappearing\ backslash';
+------------------------+
| disappearing backslash |
+------------------------+
要将二进制数据插入字符串列(比如BLOB列),应该通过转义序列表示某些字符。反斜杠(\)和用来引用字符串的引号字符必须转义。在某些客户端环境中,可能还需要转义NUL或Control+Z。mysql客户端截断包含NUL字符的引号,如果不转义,控制+Z在Windows上可以作为文件结束符。
1-9 在编写应用程序时,任何可能包含这些特殊字符的字符串都必须正确转义,才能在发送到MySQL服务器的SQL语句中作为数据值使用。你可以通过两种方式做到这一点:
---使用转义特殊字符的函数处理该字符串。在C程序中,你可以使用mysql_real_escape_string_quote()
C API函数来转义字符。看到mysql_real_escape_string_quote()。在构造其他SQL语句的SQL语句中,
可以使用QUOTE()函数。Perl DBI接口提供了quote方法来将特殊字符转换为适当的转义序列。
---作为显式转义特殊字符的替代方法,许多MySQL api提供了占位符功能,允许您将特殊标记插入到
语句字符串中,然后在发出语句时将数据值绑定到这些标记中。在本例中,API负责为您转义值中的
特殊字符。
Numeric Literals(数值类型)
2-1 数字字面值包括精确值(整数和DECIMAL)字面值和近似值(浮点)字面值。整数被表示为一个数字序列。数字可能包括。作为十进制分隔符 . 数字前可加-或+,分别表示负值或正值。在科学记数法中用尾数和指数表示的数是近似值数。
精确值数字字面值有整数部分或小数部分,或两者都有。他们有正负之分。例如:1,2,3.4,-5,-6.78,+9.10。
Date and Time Literals
Hexadecimal Literals
Bit-Value Literals
Boolean Literals
NULL Values
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://yundeesoft.com/5930.html