在本教程中,將學習如何使用語句向表中添加新行。
SQL 語句簡介
要在表中添加一行或多行,請使用語句。 以下是語句的最基本形式:
INSERT INTO table_name (column_list)
VALUES (value_list);
下面更詳細地解釋這種語法。
首先,指定要插入的表的名稱。 通常,通過模式名稱引用表名稱,例如.,其中是模式名稱,是表名稱。
其次,指定要在其中插入數據的一個或多個列的列表。必須將列列表括在括號中并用逗號分隔列。
如果列在列列表中沒有出現,則SQL 必須能夠提供插入值,否則無法插入行。
SQL 自動對表中可用的列使用以下值,但不會出現在語句的列列表中:
第三,要在子句中提供插入的值列表。 列列表中的每列必須在值列表中具有相應的值。 此外,必須將值列表括在括號中。
SQL 語句示例
為了方便演示,創建一個名為的新表:
CREATE TABLE sales.promotions (
promotion_id INT PRIMARY KEY IDENTITY (1, 1),
promotion_name VARCHAR (255) NOT NULL,
discount NUMERIC (3, 2) DEFAULT 0,
start_date DATE NOT NULL,
expired_date DATE NOT NULL
);
在本聲明中,在sales模式中創建了一個名為的新表。 表有五列,包括:促銷標識號(),名稱(name),折扣(),開始日期()和過期日期()。
是標識列,因此當向表中添加新行時,SQL 會自動填充其值。
1. 基本示例
以下語句將新行插入表:
INSERT INTO sales.promotions (
promotion_name,
discount,
start_date,
expired_date
)
VALUES
(
'2020夏季促銷',
0.25,
'20200601',
'20200901'
);
在此示例中,為表中的四列指定了值。但沒有為列指定值,因為SQL 會自動為此列提供值。
如果語句成功執行,將返回插入的行數。 在這種情況下,SQL 發出以下消息:
(1 row affected)
要驗證插入操作結果,請使用以下查詢表中的數據:
SELECT
*
FROM

sales.promotions;
執行上面查詢語句,得到以下結果:
2. 插入并返回插入的值
要捕獲插入的值數據庫insert怎么用,請使用子句。 例如,以下語句將新行插入表并返回列的插入值:
INSERT INTO sales.promotions (
promotion_name,
discount,
start_date,
expired_date
) OUTPUT inserted.promotion_id
VALUES
(
'2020秋季促銷',
0.15,
'20201001',
'20201101'
);
要從多個列中捕獲插入的值,請在輸出中指定列,如以下語句所示:
INSERT INTO sales.promotions (
promotion_name,
discount,

start_date,
expired_date
) OUTPUT inserted.promotion_id,
inserted.promotion_name,
inserted.discount,
inserted.start_date,
inserted.expired_date
VALUES
(
'2020冬季促銷',
0.2,
'20201201',
'20200101'
);
執行上面查詢語句,得到以下輸出結果:
3. 將顯式值插入標識列
通常,不為標識列指定值,因為SQL 將自動提供值。但是數據庫insert怎么用,在某些情況下,可能希望在標識列中插入值,例如數據遷移。
請參閱以下語句:
INSERT INTO sales.promotions (
promotion_id,
promotion_name,
discount,

start_date,
expired_date
) OUTPUT inserted.promotion_id
VALUES
(
2,
'2020春季促銷',
0.25,
'20200201',
'20200301'
);
SQL 發出以下錯誤:
要為標識列插入顯式值,必須首先執行以下語句:
SET IDENTITY_INSERT table_name ON;
要關閉標識插入,請使用類似的語句:
SET IDENTITY_INSERT table_name OFF;
執行以下語句,在表中插入標識列的值:
SET IDENTITY_INSERT sales.promotions ON;
INSERT INTO sales.promotions (

promotion_id,
promotion_name,
discount,
start_date,
expired_date
) OUTPUT inserted.promotion_id
VALUES
(
2,
'2020春季促銷',
0.25,
'20200201',
'20200301'
);
SET IDENTITY_INSERT sales.promotions OFF;
在此示例中,首先,打開標識插入,然后插入一個具有標識列的顯式值的行,最后關閉標識插入。
以下查詢顯示插入后表中的數據:
SELECT
*
FROM
sales.promotions;
在本教程中,學習了如何使用SQL 語句向表中添加新行。