MySQL的SQL语句 - 数据操作语句(16)- VALUES 语句
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了MySQL的SQL语句 - 数据操作语句(16)- VALUES 语句,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含4392字,纯文字阅读大概需要7分钟。
内容图文
![MySQL的SQL语句 - 数据操作语句(16)- VALUES 语句](/upload/InfoBanner/zyjiaocheng/869/48f023ec254242c09ca296f56ee3eda2.jpg)
VALUES 语句
VALUES 是 MySQL 8.0.19 中引入的一个 DML 语句,它以表的形式返回一个或多个行的集合。换句话说,它是一个表值构造器,也可以作为独立的 SQL 语句来运行。
1. VALUES row_constructor_list [ORDER BY column_designator] [LIMIT BY number]
2.
3. row_constructor_list:
4. ROW(value_list)[, ROW(value_list)][, ...]
5.
6. value_list:
7. value[, value][, ...]
8.
9. column_designator:
10. column_index
VALUES 语句由 VALUES 关键字后跟一个或多个行构造器的列表组成,用逗号分隔。行构造器由 ROW() 子句以及包含在括号中的一个或多个标量值的值列表组成。其中的值可以是 MySQL 任意类型的字面量,或者是可以解析为标量值的表达式。
ROW() 不能为空(但提供的每个标量值都可以为 NULL)。同一 VALUES 语句中的每个 ROW() 在其值列表中的值数量必须相同。
VALUES 不支持 DEFAULT 关键字,会引发语法错误,除非在 INSERT 语句中使用该关键字提供值。
VALUES 的输出是一个表:
1. mysql> VALUES ROW(1,-2,3), ROW(5,7,9), ROW(4,6,8);
2. +----------+----------+----------+
3. | column_0 | column_1 | column_2 |
4. +----------+----------+----------+
5. | 1 | -2 | 3 |
6. | 5 | 7 | 9 |
7. | 4 | 6 | 8 |
8. +----------+----------+----------+
9. 3 rows in set (0.00 sec)
从 VALUES 输出的表的列具有隐式命名 column_0、column_1、column_2,依此类推,始终以 0 开头。此事实可用于使用可选的 ORDER BY 子句按列对行排序,方法与此子句与 SELECT 语句一起使用的方式相同,如下所示:
1. mysql> VALUES ROW(1,-2,3), ROW(5,7,9), ROW(4,6,8) ORDER BY column_1;
2. +----------+----------+----------+
3. | column_0 | column_1 | column_2 |
4. +----------+----------+----------+
5. | 1 | -2 | 3 |
6. | 4 | 6 | 8 |
7. | 5 | 7 | 9 |
8. +----------+----------+----------+
9. 3 rows in set (0.00 sec)
VALUES 语句还支持限制输出行数的 LIMIT 子句。
VALUES 语句对于列值的数据类型是宽容的;可以在同一列中混合类型,如下所示:
1. mysql> VALUES ROW("q", 42, '2019-12-18'),
2. -> ROW(23, "abc", 98.6),
3. -> ROW(27.0002, "Mary Smith", '{"a": 10, "b": 25}');
4. +----------+------------+--------------------+
5. | column_0 | column_1 | column_2 |
6. +----------+------------+--------------------+
7. | q | 42 | 2019-12-18 |
8. | 23 | abc | 98.6 |
9. | 27.0002 | Mary Smith | {"a": 10, "b": 25} |
10. +----------+------------+--------------------+
11. 3 rows in set (0.00 sec)
重要
具有一个或多个 ROW() 实例的 VALUES 充当表值构造器;尽管它可以用于在 INSERT 或 REPLACE 语句中提供值,但不要将其与同样用于此目的的 VALUES 关键字混淆。也不应该将它与在 INSERT ... ON DUPLICATE KEY UPDATE 中引用列值的 VALUES() 函数混淆。
还应该记住 ROW() 是一个行值构造器,而 VALUES ROW() 是一个表值构造器;两者不能互换使用。
VALUES 可用于许多可以使用 SELECT 的情况,包括下面列出的:
● 使用 UNION,如下所示:
1. mysql> SELECT 1,2 UNION SELECT 10,15;
2. +----+----+
3. | 1 | 2 |
4. +----+----+
5. | 1 | 2 |
6. | 10 | 15 |
7. +----+----+
8. 2 rows in set (0.00 sec)
9.
10. mysql> VALUES ROW(1,2) UNION VALUES ROW(10,15);
11. +----------+----------+
12. | column_0 | column_1 |
13. +----------+----------+
14. | 1 | 2 |
15. | 10 | 15 |
16. +----------+----------+
17. 2 rows in set (0.00 sec)
也可以用这种方式将具有多行的构造表联合在一起,如下所示:
1. mysql> VALUES ROW(1,2), ROW(3,4), ROW(5,6)
2. > UNION VALUES ROW(10,15),ROW(20,25);
3. +----------+----------+
4. | column_0 | column_1 |
5. +----------+----------+
6. | 1 | 2 |
7. | 3 | 4 |
8. | 5 | 6 |
9. | 10 | 15 |
10. | 20 | 25 |
11. +----------+----------+
12. 5 rows in set (0.00 sec)
在这种情况下,也可以(通常最好)完全省略 UNION,并使用单个 VALUES 语句,如下所示:
1. mysql> VALUES ROW(1,2), ROW(3,4), ROW(5,6), ROW(10,15), ROW(20,25);
2. +----------+----------+
3. | column_0 | column_1 |
4. +----------+----------+
5. | 1 | 2 |
6. | 3 | 4 |
7. | 5 | 6 |
8. | 10 | 15 |
9. | 20 | 25 |
10. +----------+----------+
VALUES 也可以与 SELECT、TABLE 语句联合使用。
UNION 构造的表必须包含相同数量的列,就像使用 SELECT 一样。
● 在连接语句中使用。
● 代替 INSERT 或 REPLACE 语句中的 VALUES(),在这种情况下,它的语义与这里描述的略有不同。
● 在 CREATE TABLE ... SELECT 和 CREATE VIEW ... SELECT 中替换源表
官方网址:
https://dev.mysql.com/doc/refman/8.0/en/values.html
内容总结
以上是互联网集市为您收集整理的MySQL的SQL语句 - 数据操作语句(16)- VALUES 语句全部内容,希望文章能够帮你解决MySQL的SQL语句 - 数据操作语句(16)- VALUES 语句所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。