INSERT子句 插入数据
- 插入单行
格式:INSERT INTO 表名 (列名1,列名2,……) VALUES(值1,值2,……)
1 2 3
| INSERT INTO customers(first_name,last_name,address,city,state)
VALUES('xiling','luo','SZTU','shenzhen','GD')
|
- 插入多行
格式:INSERT INTO 表名 (列名1,列名2,……)
VALUES(值1,值2,……),(值1,值2,……),……
1 2 3
| INSERT INTO products(name,quantity_in_stock,unit_price) VALUES('product4',25,4.55), ('product5',38,3.50)
|
- 插入分层行
若要在两个有关联的表插入有关联的元组数据,可通过LAST_INSERT_ID()调用上一条记录刚得到的id(该id为表中的主键,拥有自动递增特性)
1 2 3 4
| INSERT INTO orders(customer_id,order_date,status) VALUES(12,'2024-04-02',1); INSERT INTO order_items VALUES(LAST_INSERT_ID(),14,1,4.55);
|
建表并复制
将某表的某些记录复制成另一个表,利用 CREATE TABLE 【表名】 AS 完成。
1 2 3 4 5 6 7 8 9 10 11 12
| CREATE TABLE invoices_archived AS SELECT i.invoice_id, i.number, c.name client, i.invoice_total, i.payment_total, i.invoice_date, i.due_date, i.payment_date FROM clients c,invoices i WHERE c.client_id = i.client_id AND payment_date IS NOT NULL
|
UPDATE子句 更新数据
- 更新一行
格式:UPDATE 【表名】 SET 【列名1】= 值1,…… ,WHERE 条件(指定某一条记录的主键)
1 2 3
| UPDATE invoices SET payment_total = 10, payment_date = '2019-03-01' WHERE invoice_id = 1;
|
- 更新多行
格式:UPDATE 【表名】 SET 【列名1】= 值1,…… ,WHERE 条件
1 2 3
| UPDATE customers SET points = points + 50 WHERE birth_date < '1990-01-01';
|
- 使用子查询的情况
在我们不知道WHERE的条件时,可以用子查询先得到我们所需要的条件,再进行更新。
如:我们需要更新订单表内的注释信息,但我们不知道顾客的id,只知道姓名,在这情况下就需要通过在顾客表找到姓名相对应的id,再到订单表更新注释
1 2 3 4 5 6 7
| UPDATE orders SET comments = 'Gold customers' WHERE customer_id IN ( SELECT customer_id FROM customers WHERE points > 3000 );
|
DELETE子句 删除数据
格式:DELETE FROM 【表名】 WHERE 【条件1】,……
1 2 3 4 5 6
| DELETE FROM invoices WHERE client_id = ( SELECT * FROM clients WHERE name = 'Myworks' );
|