1、INSERT语句
(1)列清单省略
对表进行全列INSERT时,可以省略表名后的列清单。这时VALUES子句的值会默认按照从左往右的顺序赋值给每一列。
(2)插入NULL
INSERT语句中想给某一列赋予NULL值时,可以直接在VALUES子句的值清单写入NULL。【插入NULL的列一定不能设置NOT NULL约束。否则,INSERT语句会出差错,数据插入失败。但之前已插入的数据并不会被破坏。】
(3)插入默认值
默认值的设定,可以通过在创建表的CREATE TABLE语句中设置DEFAULT约束来实现。
CREATE TABLE <表名>
(<列名1> CHAR(4) NOT NULL,
(略)
<列名4> INTEGER DEFAULT 0,
PRIMARY KEY (列名1));
①通过显示方式插入
在VALUES子句指定DEFAULT关键字。
INSERT INTO <表名> (列名1, 列名2, 列名3,列名4, 列名5) VALUES (值1, 值2, 值3, DEFAULT, 值5);
这样,RDBMS就会在插入记录时,自动把默认值赋给对应的列。
②通过隐示方法插入
在列清单和VALUES中省略设定了默认值的列就可以给该列赋上默认值0。
【如果省略了没有设定默认值的列的话,该列的值就会被设定为NULL。因此,如果省略的是设置了NOT NULL约束的列的话,INSERT语句就会出错】
(4)从其他表中复制数据
INSERT INTO <表2> (列名1, 列名2, 列名3, 列名4, 列名5)
SELECT 列名1, 列名2, 列名3, 列名4, 列名5
FROM <表1>;
执行该INSERT……SELECT语句时如果原来表1中有八行数据,那么表2中也会插入完全相同的八行数据。因此该语句可以在需要进行数据备份时使用。
INSERT语句的SELECT语句中,可以使用WHERE子句或者GROUP BY子句等任何SQL语法,但是使用ORDER BY子句并不会产生任何效果。