MySQL的语言结构(即MySQL的SQL语句的使用规则)
参考资料:http://dev.mysql.com/doc/refman/5.1/zh/language-structure.html
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
<!--[if !supportLists]-->1. 文字值:<!--[endif]-->
<!--[if !supportLists]-->1) <!--[endif]-->字符串
用单引号’或双引号”引起来的字符序列;字符串中可以包含转义字符
常见的转义字符:\0,\’,\”…等等
<!--[if !supportLists]-->2) <!--[endif]-->数值
整数、浮点数
<!--[if !supportLists]-->3) <!--[endif]-->16进制值
<!--[if !supportLists]-->4) <!--[endif]-->布尔值
TRUE(true), FALSE(false)
<!--[if !supportLists]-->5) <!--[endif]-->位字段值
<!--[if !supportLists]-->6) <!--[endif]-->NULL
a. NULL表示“没有数据”,可以大写或小写null,NULL值不同于数值的0,布尔型的FALSE,以及字符串型的空字符串
b. SQL的新手很容易对NULL值的概念造成混淆,认为NULL与上面的0,FALSE,以及空字符串’’相同,其实是错误的
如:INSERT INTO my_table(phone) VALUE (NULL)
INSERT INTO my_table(phone) VALUE(‘’)
完全不一样,第一条语句插入NULL表示“电话号码未知”;第二条语句出入’’表示该人没有电话号码
c. 要判断是否为NULL,使用IS NULL或者IS NOT NULL操作符。因为SQL中NULL与任何其他值的比较(即使是NULL)结果永远不会为”真”。包含NULL的表达式结果总是为NULL
d. 搜索列值为NULL的列,不能使用expr=NULL,应该使用expr IS NULL
e. 另外往数据库中插入记录时,如果某一列为NULL,则需要显示地插入NULL或者\N,而不能使用’’。如果使用LOAD DATA INFILE读取数据时,对于NULL的列,数据文件中使用\N
f. 使用DISTINCT,GROUP BY或ORDER BY时,所有NULL值将被视为等同的
使用ORDER BY时,首先显示NULL值(默认ASC),如果DESC降序,则NULL值将最后显示。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
2. MySQL中的专用标识符:
1)数据库、表、索引、列以及别名都算作标识符,需要符合MySQL中标识符的语法
需要了解各类标识符的最大长度和允许的字符。
2)识别符限制条件:
当出现模糊的情况需要指定限制提交
db_name tbl_name col_name。限制符使用. 经常在单个表的自连接的时候使用。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->
3. MySQL中的用户变量和系统变量
4. MySQL语句支持注释风格
5. MySQL中保留字的处理