INSERT SELECT:
它可以将SELECT语句结果插入表中,在某种意义上可以完成表的复制。
如:
USE test; —使用数据库test
CREATE TABLE CustNew
(
cust_id char(10) NOT NULL ,
cust_name char(50) NOT NULL ,
cust_address char(50) NULL ,
cust_city char(50) NULL ,
cust_state char(5) NULL ,
cust_zip char(10) NULL ,
cust_country char(50) NULL ,
cust_contact char(50) NULL ,
cust_email char(255) NULL
); —创新新表
INSERT INTO CustNew
(
cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email
)
SELECT cust_id, cust_name, cust_address, cust_city, cust_state, cust_zip, cust_country, cust_contact, cust_email
FROM customers; —将customers表的数据插入新表alter
SELECT * FROM CustNew;
返回结果如下:
而如果反过来用,大概就是:
insert into customers (列1,列2,……)
select 列1,列2,…… from custnew
即可完成将表custnew中的数据全部插入customers,这也完成了一条insert插入多条数据。
通常,一条INSERT 语句,只能插入一行数据,要插入多行,就必须执行多个INSERT,但是, INSERT SELECT 是个例外。
以上方法的复制,实际上是重新在数据库中创建了一个新表。
SELECT INTO:
这种方法,可以在SQL语句运行中创建一个表,并将一个表复制到这个全新的表。
我们可以在实验新的SQL语句前,用其进行复制,这样就不影响到实际数据。
如:
USE test; —使用数据库
CREATE TABLE Cucopy as SELECT FROM customers; —复制
SELECT FROM Cucopy;
返回结果,与上表一致。