在本教學中將學習如何使用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語句將新行插入到表中。