當創建新表時
新表不包含任何數據
要將新的行輸入表中
使用 INSERT 語句
此語句有兩種一般格式
一種格式
使用 VALUES 子句來指定一行或多行的列值
下面三個示例使用此一般格式將數據插入表中
另一種格式
指定全查詢而非指定 VALUES 來標識來自包含在其他表和/或視圖中的行的列
全查詢是 INSERT 或 CREATE VIEW 語句中所使用的選擇語句
或者是跟在謂詞後面的選擇語句
括在括號中的全查詢一般稱為子查詢
根據創建表時已選擇的缺省選項
對於每個插入的行
為每一列提供一個值或者接受一個缺省值
各種數據類型的缺省值在 SQL Reference 中討論
下列語句使用 VALUES 子句將一行數據插入 PERS 表中
INSERT INTO PERS
VALUES (
Harris
Sales
)
下列語句使用 VALUES 子句將三行插入其中只有 ID
名稱以及工作是已知的 PERS 表中
如果列定義為 NOT NULL 且沒有缺省值
則必須為該列指定一個值
CREATE TABLE 語句中的列定義上的 NOT NULL 子句可以用單詞 WITH DEFAULT 擴充
如果某一列定義為 NOT NULL WITH DEFAULT 或常數缺省值(如 WITH DEFAULT
)
並且您未在列列表中指定該列
則缺省值插入至已插入行的該列中
例如
在 CREATE TABLE 語句中
僅為 DEPT 列指定了缺省值並將該值定義為
因此
DEPT 設置為
而所有其他列都為空
INSERT INTO PERS (NAME
JOB
ID)
VALUES (
Swagerman
Prgmr
)
(
Limoges
Prgmr
)
(
Li
Prgmr
)
下列語句返回插入的結果
SELECT *
FROM PERS
注意
在此情況下
並未給每個列指定值
空值顯示為
為此
列名列表的次序和數據類型都必須與 VALUES 子句中提供的值對應
如果省略列名列表(如第一個示例中那樣)
則 VALUES 之後的數據值列表的次序必須與它們所插入至的表中的列次序相同
值的數目必須等於表中列的數目
每個值必須與它所插入至的列的數據類型相容
如果某列定義為可空
且未指定該列的值
則將空值賦給插入行中的該列
下列示例將空值插入 YEARS
COMM 和 BIRTH_DATE 中
因為未給行中的那些列指定值
INSERT INTO PERS (ID
NAME
JOB
DEPT
SALARY)
VALUES (
Perna
Sales
)
INSERT 語句的第二種格式對於用來自另一表中行的值填充表非常方便
如所述的那樣
指定全查詢而非指定 VALUES 以標識來自包含在其他表和/或視圖中的行中的列
下列示例從員工 STAFF 表中選擇部門
的成員的數據
並將它插入 PERS 表中
INSERT INTO PERS (ID
NAME
DEPT
JOB
YEARS
SALARY)
SELECT ID
NAME
DEPT
JOB
YEARS
SALARY
FROM STAFF
WHERE DEPT =
在此插入之後
下列 SELECT 語句與 INSERT 語句中全查詢產生的結果相同
SELECT ID
NAME
DEPT
JOB
YEARS
SALARY
FROM PERS
WHERE DEPT =
結果為
From:http://tw.wingwit.com/Article/program/SQLServer/201311/22031.html