在本教程中将学习如何使用Oracle INSERT
语句将数据插入到表中。
要将新行插入到表中,请按如下方式使用Oracle INSERT
语句:
INSERT INTO table_name (column_1, column_2, column_3, ... column_n) VALUES( value_1, value_2, value_3, ..., value_n);
在这个声明语句中:
table_name
。如果值列表与表列具有相同的顺序,则可以跳过不指定列的列表,但这不被认为是一种好的做法:
INSERT INTO table_name VALUES (value_1, value_2, value_3, ..., value_n);
如果从Oracle INSERT
语句中排除一列或多列,则必须指定列列表,因为Oracle需要它与值列表中的值相匹配。
在INSERT
语句中省略的列将使用缺省值(如果可用)或者如果列接受NULL
值,则使用NULL
值。
我们创建一个名为discounts
的新表,用来演示如何插入数据:
-- oracle 12c 创建表语法 CREATE TABLE discounts ( discount_id NUMBER GENERATED BY DEFAULT AS IDENTITY, discount_name VARCHAR2(255) NOT NULL, amount NUMBER(3,1) NOT NULL, start_date DATE NOT NULL, expired_date DATE NOT NULL ); -- oracle 11g 创建表语法 drop sequence discounts_seq; create sequence discounts_seq increment by 1 start with 1 maxvalue 9999999999 nocache; CREATE TABLE discounts ( discount_id NUMBER, -- discounts_seq.nextval discount_name VARCHAR2(255) NOT NULL, amount NUMBER(3,1) NOT NULL, start_date DATE NOT NULL, expired_date DATE NOT NULL );
在discounts
表中,discount_id
列是一个标识列,其默认值由系统自动生成,因此在Oracle 12c 中,不必在INSERT
语句中指定discount_id
列。
其他列,如:discount_name
,amount
,start_date
和expired_date
是NOT NULL
列,所以必须为它们提供值。
以下语句将新行插入到discounts
表中:
-- Oracle 12c语法 INSERT INTO discounts(discount_name, amount, start_date, expired_date) VALUES('双11电脑特价', 6.5, DATE '2017-11-11', DATE '2017-11-12'); -- oracle 11g语法 INSERT INTO discounts(discount_id, discount_name, amount, start_date, expired_date) VALUES(discounts_seq.nextval, '双11电脑特价', 6.5, DATE '2017-11-11', DATE '2017-11-12');
在这个语句中,使用日期文字DATE '2017-11-11'
和 DATE '2017-11-12'
来表示日期列start_date
和expired_date
。
以下语句从discounts
表中检索数据以验证插入情况:
SELECT * FROM discounts;
执行上面查询语句,得到以下结果 -
以下示例向discounts
表中插入一个新行:
-- Oracle 12c写法 INSERT INTO discounts(discount_name, amount, expired_date, start_date) VALUES('2017长期折扣', 9.5, DATE '2017-12-31', CURRENT_DATE); -- Oracle 11g INSERT INTO discounts(discount_id, discount_name, amount, expired_date, start_date) VALUES(discounts_seq.nextval, '2017长期折扣', 9.5, DATE '2017-12-31', CURRENT_DATE);
在这个例子中,使用CURRENT_DATE
函数的结果指定start_date
列的值。
注意:
start_date
列这里是放到了最后一个位置,而它对应的值也放到最后一个位置。
以下语句从discounts
表中检索数据以验证插入情况:
SELECT * FROM discounts;
执行上面查询语句,得到以下结果 -
在本教程中,您已学习如何使用Oracle INSERT语句将新行插入到表中。