SQL INSERT INTO语句
SQL的INSERT INTO语句用于在表中插入新行。有两种方法使用INSERT INTO语句插入行:
- 只插入值: 第一种方法是只指定要插入的数据的值,而不指定列名。
INSERT INTOtable_name值(value1, value2, value3,…);
table_name :表名。
value1, value2, . . :新记录的第一列,第二列,…的值
- 列名和值都是:在第二个方法中,我们将指定我们想要填充的列和它们对应的值,如下所示:
INSERT INTOtable_name (column1, column2, column3,..)value1, value2, value3,..);
table_name :表名。
column1 :第一列,第二列…
value1, value2, value3 :新记录的第一列,第二列,…的值
方法1(只插入值):
INSERT INTO Student VALUES (‘5′,’HARSH’,’WEST BENGAL’,’XXXXXXXXXX’,’19’);
输出:
表Student现在看起来像这样:
ROLL_NO | NAME | ADDRESS | PHONE | Age |
---|---|---|---|---|
1 | Ram | Delhi | XXXXXXXXXX | 18 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
4 | SURESH | Delhi | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
5 | HARSH | WEST BENGAL | XXXXXXXXXX | 19 |
方法2(只在指定的列中插入值):
INSERT INTO Student (ROLL_NO, NAME, Age) VALUES (‘5′,’PRATIK’,’19’);
输出:
表Student现在看起来像这样:
ROLL_NO | NAME | ADDRESS | PHONE | Age |
---|---|---|---|---|
1 | Ram | Delhi | XXXXXXXXXX | 18 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
4 | SURESH | Delhi | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
5 | PRATIK | null | null | 19 |
注意,没有提供值的列被填充为null。这是这些列的默认值。
在INSERT INTO语句中使用SELECT
我们可以使用SELECT语句和INSERT INTO语句来复制一个表中的行,并将它们插入到另一个表中。这个语句的使用类似于INSERT INTO语句。不同的是,这里使用SELECT语句从另一个表中选择数据。使用INSERT INTOSELECT语句的不同方法如下:
- 插入一个表的所有列:我们可以复制一个表的所有数据,并插入到另一个表中。
INSERT INTO first_table SELECT * FROM second_table;
first_table :第一个表的名称
second_table :第二个表的名称
我们使用选择语句从一个表中复制数据,然后插入另一个表中。
- 插入表中的特定列:我们只能复制表中我们想插入到另一个表中的那些列。
语法:
INSERT INTO first_table(names_of_columns1) SELECT names_of_columns2 FROM second_table;
first_table :第一个表的名称。
second_table :第二个表的名称。
names of columns1 :表1中以逗号分隔的列的名称。
names of columns2 :表2中以逗号分隔的列的名称。
我们使用选择语句只从第二个表复制所选列的数据,并将数据插入第一个表中。
- 从表中复制特定的行:我们可以通过使用SELECT语句的WHERE子句将表中的特定行复制到另一个表中。我们必须在WHERE子句中提供适当的条件来选择特定的行。
INSERT INTO table1 SELECT * FROM table2 WHERE condition;
first_table :第一个表的名称。
second_table :第二个表的名称。
condition: 条件来选择特定行。
表二:LateralStudent
ROLL_NO | NAME | ADDRESS | PHONE | Age |
---|---|---|---|---|
7 | SOUVIK | DUMDUM | XXXXXXXXXX | 18 |
8 | NIRAJ | NOIDA | XXXXXXXXXX | 19 |
9 | SOMESH | ROHTAK | XXXXXXXXXX | 20 |
查询:
方法1(插入所有行和列):
INSERT INTO Student SELECT * FROM LateralStudent;
输出:
这个查询将在Student表中插入表LateralStudent的所有数据。Student表现在看起来像,
ROLL_NO | NAME | ADDRESS | PHONE | Age |
---|---|---|---|---|
1 | Ram | Delhi | XXXXXXXXXX | 18 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
4 | SURESH | Delhi | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
7 | SOUVIK | DUMDUM | XXXXXXXXXX | 18 |
8 | NIRAJ | NOIDA | XXXXXXXXXX | 19 |
9 | SOMESH | ROHTAK | XXXXXXXXXX | 20 |
- 方法二(插入特定列):
INSERT INTOStudent(ROLL_NO,NAME,Age)选择ROLL_NO,NAME,Age FROM LateralStudent;
输出:
该查询将在Student表中的LateralStudent表的ROLL_NO、NAME和Age列中插入数据,Student表中的其余列将由null填充,这是剩余列的默认值。Student表现在看起来像,
ROLL_NO | NAME | ADDRESS | PHONE | Age |
---|---|---|---|---|
1 | Ram | Delhi | XXXXXXXXXX | 18 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
4 | SURESH | Delhi | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
7 | SOUVIK | null | null | 18 |
8 | NIRAJ | null | null | 19 |
9 | SOMESH | null | null | 20 |
- 选择要插入的特定行:
INSERT INTO Student SELECT * FROM LateralStudent WHERE Age = 18;
输出:
这个查询将只选择表LateralStudent中的第一行插入表Student中。Student表现在看起来像,
ROLL_NO | NAME | ADDRESS | PHONE | Age |
---|---|---|---|---|
1 | Ram | Delhi | XXXXXXXXXX | 18 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
4 | SURESH | Delhi | XXXXXXXXXX | 18 |
3 | SUJIT | ROHTAK | XXXXXXXXXX | 20 |
2 | RAMESH | GURGAON | XXXXXXXXXX | 18 |
7 | SOUVIK | DUMDUM | XXXXXXXXXX | 18 |
- 使用单一SQL语句在表中插入多行
INSERT INTO table_name(Column1,Column2,Column3,.......)
VALUES (Value1, Value2,Value3,.....),
(Value1, Value2,Value3,.....),
(Value1, Value2,Value3,.....),
............................. ;
**table_name** : name of the table
**Column1** : name of first column, second column …
**Value1, Value2, Value3** : value of first column, second column,… for each new row inserted
You need To provide Multiple lists of values where each list is separated by ",". Every list of value corresponds to values to be inserted in each new row of the table.
Values in the next list tells values to be inserted in the next Row of the table.
示例:
下面的SQL语句在学生表中插入多行。
Input :
INSERT INTO STUDENT(ID, NAME,AGE,GRADE,CITY) VALUES(1,"AMIT KUMAR",15,10,"DELHI"),
(2,"GAURI RAO",18,12,"BANGALORE"),
(3,"MANAV BHATT",17,11,"NEW DELHI"),
(4,"RIYA KAPOOR",10,5,"UDAIPUR");
输出:STUDENT TABLE
这个查询将插入STUDENT TABLE中每个连续行的所有值。因此STUDENT Table看起来像这样:
ID | NAME | AGE | GRADE | CITY |
---|---|---|---|---|
1 | AMIT KUMAR | 15 | 10 | DELHI |
2 | GAURI RAO | 16 | 12 | BANGALORE |
3 | MANAV BHATT | 17 | 11 | NEW DELHI |
4 | RIYA KAPOOR | 10 | 5 | UDAIPUR |