熟悉数据库的数据更新操作,能够使用 SQL 语句对数据库进行数据的增加、删除、修改操作。
针对 tpch 数据库或自建数据库 test 设计单行插入、批量插入、修改和删除数据操作,理解和掌握 insert、delete 和 update 语法结构的各个组成成分,结合嵌套 SQL 子查询,分别设计几种不同形式的语句,并调试通过。
(1)给供应商表插入一条记录,每列的值要给的合理。
源代码:
INSERT INTO supplier (
suppkey,
name,
address,
nationkey,
phone,
acctbal,
comment
)
VALUES(
131209,
'腾讯控股',
'广东省深圳市',
227,
'020-2456741',
1300098203.20,
'无'
);
结果截图:(下图是使用可视化筛选出的结果,也可以使用SELECT语句进行查找结果 )
(2)把所有中国籍顾客的所有信息插入到一个新的顾客表(customernew)中。
源代码:
CREATE TABLE customernew AS SELECT
customer.*
FROM
customer,
nation
WHERE
customer.nationkey = nation.nationkey
AND nation. NAME = '中国';
结果截图:
(3)把每个顾客及其购物总数量和购物总价等信息插入到顾客统计表(cusshopping)
源代码:
CREATE TABLE cusshopping AS SELECT
customer.custkey,
customer. NAME,
COUNT(*) AS shopping_num,
SUM(totalprice) AS price_sum
FROM
customer,
orders
WHERE
customer.custkey = orders.custkey
GROUP BY
orders.custkey
ORDER BY
orders.custkey;
结果截图:
(4)把“深圳市鸿运贸易有限公司”供应的所有零件的供应价格降价 20%。
源代码:
UPDATE partsupp
SET supplycost = supplycost * 0.8
WHERE
suppkey IN (
SELECT
suppkey
FROM
supplier
WHERE
NAME = '深圳市鸿运贸易有限公司'
);
结果截图:(下图是使用可视化筛选出的结果,也可以使用SELECT语句进行查找结果 )
更新后
(5)更新订单明细表中的订单明细价格,订单明细价格(extendedprice)=零售价格 (part.retailprice)* 零件数量(quantity)。
源代码:
UPDATE lineitem,
part
SET lineitem.extendedprice = lineitem.quantity * part.retailprice
WHERE
lineitem.partkey = part.partkey;
结果截图:
更新前
更新后
(6)删除顾客“童帅”的所有订单明细记录和订单记录。
源代码:
DELETE
FROM
lineitem
WHERE
orderkey IN (
SELECT
orderkey
FROM
orders,
customer
WHERE
customer. NAME = '童帅'
AND orders.custkey = customer.custkey
);
DELETE
FROM
orders
WHERE
custkey IN (
SELECT
custkey
FROM
customer
WHERE
NAME = '童帅'
);
结果截图:(下图是使用可视化筛选出的结果,也可以使用SELECT语句进行查找结果 )
删除前
源代码:
DELETE
FROM
lineitem
WHERE
suppkey IN (
SELECT
suppkey
FROM
supplier
WHERE
nationkey IN
(SELECT nationkey
FROM nation
WHERE NAME = '澳大利亚')
);
DELETE
FROM
partsupp
WHERE
suppkey IN (
SELECT
suppkey
FROM
supplier
WHERE
nationkey IN
(SELECT nationkey
FROM nation
WHERE NAME = '澳大利亚')
);
DELETE
FROM
supplier
WHERE
nationkey IN (
SELECT
nationkey
FROM
nation
WHERE
NAME = '澳大利亚'
);
结果截图:(下图是使用可视化筛选出的结果,也可以使用SELECT语句进行查找结果 )
删除前
删除后