📜  SQL | INSERT INTO 语句

📅  最后修改于: 2021-09-10 01:23:21             🧑  作者: Mango

SQL 的 INSERT INTO 语句用于在表中插入新行。有两种使用 INSERT INTO 语句插入行的方法:

  1. 仅值:第一种方法是仅指定要插入的数据的值,而不指定列名。
  2. 列名和值都:在第二种方法中,我们将指定要填充的列及其对应的值,如下所示:

表格1

查询:

方法 1(仅插入值):

输出:
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(仅在指定的列中插入值):

输出:
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

请注意,未提供值的列由空值填充。这是这些列的默认值。

在 INSERT INTO 语句中使用 SELECT

我们可以使用 SELECT 语句和 INSERT INTO 语句从一个表中复制行并将它们插入到另一个表中。该语句的使用类似于 INSERT INTO 语句。不同之处在于这里使用 SELECT 语句从不同的表中选择数据。使用 INSERT INTO SELECT 语句的不同方式如下所示:

  • 插入表的所有列:我们可以复制一个表的所有数据并插入到不同的表中。

    我们已经使用 SELECT 语句从一个表中复制数据,并使用 INSERT INTO 语句将数据插入到另一个表中。

  • 插入表的特定列:我们只能复制要插入到不同表中的表中的那些列。
    句法:

    我们使用 SELECT 语句仅从第二个表中复制所选列的数据,并使用 INSERT INTO 语句插入到第一个表中。

  • 从表中复制特定行:我们可以使用 WHERE 子句和 SELECT 语句从表中复制特定行以插入到另一个表中。我们必须在 WHERE 子句中提供适当的条件来选择特定的行。

表 2:横向学生

ROLL_NO NAME ADDRESS PHONE Age
7 SOUVIK DUMDUM XXXXXXXXXX 18
8 NIRAJ NOIDA XXXXXXXXXX 19
9 SOMESH ROHTAK XXXXXXXXXX 20

查询:

    • 方法1(插入所有行和列):

      输出:
      该查询将把表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
      8 NIRAJ NOIDA XXXXXXXXXX 19
      9 SOMESH ROHTAK XXXXXXXXXX 20

  • 方法2(插入特定列):

    输出:
    该查询将在Student表的LateralStudent表的ROLL_NO、NAME和Age列中插入数据,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 null null 18
    8 NIRAJ null null 19
    9 SOMESH null null 20
  • 选择要插入的特定行

    输出:
    此查询将仅选择表 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 表将如下所示:

    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