首页 > 数据库 > > SQL语法-INSERT
向表中添加一行或多行数据。
说明:如果向字符集为字节类型编码(SQL_ASCII,LATIN1等)的数据库中插入多字节字符数据(如汉字等),且字符数据跨越截断位置,这种情况下,按照字节长度自动截断,自动截断后会在尾部产生非预期结果。如果用户有对于截断结果正确性的要求,建议用户采用UTF8等能够按照字符截断的输入字符集作为数据库的编码集。
[ WITH [ RECURSIVE ] with_query [, ...] ]
INSERT INTO table_name [ ( column_name [, ...] ) ]
{ DEFAULT VALUES
| VALUES {( { expression | DEFAULT } [, ...] ) }[, ...]
| query }
[ RETURNING {* | {output_expression [ [ AS ] output_name ] }[, ...]} ];
用于声明一个或多个可以在主查询中通过名字引用的子查询,相当于临时表。
如果声明了RECURSIVE,那么允许SELECT子查询通过名字引用它自己。
其中with_query的详细格式为:with_query_name [ ( column_name [, ...] ) ] AS
( {select | values | insert | update | delete} )
– with_query_name指定子查询生成的结果集名字,在查询中可使用该名称访问
子查询的结果集。
– column_name指定子查询结果集中显示的列名。
– 每个子查询可以是SELECT,VALUES,INSERT,UPDATE或DELETE语句。
要插入数据的目标表名。
取值范围:已存在的表名。
目标表中的字段名:
取值范围:已存在的字段名。
赋予对应column的一个有效表达式或值:
对应字段名的缺省值。如果没有缺省值,则为NULL。
一个查询语句(SELECT语句),将查询结果作为插入的数据。
返回实际插入的行,RETURNING列表的语法与SELECT的输出列表一致。
INSERT命令在每一行都被插入之后用于计算输出结果的表达式。
取值范围:该表达式可以使用table的任意字段。可以使用*返回被插入行的所有字段。
字段的输出名称。
取值范围:字符串,符合标识符命名规范。
--创建表tpcds.reason_t2。
CREATE TABLE tpcds.reason_t2
(
r_reason_sk integer,
r_reason_id character(16),
r_reason_desc character(100)
);
--向表中插入一条记录。
INSERT INTO tpcds.reason_t2(r_reason_sk, r_reason_id, r_reason_desc) VALUES (1, 'AAAAAAAABAAAAAAA', 'reason1');
--向表中插入一条记录,和上一条语法等效。
INSERT INTO tpcds.reason_t2 VALUES (2, 'AAAAAAAABAAAAAAA', 'reason2');
--向表中插入多条记录。
INSERT INTO tpcds.reason_t2 VALUES (3, 'AAAAAAAACAAAAAAA','reason3'),(4, 'AAAAAAAADAAAAAAA', 'reason4'),(5, 'AAAAAAAAEAAAAAAA','reason5');
--向表中插入tpcds.reason中r_reason_sk小于5的记录。
INSERT INTO tpcds.reason_t2 SELECT * FROM tpcds.reason WHERE r_reason_sk <5;
--删除表tpcds.reason_t2。
DROP TABLE tpcds.reason_t2;
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69959250/viewspace-3161724/ ,如需转载,请注明出处,否则将追究法律责任。