INSERT 插入¶
本文档介绍如何使用 SQL 语句在 MatrixOne 中插入数据。
INSERT INTO 语句¶
INSERT INTO 语句有以下写法:
指定要插入的列名和值:
INSERT INTO tbl_name (a,b,c) VALUES (1,2,3);
如果要为表的所有列添加值,则不需要在 SQL 查询中指定列名。必须确保值的顺序与表中列的顺序相同。
INSERT INTO语法如下:INSERT INTO tbl_name VALUES (1,2,3);
使用
INSERT...VALUES...语句可以插入多行。语句中必须包含多个用逗号分隔的值列表,值列表用圆括号括起来,并用逗号分隔。示例如下:INSERT INTO tbl_name (a,b,c) VALUES(1,2,3), (4,5,6), (7,8,9);
数据库示例¶
以下是从 Northwind 示例数据库中的 Customers 表中选择的表示例:
CREATE TABLE Customers (
CustomerID INT AUTO_INCREMENT NOT NULL,
CustomerName VARCHAR(40) NOT NULL,
ContactName VARCHAR(30) NULL,
Address VARCHAR(60) NULL,
City VARCHAR(15) NULL,
PostalCode VARCHAR(10) NULL,
Country VARCHAR(15) NULL,
PRIMARY KEY (CustomerID)
);
CustomerID |
CustomerName |
ContactName |
Address |
City |
PostalCode |
Country |
|---|---|---|---|---|---|---|
89 |
White Clover Markets |
Karl Jablonski |
305 - 14th Ave. S. Suite 3B |
Seattle |
98128 |
USA |
90 |
Wilman Kala |
Matti Karttunen |
Keskuskatu 45 |
Helsinki |
21240 |
Finland |
91 |
Wolski |
Zbyszek |
ul. Filtrowa 68 |
Walla |
01-012 |
Poland |
INSERT INTO 示例¶
下面的 SQL 语句在 Customers 表中插入了一条新记录:
Example¶
INSERT INTO Customers (CustomerName, ContactName, Address, City, PostalCode, Country)
VALUES ('Cardinal', 'Tom B. Erichsen', 'Skagen 21', 'Stavanger', '4006', 'Norway');
Customers 表展示出来如下所示:
CustomerID |
CustomerName |
ContactName |
Address |
City |
PostalCode |
Country |
|---|---|---|---|---|---|---|
89 |
White Clover Markets |
Karl Jablonski |
305 - 14th Ave. S. Suite 3B |
Seattle |
98128 |
USA |
90 |
Wilman Kala |
Matti Karttunen |
Keskuskatu 45 |
Helsinki |
21240 |
Finland |
91 |
Wolski |
Zbyszek |
ul. Filtrowa 68 |
Walla |
01-012 |
Poland |
92 |
Cardinal |
Tom B. Erichsen |
Skagen 21 |
Stavanger |
4006 |
Norway |
仅在指定列中插入数据¶
MatrixOne 也支持使用 SQL 语句仅在特定列中插入数据。
示例¶
使用下面的 SQL 语句将插入一条新记录,但只插入 CustomerName、City 和 Country 列中的数据,同时 CustomerID 将自动更新:
INSERT INTO Customers (CustomerName, City, Country)
VALUES ('Cardinal', 'Stavanger', 'Norway');
Customers 表展示出来如下所示:
CustomerID |
CustomerName |
ContactName |
Address |
City |
PostalCode |
Country |
|---|---|---|---|---|---|---|
89 |
White Clover Markets |
Karl Jablonski |
305 - 14th Ave. S. Suite 3B |
Seattle |
98128 |
USA |
90 |
Wilman Kala |
Matti Karttunen |
Keskuskatu 45 |
Helsinki |
21240 |
Finland |
91 |
Wolski |
Zbyszek |
ul. Filtrowa 68 |
Walla |
01-012 |
Poland |
92 |
Cardinal |
null |
null |
Stavanger |
null |
Norway |
INSERT INTO…SELECT¶
使用 INSERT INTO SELECT,你可以从 SELECT 语句的结果中快速插入多行到表中,SELECT 语句可以从一个或多个表中进行选择。INSERT INTO SELECT 语句要求源表和目标表中的数据类型匹配。
INSERT INTO SELECT 语法解释¶
从一个表复制所有列到另一个表:
INSERT INTO table2
SELECT * FROM table1
WHERE condition;
只从一个表复制一些列到另一个表:
INSERT INTO table2 (column1, column2, column3, ...)
SELECT column1, column2, column3, ...
FROM table1
WHERE condition;
Northwind 数据库示例¶
以下是从 Northwind 示例数据库中的表中选择的表示例:
CREATE TABLE Customers (
CustomerID INT AUTO_INCREMENT NOT NULL,
CustomerName VARCHAR(40) NOT NULL,
ContactName VARCHAR(30) NULL,
Address VARCHAR(60) NULL,
City VARCHAR(15) NULL,
PostalCode VARCHAR(10) NULL,
Country VARCHAR(15) NULL,
PRIMARY KEY (CustomerID)
);
CREATE TABLE Suppliers (
SupplierID INT AUTO_INCREMENT NOT NULL,
SupplierName VARCHAR(40) NOT NULL,
ContactName VARCHAR(30) NULL,
Address VARCHAR(60) NULL,
City VARCHAR(15) NULL,
PostalCode VARCHAR(10) NULL,
Country VARCHAR(15) NULL,
PRIMARY KEY (SupplierID)
);
Customers 表展示出来如下所示:
CustomerID |
CustomerName |
ContactName |
Address |
City |
PostalCode |
Country |
|---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste |
Maria Anders |
Obere Str. 57 |
Berlin |
12209 |
Germany |
2 |
Ana Trujillo Emparedados y helados |
Ana Trujillo |
Avda. de la Constitución 2222 |
México D.F. |
05021 |
Mexico |
3 |
Antonio Moreno Taquería |
Antonio Moreno |
Mataderos 2312 |
México D.F. |
05023 |
Mexico |
Suppliers 表展示出来如下所示:
SupplierID |
SupplierName |
ContactName |
Address |
City |
PostalCode |
Country |
|---|---|---|---|---|---|---|
1 |
Exotic Liquid |
Charlotte Cooper |
49 Gilbert St. |
Londona |
EC1 4SD |
UK |
2 |
New Orleans Cajun Delights |
Shelley Burke |
P.O. Box 78934 |
New Orleans |
70117 |
USA |
3 |
Grandma Kelly’s Homestead |
Regina Murphy |
707 Oxford Rd. |
Ann Arbor |
48104 |
USA |
示例¶
下面的 SQL 语句将 Suppliers 复制到 Customers 中,同时未填充数据的列将填充为 NULL:
INSERT INTO Customers (CustomerName, City, Country)
SELECT SupplierName, City, Country FROM Suppliers;
Customers 表展示出来如下所示:
CustomerID |
CustomerName |
ContactName |
Address |
City |
PostalCode |
Country |
|---|---|---|---|---|---|---|
1 |
Alfreds Futterkiste |
Maria Anders |
Obere Str. 57 |
Berlin |
12209 |
Germany |
2 |
Ana Trujillo Emparedados y helados |
Ana Trujillo |
Avda. de la Constitución 2222 |
México D.F. |
05021 |
Mexico |
3 |
Antonio Moreno Taquería |
Antonio Moreno |
Mataderos 2312 |
México D.F. |
05023 |
Mexico |
4 |
Exotic Liquid |
null |
null |
Londona |
null |
UK |
5 |
New Orleans Cajun Delights |
null |
null |
New Orleans |
null |
USA |
6 |
Grandma Kelly’s Homestead |
null |
null |
Ann Arbor |
null |
USA |