暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

MySQL数据库中注释方式

原创 柚子身上依 2023-10-25
300

测试内容

MySQL数据库中注释方式验证

测试验证

1.单行注释

使用"#“或者”-- ",-- 后面有空格,否则不代表注释,代表两个减号

mysql> select #1,
    -> 2 ;
+---+
| 2 |
+---+
| 2 |
+---+
1 row in set (0.00 sec)

mysql> select -- 1,
    -> 2;
+---+
| 2 |
+---+
| 2 |
+---+
1 row in set (0.00 sec)

--后面没有加空格,不能进行注释,此处作为了数学表达式,负负得正显示为 1
mysql> select  --1,
    -> 2;
+-----+---+
| --1 | 2 |
+-----+---+
|   1 | 2 |
+-----+---+
1 row in set (0.00 sec)

2.多行注释

/*
多行注释内容
*/

mysql> select /* --1,
   /*> -- 1,
   /*> */
    -> 1;
+---+
| 1 |
+---+
| 1 |
+---+
1 row in set (0.00 sec)

3./!version-number SQL/

这种注释在mysql中叫做内联注释,后面接数据库版本号时,当实际的版本等于或是高于那个字符串,应用程序就会将注释内容解释为SQL,否则就会当做注释来处理。当没有接版本号时,是会执行里面的内容的。


/*!50013 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!50503 SET NAMES utf8mb4 */;
/*!80000 SET SESSION information_schema_stats_expiry=0 */

'/' '*' '!', followed by exactly
第1位:  主版本号(VERSION_MAJOR)
第2,3位:小版本号(VERSION_MINOR)
第4,5位:Patch号(VERSION_PATCH)
示例:
50013 -> 5.0.13
50735 -> 5.7.35
80034 -> 8.0.34

/*!50013 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; 表示当MySQL版本为5.0.13或更高版本时,会执行 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT 命令;低于5.0.13 则此行会当成注释。

举例说明:

mysql> select version();
+-----------+
| version() |
+-----------+
| 8.0.34    |
+-----------+
1 row in set (0.00 sec)

--数据库版本为8.0.34 高于 8.0.23 ,此处执行了invisible 
mysql> CREATE TABLE test1 (a INT, b DATE /*!80023 INVISIBLE */);
Query OK, 0 rows affected (0.08 sec)

mysql> show create table test1 ;
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                                                 |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
| test1 | CREATE TABLE `test1` (
  `a` int DEFAULT NULL,
  `b` date DEFAULT NULL /*!80023 INVISIBLE */
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+--------------------------------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

--数据库版本为8.0.34 低于 8.0.38 ,此处未执行invisible 
mysql> CREATE TABLE test2 (a INT, b DATE /*!80038 INVISIBLE */);
Query OK, 0 rows affected (0.04 sec)

mysql> show create table test2;
+-------+----------------------------------------------------------------------------------------------------------------------------------------+
| Table | Create Table                                                                                                                           |
+-------+----------------------------------------------------------------------------------------------------------------------------------------+
| test2 | CREATE TABLE `test2` (
  `a` int DEFAULT NULL,
  `b` date DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci |
+-------+----------------------------------------------------------------------------------------------------------------------------------------+
1 row in set (0.00 sec)

--表test1的b列为隐藏列,此处插入按照不存在的列处理
mysql> insert into test1 values(1,now());
ERROR 1136 (21S01): Column count doesn't match value count at row 1

mysql> insert into test1 values(1);
Query OK, 1 row affected (0.00 sec)

mysql> insert into test2 values(1,now());
Query OK, 1 row affected, 1 warning (0.01 sec)

--隐藏的列查询不出来
mysql> select * from test1;
+------+
| a    |
+------+
|    1 |
+------+
1 row in set (0.00 sec)

mysql> select * from test2;
+------+------------+
| a    | b          |
+------+------------+
|    1 | 2023-10-12 |
+------+------------+
1 row in set (0.00 sec)
最后修改时间:2023-10-30 15:23:07
「喜欢这篇文章,您的关注和赞赏是给作者最好的鼓励」
关注作者
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文章的来源(墨天轮),文章链接,文章作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论