第10节 Mysql基础课程
(一)文字值
1.字符串
字符串指用单引号(‘'’)或双引号(‘"’)引用起来的字符序列。
如: ‘a string’ “another string”
若SQL调用了NSI_QUOTES,可以使用单引号字符串,双引号字符串这时候被解释为一个识别符。
字符串可以有一个可选的介绍字符 _charset_name 和COLLATE子句:
[_charse_name]'string' [COLLATE collation_name]
2.数值型
整数,浮点数
3.日期类型
4.十六进制
MySQL支持十六进制。在数值文本中,十六进制数如同整数(64位精度)。在字符串文本中,如同二进制字符串,每对十六进制数字被转换为一个字符:
mysql> SELECT x'4D7953514C';
-> 'MySQL'
mysql> SELECT 0xa+0;
-> 10
mysql> SELECT 0x5061756c;
-> 'Paul'
可以用HEX()函数将一个字符串或数字转换为十六进制格式的字符串:
mysql> SELECT HEX('cat');
-> '636174'
mysql> SELECT 0x636174;
-> 'cat'
5.布尔型
常量TRUE =1 ,FALSE=0
mysql> SELECT TRUE,true,FALSE,false;
-> 1,1,0,0
6.位域(file-field)类型
可以使用b'value'符号表达位域型。value是一个用0和1写成的二进制值。
位域型数值可以方便指定分配给BIT列的值:
mysql> CREATE TABLE t (b BIT(8));
mysql> INSERT INTO t SET b = b'11111111';
mysql> INSERT INTO t SET b = b'1010';
7.NULL值
NULL值表示“没有数据”。NULL可以任意大小写。
请注意NULL值不同于数字类型的0或字符串类型的空字符串。
对于用LOAD DATA INFILE或SELECT ...INTO OUTFILE执行的文本文件导入或导出操作,NULL用序列\N表示。
(二)识别符
数据库、表、索引、列和别名是识别符。
数据库、表和列名不应以空格结尾。
识别符的引用符是反勾号(‘`’):
mysql> SELECT * FROM select WHERE select.id > 100;
如果SQL服务器模式包括ANSI_QUOTES模式选项,还可以用双引号将识别符引起来:
mysql> CREATE TABLE "test" (col INT);
mysql> SET sql_mode='ANSI_QUOTES';
mysql> CREATE TABLE "test" (col INT);
请尝试比较上面语句中两种创建表形式的输出结果。
如果你引用识别符,可以在识别符内包含识别符引用符。如果识别符内包括的字符与引用识别符的字符相同,则需要用双字符。下面的语句创建一个名为a`b包含列c"d的表:
mysql> CREATE TABLE a``b (c"d INT);
建议不要使用XeX模式的名,例如1e或2e2,因为与类似1e+1这样的数字混淆。
1.识别符限制条件
2,。识别符的大小写与敏感性
3,关键词和保留字
(三)用户自定义变量
可以在用户自己定义一个变量中储存一个值然后在后面引用它。这个值就从一个语句传递到另一个语句。
设置用户变量的一个途径是执行SET语句:
SET @var_name = expr [, @var_name = expr] ...
对于SET语句,可以使用=或:=作为分配符,分配给每个变量的expr可以为整数、实数、字符串或者NULL值。
# 尝试输入以下语句观察结果
mysql> SET @t1=0, @t2=0, @t3=0;
mysql> SELECT @t1:=(@t2:=1)+@t3:=4,@t1,@t2,@t3;
(四)注释
以#字符开始到行尾。
以--序列开始到行尾。请注意--(双破折号)注释风格要求第2个破折号后面至少跟一个空格符(例如空格、tab、换行符等等)。该语法与标准SQL注释语法稍有不同。
以/序列开始到/序列结束。结束序列不一定在同一行中,因此该语句允许注释跨越多行。
mysql> SELECT 1+1; # This comment continues to the end of line
mysql> SELECT 1+1; -- This comment continues to the end of line
mysql> SELECT 1 /* this is an in-line comment */ + 1;