● 插入NULL时需要在VALUES子句的值清单中写入NULL
● 可以为表中的列设定默认值(初始值),默认值可以通过在CREATE TABLE语句中为列设置DEFAULT约束来设定。
● 插入默认值可以通过两种方式实现,即在INSERT语句的VALUES子句中指定DEFAULT关键字(显式方法),或省略列清单(隐式方法)
● 使用INSERT…SELECT可以从其他表中复制数据。
要学习 INSERT 语句,我们得首先创建一个名为 ProductIns的表。请大家执行代码清单 4-1 中的 CREATE TABLE 语句。
该表除了为 sale_price 列(销售单价)设置了 DEFAULT 0 的约束之外,其余内容与之前使用的 Product(商品)表完全相同。
CREATE TABLE ProductIns (product_id CHAR(4) NOT NULL, product_name VARCHAR(100) NOT NULL, product_type VARCHAR(32) NOT NULL, sale_price INTEGER DEFAULT 0, purchase_price INTEGER , regist_date DATE , PRIMARY KEY (product_id));代码清单4-1 创建ProductIns表的CREATE TABLE语句
INSERT语句的基本语法
INSERT INTO ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES (‘0001‘, ‘T恤‘ ,‘衣服‘, 1000, 500, ‘2009-09-20‘);View Code
列清单的省略
-- 使用列清单 INSERT INTO ProductIns (product_id, product_name, product_type, sale_price, purchase_price, regist_date) VALUES (‘0005‘, ‘高压锅‘, ‘厨房用具‘, 6800, 5000, ‘2009-01-15‘); -- 不使用列清单 INSERT INTO ProductIns VALUES (‘0005‘, ‘高压锅‘, ‘厨房用具‘, 6800, 5000, ‘2009-01-15‘);代码清单4-3 省略列清单
插入NULL
INSERT 语句中想给某一列赋予 NULL 值时,可以直接在 VALUES 子句的值清单中写入 NULL。
但是,想要插入 NULL 的列一定不能设置 NOT NULL 约束。向设置了 NOT NULL 约束的列中插入 NULL 时, INSERT 语句会出错,导致数据插入失败。
插入默认值
像这样,我们可以通过“DEFAULT < 默认值 >”的形式来设定默认值。
那么在实际使用中哪种方法更好呢?笔者建议大家使用显式的方法。
从其他表中复制数据
-- 插入数据用的复制商品表 CREATE TABLE ProductCopy (product_id CHAR(4) NOT NULL, product_name VARCHAR(100) NOT NULL, product_type VARCHAR(32) NOT NULL, sale_price INTEGER , purchase_price INTEGER , regist_date DATE , PRIMARY KEY (product_id));代码清单4-9 创建ProductCopy表