插入数据

1.数据插入

使用INSERT将行插入到数据库表。

插入有几种方式:

插入完整的行

插入行的一部分

插入某些查询的结果

提示:插入及系统安全

使用INSERT语句可能需要客户端/服务器DBMS中的特定安全权限。

在你试图使用INSERT前,应该保证自己有足够的安全权限。

1.1插入完整的行
SQL
INSERT INTO Customers
VALUES(1000000006,
       'Toy Land',
       '123 Any Street',
       'New York',
       'NY',
       '11111',
       'USA',
       NULL,
       NULL);
"INSERT INTO songs VALUES(26958,'78fedfdf13fc820e363e39dadf91e94','03c6699ea836decbc5c8fc2dbae7ad1d3b','201109230',871,1,1 )"

提示:INTO关键字

在某些SQL实现中,跟在INSERT之后的INTO关键字是可选的。

但是,即使不一定需要,最好还是提供这个关键字,这样做将保证SQL代码在DBMS之间可移植。

编写INSERT语句的更安全的方法

SQL
INSERT INTO Customers(
    cust_id,
    cust_name,
    cust_address,
    cust_city,
    cust_state,
    cust_zip,
    cust_country,
    cust_email)
VALUES(1000000007,
       'Toy Land',
       '123 Any Street',
       'New York',
       'NY',
       '11111',
       'USA',
       NULL,
       NULL);

因为提供了列名,VALUES必须以其指定的次序匹配指定的列名,不一定按各列出现在表中的实际次序。

其优点是,即使表的结构改变,这条INSERT语句仍然能正确工作。

1.2插入部分行
SQL
INSERT INTO Customers(
    cust_id,
    cust_name,
    cust_state,
    cust_zip,)
VALUES(1000000007,
       'Toy Land',
       'NY',
       '11111',
       'USA');
"INSERT INTO songs(publish_time,song_init_plays,`language`,gender) VALUES('201109230',871,1,1 )"
1.3插入检索出的数据

INSERT一般用来给表插入具有指定列值的行。

INSERT还存在另一种形式,可以利用它将SELECT语句的结果插入表中,这就是所谓的INSERT SELECT

假如想把另一表中的顾客列合并到Customers表中,不需要每次读取一行再将它用INSERT插入。

SQL
INSERT INTO Customers(cust_id,
                      cust_contact,
                      cust_email,
                      cust_name,
                      cust_address,
                      cust_city,
                      cust_state,
                      cust_zip,
                      cust_country)
SELECT cust_id,
       cust_contact,
       cust_email,
       cust_name,
       cust_address,
       cust_state,
       cust_zip,
       cust_country
FROM CustNew;
//这个例子使用INSERT SELECT从CustNew中将所有数据导入Customers

提示:INSERT SELECT中的列名

为简单起见,这个例子在INSERT和SELECT语句中使用了相同的列名。

但是,不一定要求列名匹配。

事实上,DBMS一点也不关心SELECT返回的列名。

它使用的是列的位置。

INSERT通常只插入一行。INSERT SELECT除外,它可以用一条INSERT插入多行。

2.从一个表复制到另一个表

有一种数据插入不使用INSERT语句。

要将一个表的内容复制到一个全新的表,可以使用CREATE SELECT语句(或者在SQL Server也可用SELECT INTO语句)

与INSERT SELECT 将数据添加到一个已经存在的表不同,CREATE SELECT将数据复制到一个新表

SQL
CREATE TABLE CustCopy AS SELECT * FROM Customers

若是使用SQL Server,可以这样写

SQL
SELECT * INTO CustCopy FROM Customers

在使用SELECT INTO时,需要知道一些事情:

  • 任何SELECT 选项和子句都可以使用,包括WHERE和GROUP BY
  • 可利用联结从多个表插入数据
  • 不管从多少个表中检索数据,数据都只能插入到一个表中。

提示:进行表的复制

SELECT INTO 是试验新SQL语句前进行表复制的很好工具。

先进行复制,可在复制的数据上测试SQL代码,而不会影响实际的数据。

订阅评论
提醒
0 评论
最旧
最新 最多投票
内联反馈
查看所有评论
滚动至顶部