值
是MySQL 8.0.19中引入的DML语句,它返回一组一行或多行作为表。换句话说,它是一个表值构造函数,也可以作为一个独立的SQL语句运行。
值row_constructor_list(订单column_designator][限制数量]row_constructor_list:行(value_list)、行(value_list)][……]value_list:价值(,价值][……]column_designator: column_指数
的值
语句由值
关键字,后跟一个或多个行构造函数的列表,以逗号分隔。行的构造函数由行()
行构造函数子句,其括号中包含一个或多个标量值的值列表。值可以是任何MySQL数据类型的文字,也可以是解析为标量值的表达式。
行()
不能为空(但提供的每个标量值都可以为空零
).每一个行()
同样的值
语句的值列表中必须有相同数量的值。
的默认的
关键字不支持值
类中提供值时除外,否则将导致语法错误插入
声明。
的输出值
是一个表:
mysql >值行(1、2、3)、行(5、7、9),行(4 6 8);+----------+----------+----------+ | column_0 | column_1 | column_2 | +----------+----------+----------+ | 1 | 2 | 3 | | 5 | 7 9 | | | 4 | 6 | 8 | +----------+----------+----------+ 3行集(0.00秒)
表的列从值
是否有隐式命名的列column_0
,column_1
,column_2
,等等,总是以0
.此事实可用于使用可选参数按列对行进行排序命令
子句的用法与此子句的用法相同选择
语句,如下所示:
mysql> VALUES ROW(1,2,3), ROW(5,7,9), ROW(4,6,8) ORDER BY column_1;+----------+----------+----------+ | column_0 | column_1 | column_2 | +----------+----------+----------+ | 1 | 2 | 3 | 4 | | 6 | 8 | | 5 | 7 | 9 | +----------+----------+----------+ 3行集(0.00秒)
的值
语句还支持限制
子句,用于限制输出中的行数。
的值
语句对于列值的数据类型是允许的;你可以在同一列中混合类型,如下所示:
mysql >值行(“q”,42岁,' 2019-12-18 '),- - - - - - >行(23岁,“abc”,98.6),- - - - - - >行(27.0002,“玛丽·史密斯”,“{“b”:“一”:10日25}”);+----------+------------+--------------------+ | column_0 | column_1 | column_2 | +----------+------------+--------------------+ | 问42 | | 2019-12-18 | | 23 abc | | 98.6 | 27.0002 | |玛丽·史密斯|{“a”:10“b”:25 } | +----------+------------+--------------------+ 3行集(0.00秒)
值
的一个或多个实例行()
充当表值构造函数;虽然它可以用于在插入
或取代
表述,不要把它和值
同样用于此目的的关键字。你也不应该把它和值()
中的列值的函数插入……关于重复密钥更新
.
你也应该记住行()
是行值构造函数(参见第13.2.11.5节,“行子查询”,而值行()
是表值构造函数;这两者不能互换使用。
与
联盟
,如图所示:mysql> SELECT 1,2 UNION SELECT 10,15;+----+----+ | 1 | 2 | +----+----+ | 1 | 2 | | 10 | 15 | +----+----+ 2行(0.00秒)mysql >值行(1、2)联盟值行(10、15);+----------+----------+ | column_0 | column_1 | +----------+----------+ | 1 | 2 | | 10 | 15 | +----------+----------+ 2行集(0.00秒)
也可以用这种方式将有多行构造的表联合在一起,像这样:
mysql> VALUES ROW(1,2), ROW(3,4), ROW(5,6) > UNION VALUES ROW(10,15),ROW(20,25);+----------+----------+ | column_0 | column_1 | +----------+----------+ | 1 | 2 | 3 | 4 | | | 5 | 6 | | 10 | 15 | | 20 | 25 | +----------+----------+ 5行集(0.00秒)
你也可以省略(通常最好省略)
联盟
在这种情况下,使用一个值
声明,像这样:mysql >值行(1、2)、行(3、4),(5、6)行,行(10、15)、行(20、25);+----------+----------+ | column_0 | column_1 | +----------+----------+ | 1 | 2 | 3 | 4 | | | 5 | 6 | | 10 | 15 | | 20 | 25 | +----------+----------+
中构造的表
联盟
必须包含相同数量的列,就像使用选择
.看到第13.2.10.3节“联合条款”,以了解更多例子。在连接。看到第13.2.10.2节“JOIN子句”,以了解更多资料及例子。
代替
值()
在一个插入
或取代
语句,在这种情况下,它的语义与这里描述的略有不同。看到第13.2.6节,“INSERT语句”查阅详情。