一、文字值
1.字符串
单引号或双引号
如果SQL服务器模式启用了NSI_QUOTES,可以只用单引号引用字符串,此时用双引号引用的字符串被解释为一个识别符。
介绍字符_charset_name(可选)和COLLATE子句:
[_charset_name]'string'[COLLATE collation_name]
例如:
SELECT _latin1'string';
SELECT _latin1'string' COLLATE latin1_danish_ci;
转义字符:
大小写敏感
例:
2.数值型
UNSIGNED属性和SIGNED属性
整数:1221 0 -32
浮点数:294.42 -32.6809e+10
3.日期类型
DATE:
支持的范围为1000-01-01到9999-12-31,允许使用字符串或数字类型数据为DATE列赋值。
DATETIME[(fsp)]:
日期和时间的组合。支持的范围是1000-01-01 00:00:00到9999-12-31 23:59:59。
可选参数fsp:取值范围是0-6可以指定精确到秒的分位数,默认的是0,指精确到秒。
TIMESTAMP[(fsp)]:
时间戳。范围是1970-01-01 00:00:00到2038-01-19 03:14:07.999999。
TIMESTAMP列用于执行INSERT或UPDATE操作时记录日期和时间。如果你不分配一个值,表中的第一个TIMESTAMP列自动设置为最近操作的日期和时间。也可以通过分配一个NULL值,将TIMESTAMP列设置为当前的日期和时间。
TIME:
时间,范围是-838:59:59到838:59:59。MySQL以HH:MM:SS格式显示TIME值,但允许使用字符串或数字为TIME列分配值。
YEAR[(2|4)]:
两位或四位格式的年。默认是四位格式。在四位格式中,允许的值是1901到2155和0000。在两位格式中,允许的值是70到69,表示从1970年到2069年。MySQL以YYYY格式显示YEAR值,但允许使用字符串或数字为YEAR分配值。
4.十六进制
十六进制数字被转换为一个字符:
十六进制值的默认类型是字符串,确保该值能作为数字处理,使用CAST(...AS UNSIGNED)
HEX()
函数将一个字符串或数字转换为十六进制格式的字符串:
5.布尔值
6.位域类型
BIT[(M)]
M表示每个值的位数,范围从1到64
位域型数值可以方便指定分配给BIT列的值
7.NULL值
二、识别符
识别符可以使用引号引起来也可以不引起来。如果识别符是一个保留字或包含特殊字符,无论何时使用,必须将它引起来。
识别符的引用符是反勾号( ` )
1.限制条件
假定表t1和t2各包含一个列c,使用SELECT语句在t1和t2中搜索c。在这种情况下,c很模糊,因为它在语句中使用的表内不唯一。必须用表名t1.c或t2.c限定,表示指哪个表。
使用同一语句搜索数据库db1中的表t和数据库db2中的表t,必须将那些表中的列指为db1.t.col_name和db2.t.col_name
2.大小写敏感性
大多数Unix中数据库名和表名对大小写敏感,
在Windows中对大小写不敏感;
例外情况是Mac OS X,它基于Unix但使用默认文件系统类型(HFS+),对大小写不敏感
3.关键词和保留字
特定关键字:
SELECT,DELETE 等
三、自定义变量
1.SET语句:
SET @var_name = expr[, @var_name = expr ]...
= 或 := 都可以作为分配符,expr可以为整数、实数、字符串或者NULL值
在HAVING、GROUP BY或者ORDER BY子句中,在SELECT列表中不能使用将值赋值到变量的表达式。
不建议在语句的一个部分为用户变量分配一个值而在同一语句的其它部分又使用该变量。
在执行完SELECT语句后,@a的值在下一语句中才是数字20
2.其它语句
分配符必须为:=
四、注释语句
- #字符开始到行尾
--
开始到行尾,第二个破折号后面至少跟一个空格符- /* */ 允许跨行