在单个SQL语句中插入多行数据

在单个SQL语句中插入多行数据,sql,insert,sql-insert,Sql,Insert,Sql Insert,我一次要插入多组数据 INSERT INTO MyTable VALUES ("John", "Doe", 1234567890, "employee", ""); INSERT INTO MyTable VALUES ("Susen", "Gupta", 1234567890, "leander"); INSERT INTO MyTable VALUES ("Karn", "Share", 1234567890, "employee", "home"); 我想在一条SQL语句中插入多行。是否

我一次要插入多组数据

INSERT INTO MyTable VALUES ("John", "Doe", 1234567890, "employee", "");
INSERT INTO MyTable VALUES ("Susen", "Gupta", 1234567890, "leander");
INSERT INTO MyTable VALUES ("Karn", "Share", 1234567890, "employee", "home");

我想在一条SQL语句中插入多行。是否可以使用不同数量的值执行此操作。

在SQL Server中,可以执行以下操作:

INSERT INTO MyTable VALUES ("John", 123, "Lloyds Office"),
("Jane", 124, "Lloyds Office"),
("Billy", 125, "London Office"),
("Miranda", 126, "Bristol Office")
自SQL-92以来一直是SQL标准的一部分,许多现代DBMS都支持它。这将允许您执行以下操作:

insert into MyTable ( Name,     Id,   Location)
             values ('John',    123, 'Lloyds Office'),
                    ('Jane',    124, 'Lloyds Office'),
                    ('Billy',   125, 'London Office'),
                    ('Miranda', 126, 'Bristol Office');
您会注意到我在那里使用了完整的
insert-into
,列出了要使用的列。我更喜欢这样,因为它使您不受列默认顺序的影响

如果您的特定DBMS不支持它,您可以将其作为事务的一部分来执行,该事务依赖于DBMS,但基本上如下所示:

begin transaction;
insert into MyTable (Name,Id,Location) values ('John',123,'Lloyds Office');
insert into MyTable (Name,Id,Location) values ('Jane',124,'Lloyds Office'),
insert into MyTable (Name,Id,Location) values ('Billy',125,'London Office'),
insert into MyTable (Name,Id,Location) values ('Miranda',126,'Bristol Office');
commit transaction;

这使得操作原子化,要么插入所有值,要么不插入任何值。

可以,但这取决于您使用的SQL味道:),例如在mysql和sqlserver中:

INSERT INTO Table ( col1, col2 ) VALUES
( val1_1, val1_2 ), ( val2_1, val2_2 ), ( val3_1, val3_2 );
但在甲骨文中:

INSERT ALL
   INTO Table (col1, col2, col3) VALUES ('val1_1', 'val1_2', 'val1_3')
   INTO Table (col1, col2, col3) VALUES ('val2_1', 'val2_2', 'val2_3')
   INTO Table (col1, col2, col3) VALUES ('val3_1', 'val3_2', 'val3_3')
   .
   .
   .
SELECT 1 FROM DUAL;

谢谢太棒了。:)