目录
15.1.2插入检索出的数据(使用INSERT SELECT语句)
15.3从一个表复制到另一个表(使用CREATE SELECT语句)
15.插入数据 (INSERT 语句)
15.1数据插入
15.1.1插入完整的行
使用INSERT语法,要求指定表明和插入到新行中的值。
INSERT INTO customers
VALUES(1000000006, # 必须每一列提供一个值,如果某列没有值,则应该使用NULL值
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
以上的方法并不安全,SQL语句高度依赖于表中列的定义次序,以下为改进代码。
在表后的括号里明确给出列名,即使表的结构改变,这条INSERT语句仍然能够正确工作。
INSERT INTO customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country,
cust_contact,
cust_email)
VALUES(1000000006,
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA',
NULL,
NULL);
15.1.2插入部分行
- 该列定义为允许NULL值。
- 在表定义中给出默认值。这表示如果不给出值,将使用默认值。
INSERT INTO customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
VALUES(1000000006,
'Toy Land',
'123 Any Street',
'New York',
'NY',
'11111',
'USA');
在上面这个代码块中,可以看到 cust_contact和cust_email列没有提供值,这是可以的。
15.1.2插入检索出的数据(使用INSERT SELECT语句)
若想把另一表中的顾客列合并到customers表中,可以如下进行:
/* 从一个新表custNew中检索出数据并插入到customers表*/
INSERT INTO customers(cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country)
SELECT cust_id,
cust_name,
cust_address,
cust_city,
cust_state,
cust_zip,
cust_country
FROM custNew;
15.3从一个表复制到另一个表(使用CREATE SELECT语句)
CREATE SELECT是将数据复制到一个新表
CREATE SELECT custCopy AS SELECT * FROM customers;
这条SELECT语句创建一个名为custCopy的新表,并把customers表的整个内容复制到新表中。
若只想复制部分的列,可以明确给出列名,而不是使用*通配符。
15.4挑战题
- 使用INSERT和指定的列,将你自己添加到customers表中。明确列出要添加哪几列,且仅需列出你需要的列.
INSERT INTO customers(cust_id,
cust_email,
cust_name,
cust_address)
VALUES(001,
yrx0163@163.com,
Paula,
SuZhou);
2.备份orders表和orderitems表。
CREATE TABLE ordersNew AS SELECT * FROM orders;
CREATE TABLE orderitemsNew AS SELECT * FROM orderitems;