panshiqu的专栏

给自己维护的项目打个广告:欢迎关注《休闲益智游戏》微信公众号

MySQL 5.7 Reference Manual Chapter 10 Language Structure 参考手册第十章语言结构内容总结

字符串自动连接 'a string' 等价于 'a' ' ' 'string'

几种字符串中包含引号的方式
* SELECT 'single quote ''' 输出 single quote '
* SELECT "double quote """ 输出 double quote "
* SELECT "single and double quote \' \"" 输出 single and double quote ' "
* 单引号中可直接使用双引号,不需要做任何处理,相反也成立

DATE
'YYYY-MM-DD' or 'YY-MM-DD' or 'YYYYMMDD' or 'YYMMDD' or YYYYMMDD or YYMMDD

DATETIME and TIMESTAMP
'YYYY-MM-DD HH:MM:SS' or 'YY-MM-DD HH:MM:SS' or 'YYYYMMDDHHMMSS' or 'YYMMDDHHMMSS' or YYYYMMDDHHMMSS or YYMMDDHHMMSS

两数字表示年 MySQL 如下解析
range 70-99 are converted to 1970-1999
range 00-69 are converted to 2000-2069

如果使用分割符 month, day, hour, minute, second 前零可以省略
'2015-06-09 01:02:03' same '2015-6-9 1:2:3'

十六进制表示,X'val' or 0xval,第一种表示方法 val 中必须有 0,解决方法就是数字以 0 开头

X'01AF'
X'01af'
x'01AF'
x'01af'
0x01AF
0x01af
mysql> SET @v1 = X'41';
mysql> SET @v2 = X'41'+0;
mysql> SET @v3 = CAST(X'41' AS UNSIGNED);
mysql> SELECT @v1, @v2, @v3;
+------+------+------+
| @v1  | @v2  | @v3  |
+------+------+------+
| A    |   65 |   65 |
+------+------+------+

X'' 代表零长度十六进制字符串或数字零

十六进制字符串常被用来填充 BLOB 列

转换数字或字符串至十六进制字符串
SELECT HEX('cat');

比特表示,b'val' or 0bval

b'01'
B'01'
0b01
mysql> SET @v1 = b'1100001';
mysql> SET @v2 = b'1100001'+0;
mysql> SET @v3 = CAST(b'1100001' AS UNSIGNED);
mysql> SELECT @v1, @v2, @v3;
+------+------+------+
| @v1  | @v2  | @v3  |
+------+------+------+
| a    |   97 |   97 |
+------+------+------+

b'' 代表零长度二进制字符串或数字零

二进制字符串常被用来填充 BIT 列

比特可应用如下场景,存储各种各样开关,最高支持 64 位

mysql> CREATE TABLE t (b BIT(8));
mysql> INSERT INTO t SET b = b'11111111';
mysql> SELECT b+0, BIN(b), OCT(b), HEX(b) FROM t;
+------+----------+--------+--------+
| b+0  | BIN(b)   | OCT(b) | HEX(b) |
+------+----------+--------+--------+
|  255 | 11111111 | 377    | FF     |
+------+----------+--------+--------+

布尔值

mysql> SELECT TRUE, true, FALSE, false;
+------+------+-------+-------+
| TRUE | TRUE | FALSE | FALSE |
+------+------+-------+-------+
|    1 |    1 |     0 |     0 |
+------+------+-------+-------+

空值 NULL 不区分大小写,同义词 \N 区分大小写

避免数据传输问题(大小写表名)
* Use lower_case_table_names=1 on all systems.
* Use lower_case_table_names=0 on Unix and lower_case_table_names=2 on Windows.

在 Unix 中你想设置 lower_case_table_names = 1,必须在重启前转换旧的数据库名和表名
重命名表
RENAME TABLE T1 TO t1;
整个数据库
Use mysqldump to dump each database:
mysqldump --databases db1 > db1.sql
Use DROP DATABASE to drop each database.
Stop the server, set lower_case_table_names, and restart the server.
Reload the dump file for each database.
mysql < db1.sql

用户自定义变量,变量会自动释放在当客户端会话结束的时候
不区分大小写,最大长度 64 字符,SET 语法中 = 等价 :=,若是不使用 SET,只能用 := 声明变量
SET @var_name = expr [, @var_name = expr] ...

mysql> SET @t1=1, @t2=2, @t3:=4;
mysql> SELECT @t1, @t2, @t3, @t4 := @t1+@t2+@t3;
+------+------+------+--------------------+
| @t1  | @t2  | @t3  | @t4 := @t1+@t2+@t3 |
+------+------+------+--------------------+
|    1 |    2 |    4 |                  7 |
+------+------+------+--------------------+

用户变量被 Selected 在结果集,它以 String 类型返回给客户端
如果你引用一个未被初始化的变量,它的值是 NULL 类型是 String

不要声明变量的时候直接使用它
SET @a = @a + 1;

用户变量被用来存储数据,它们不能直接用在 SQL 语法中当成标识符或标识符的一部分,例如表名或数据库名,即便变量被引号括起来

SELECT c1 FROM t;
+----+
| c1 |
+----+
|  0 |
+----+
|  1 |
+----+
SET @col = "c1";
SELECT @col FROM t;
+------+
| @col |
+------+
| c1   |
+------+
SELECT `@col` FROM t;
ERROR 1054 (42S22): Unknown column '@col' in 'field list'

解决办法就是构造字符串通过 prepared statement 稍后执行

SET @c = "c1";
SET @s = CONCAT("SELECT ", @c, " FROM t");
PREPARE stmt FROM @s;
Statement prepared
EXECUTE stmt;
+----+
| c1 |
+----+
|  0 |
+----+
|  1 |
+----+
DEALLOCATE PREPARE stmt;

支持三种注释方式
* From a # character to the end of the line.
* From a – sequence to the end of the line.
* From a /* sequence to the following */ sequence, as in the C programming language.
– 注释方式,第二个破折号后面至少一个 whitespace 或 control character,例如 space 和 tab
不支持嵌套注释

====本文内容已完,宣传我的项目====
欢迎关注《休闲益智游戏》微信服务号
谢谢

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/panshiqu/article/details/53116535
个人分类: MYSQL
上一篇MySQL 5.7 Reference Manual Chapter 4 Tutorial 参考手册第四章教程内容总结
下一篇MySQL 5.7 Use The JSON Data Type(MySQL 使用 JSON 数据类型)
想对作者说点什么? 我来说一句

MySQL 5.7 Reference Manual

2015年02月25日 24.76MB 下载

Mysql 5.7最新参考手册

2014年08月03日 25.21MB 下载

STM32F10xxx参考手册(英文).pdf

2014年03月23日 8.98MB 下载

mysql reference manual 5.6

2013年11月17日 12.67MB 下载

STM32 Reference manual(RM0008)

2009年08月06日 8.14MB 下载

没有更多推荐了,返回首页

关闭
关闭