📜  SQL | INSERT INTO语句

📅  最后修改于: 2021-05-20 07:12:12             🧑  作者: Mango

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

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

表格1

查询:

方法1(仅插入值):

输出:
现在,学生表将如下所示:

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

输出:
现在,学生表将如下所示:

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(插入所有行和列):

      输出:
      该查询将在表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
  • 方法2(插入特定列):

    输出:
    此查询会将数据插入到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
  • 选择要插入的特定行

    输出:
    该查询将仅从表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
  • 使用单个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的每个连续行中插入所有值。因此学生表将如下所示:

    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