从一张表复制数据到另外一张表
/*为了创建新表我们使用create table 新建的表明as*/ CREATE TABLE orders_archived AS SELECT * FROM orders
注意我们新创建的表没有把id当作主列,也没有自动升序
/*为了创建新表我们使用create table 新建的表明as*/
CREATE TABLE orders_archived AS
SELECT * FROM orders
/*这是SELECT * FROM orders
子查询
子查询是另外一段sql语句的选择语句
我们也可以在insert语句下用一段子查询*/INSERT INTO orders_archived SELECT * FROM orders WHERE order_date < '2019-01-01' /*这是SELECT * FROM orders 子查询 子查询是另外一段sql语句的选择语句 我们也可以在insert语句下用一段子查询 我们可以用select语句作为insert语句里的子查询*/
练习:
创造上述表部分记录的复制,并置于新表invoices_archived中,但是那张表我们不想要顾客id列,我们想要顾客名列,另外只复制支付过的发票
思路:首先我们要得到想要复制的表,既然想要顾客名列所以需要join
CREATE TABLE invoices_aarchived AS
SELECT
i.invoice_id,
i.number,
c.name AS client,
i.invoice_total,
i.payment_total,
i.invoice_date,
i.due_date,
i.payment_date
FROM invoices i
JOIN clients c
USING(client_id)
WHERE payment_date IS NOT NULL