本文共 3145 字,大约阅读时间需要 10 分钟。
一、插入
INSERT
INTO 表名(列名1,列名2……)//列名可以省略,省略情况下是表格的所有列
VALUES(常量1,常量2……)//与上句中的列对应
二、修改
UPDATE 表名
SET 列名=表达式,列名=表达式......
WHERE 条件//可以省略
三、删除
DELETE
FROM 表名
WHERE 条件//可以省略
四、实例
1.插入一条顾客记录,要求每列都给出一个合理的数值SELECT *FROM customer;/*先查询已经存在的customer表*/INSERTINTO customerVALUES(1,'llllll','中国',40,'17823331233',0.00,'Northeast','VIP Customer');2.插入一条订单记录,给出必要的几个字段INSERTINTO lineitem(orderkey,partkey,suppkey,linenumber,quantity,shipdate,receiptdate)VALUES(22025,13724,13139,1,100,'2017-10-31','2017-11-1');SELECT*FROM lineitem;3. 创建一个新的顾客表,把所有中国国籍顾客插入到新的顾客表中CREATE TABLE newcustomer( ncustkey INTEGER PRIMARY KEY,/*顾客编号*/ nname VARCHAR(25), naddress VARCHAR(40), nphone CHAR(15), nacctbal REAL, nmktsegment CHAR(10), ncomment VARCHAR(117));INSERTINTO newcustomerSELECT custkey,name,address,phone,acctbal,mksegment,commentFROM customerWHERE nationkey= ( SELECT nationkey FROM nation WHERE name='中国' );SELECT *FROM newcustomer;4.创建一个顾客购物统计表,记录每个顾客以及其购物总数和总价等信息CREATE TABLE custshop(custkey INTEGER,totalquantity REAL,totalprice REAL);INSERT INTO custshopSELECT customer.custkey,SUM(quantity),SUM(totalprice)FROM customer,orders,lineitemWHERE customer.custkey=orders.orderkey AND orders.orderkey=lineitem.orderkeyGROUP BY customer.custkey;SELECT *FROM custshop;5. 倍增零件表的数据,多次重复执行,直到总记录数达到50万;INSERT INTO partSELECT partkey+(SELECT MAX(partkey)FROM part),name, mfgr,brand,type,size,container,retailprice,commentFROM part ;6.上海黎顺服装经营部供应的所有零件的供应成本下降10%UPDATE partsuppSET supplycost=supplycost*0.9WHERE suppkey=(SELECT suppkeyFROM supplierWHERE name='上海黎顺服装经营部');7.利用part表中的零售价来修改lineitem表中的extendedpriceUPDATE lineitem SET extendedprice=retailprice*quantityFROM partWHERE part.partkey=lineitem.partkey;8.删除顾客“阿波罗”的所有订单记录SELECT COUNT(linenumber)/*先查询顾客阿波罗有多少订单,然后进行删除*/FROM lineitemWHERE orderkey IN ( SELECT orderkey FROM orders WHERE custkey = ( SELECT custkey FROM customer WHERE name='阿波罗' ) )DELETEFROM lineitemWHERE orderkey IN ( SELECT orderkey FROM orders WHERE custkey = ( SELECT custkey FROM customer WHERE name='阿波罗' ) )DELETE FROM ordersWHERE custkey=(SELECT custkeyFROM customerWHERE name='阿波罗');
五、参考结果
2.插入一条订单记录以及在插入后进行查询的结果
3.把中国国籍顾客放入新的顾客表以及插入后查询的结果
4.在顾客购物统计表中插入顾客信息、购物总数和总价等信息以及查询结果
5.倍增零件表数据时,执行第二次和第三次的结果
6.更新上海黎顺服装经营部所有零件供应成本的结果
7.修改lineitem表中的extendedprice结果显示
8.查询并删除顾客阿波罗订单记录的结果
六、注意
1.在插入记录的时候,经常会发生错误,一个原因是插入的数据类型或个数与表格定义的列的类型和个数不一致,另一个原因是违背了完整性约束,原本输入的第一个属性值为15,运行错误,系统提示不能重复插入主键。因此我认为在更新数据之前最好先查询一下已经存在的数据,这样做能够减少之后更新的错误。
2.关于删除操作,DELETE语句删除的是表中的数据,而不是表格的定义;删除操作的时候要格外注意参照完整性,在题目“删除顾客‘阿波罗’的所有订单记录”中,因为订单明细表参照了订单表,此时若先删除订单表,则订单明细表的订单编号一列没有可以参照的列,违反了参照完整性,因此应该先删除参照表中的数据,再删除被参照表中的数据。