收藏 分销(赏)

石油大学(华东)数据库原理实验答案(sql语句).doc

上传人:w****g 文档编号:11124522 上传时间:2025-07-02 格式:DOC 页数:36 大小:797.97KB 下载积分:12 金币
下载 相关 举报
石油大学(华东)数据库原理实验答案(sql语句).doc_第1页
第1页 / 共36页
石油大学(华东)数据库原理实验答案(sql语句).doc_第2页
第2页 / 共36页


点击查看更多>>
资源描述
实验三 /*CREATE TABLE UNITNO(单位代码 VARCHAR(20), 单位名称 VARCHAR(30) ); CREATE TABLE OILWELL(井号 VARCHAR(20), 井别 VARCHAR(20), 单位代码 VARCHAR(20), ); CREATE TABLE CONSTRUCTIONUNIT(施工单位名称 VARCHAR(30) ); CREATE TABLE GOODSNO(物码 VARCHAR(20), 名称规格 VARCHAR(30), 计量单位 VARCHAR(20) ); CREATE TABLE COST(单据号 VARCHAR(20), 预算单位 VARCHAR(20), 井号 VARCHAR(20), 预算金额 FLOAT, 预算人 VARCHAR(20), 预算日期 DATE, 开工日期 DATE, 完工日期 DATE, 施工单位 VARCHAR(30), 施工内容 VARCHAR(50), 材料费 FLOAT, 人工费 FLOAT, 设备费 FLOAT, 其他费用 FLOAT, 结算金额 FLOAT, 结算人 VARCHAR(20), 结算日期 DATE, 入账金额 FLOAT, 入账人 VARCHAR(20), 入账日期 DATE ); CREATE TABLE MATERIALPRICE(单据号 VARCHAR(20), 物码 VARCHAR(20), 消耗数量 BIGINT, 单价 FLOAT ); */ /*INSERT INTO UNITNO(单位代码,单位名称)VALUES('1122','采油厂'); INSERT INTO UNITNO(单位代码,单位名称)VALUES('112201','采油一矿'); INSERT INTO UNITNO(单位代码,单位名称)VALUES('112202','采油二矿'); INSERT INTO UNITNO(单位代码,单位名称)VALUES('112201001','采油一矿一队'); INSERT INTO UNITNO(单位代码,单位名称)VALUES('112201002','采油一矿二队'); INSERT INTO UNITNO(单位代码,单位名称)VALUES('112201003','采油一矿三队'); INSERT INTO UNITNO(单位代码,单位名称)VALUES('112202001','采油二矿一队'); INSERT INTO UNITNO(单位代码,单位名称)VALUES('112202002','采油二矿二队'); INSERT INTO OILWELL(井号,井别,单位代码)VALUES('y001','油井','112201001'); INSERT INTO OILWELL(井号,井别,单位代码)VALUES('y002','油井','112201001'); INSERT INTO OILWELL(井号,井别,单位代码)VALUES('y003','油井','112201002'); INSERT INTO OILWELL(井号,井别,单位代码)VALUES('s001','水井','112201002'); INSERT INTO OILWELL(井号,井别,单位代码)VALUES('y004','油井','112201003'); INSERT INTO OILWELL(井号,井别,单位代码)VALUES('s002','水井','112201001'); INSERT INTO OILWELL(井号,井别,单位代码)VALUES('s003','水井','112201001'); INSERT INTO OILWELL(井号,井别,单位代码)VALUES('y005','油井','112201002'); INSERT INTO CONSTRUCTIONUNIT(施工单位名称)VALUES('作业公司作业一队'); INSERT INTO CONSTRUCTIONUNIT(施工单位名称)VALUES('作业公司作业二队'); INSERT INTO CONSTRUCTIONUNIT(施工单位名称)VALUES('作业公司作业三队'); INSERT INTO GOODSNO(物码,名称规格,计量单位)VALUES('wm001','材料一','吨'); INSERT INTO GOODSNO(物码,名称规格,计量单位)VALUES('wm002','材料二','米'); INSERT INTO GOODSNO(物码,名称规格,计量单位)VALUES('wm003','材料三','桶'); INSERT INTO GOODSNO(物码,名称规格,计量单位)VALUES('wm004','材料四','袋'); INSERT INTO COST(单据号,预算单位,井号,预算金额,预算人,预算日期,开工日期,完工日期,施工单位,施工内容,材料费, 人工费,设备费,其他费用,结算金额,结算人,结算日期,入账金额,入账人,入账日期)VALUES('ZY2016001','112201001','y001','10000.00','张三','2016-5-1','2016-5-4','2016-5-25','作业公司作业一队', '堵漏','7000.00','2500.00','1000.00','1400.00','11900.00','李四','2016-5-26','11900.00','王五','2016-5-28'); INSERT INTO COST(单据号,预算单位,井号,预算金额,预算人,预算日期,开工日期,完工日期,施工单位,施工内容,材料费, 人工费,设备费,其他费用,结算金额,结算人,结算日期,入账金额,入账人,入账日期)VALUES('ZY2016002','112201002','y003','11000.00','张三','2016-5-1','2016-5-4','2016-5-23','作业公司作业二队', '检泵','6000.00','1500.00','1000.00','2400.00','10900.00','李四','2016-5-26','10900.00','王五','2016-5-28'); INSERT INTO COST(单据号,预算单位,井号,预算金额,预算人,预算日期,开工日期,完工日期,施工单位,施工内容,材料费, 人工费,设备费,其他费用,结算金额,结算人,结算日期,入账金额,入账人,入账日期)VALUES('ZY2016003','112201002','s001','10500.00','张三','2016-5-1','2016-5-6','2016-5-23','作业公司作业二队', '调剖','6500.00','2000.00','500.00','1400.00','10400.00','李四','2016-5-26','10400.00','王五','2016-5-28'); INSERT INTO COST(单据号,预算单位,井号,预算金额,预算人,预算日期,开工日期,完工日期,施工单位,施工内容,材料费, 人工费,设备费,其他费用,结算金额,结算人,结算日期,入账金额,入账人,入账日期)VALUES('ZY2016004','112202001','s002','12000.00','张三','2016-5-1','2016-5-4','2016-5-24','作业公司作业三队', '解堵','6000.00','2000.00','1000.00','1600.00','10600.00','李四','2016-5-26','10600.00','赵六','2016-5-28'); INSERT INTO COST(单据号,预算单位,井号,预算金额,预算人,预算日期,开工日期,完工日期,施工单位,施工内容,材料费, 人工费,设备费,其他费用,结算金额,结算人,结算日期)VALUES('ZY2016005','112202002','y005','12000.00','张三','2016-5-1','2016-5-4','2016-5-28','作业公司作业三队', '防砂','7000.00','1000.00','2000.00','1300.00','11300.00','李四','2016-6-1'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016001','wm001','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016001','wm002','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016001','wm003','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016001','wm004','100','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016002','wm001','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016002','wm002','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016002','wm003','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016003','wm001','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016003','wm002','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016003','wm003','250','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016004','wm001','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016004','wm002','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016004','wm004','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016005','wm001','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016005','wm002','200','10.00'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('ZY2016005','wm004','300','10.00'); UPDATE COST SET 人工费=人工费+200.00,结算金额=结算金额+200.00 WHERE 单据号='zy2016005'; DELETE FROM COST WHERE 入账金额 IS NULL OR 入账人 IS NULL OR 入账日期 IS NULL; BEGIN TRAN UPDATE COST SET 人工费=人工费+200.00,结算金额=结算金额+200.00 WHERE 单据号='zy2016005'; DELETE FROM COST WHERE 入账金额 IS NULL OR 入账人 IS NULL OR 入账日期 IS NULL; ROLLBACK TRAN 实验四 CREATE INDEX yDATE ON COST(预算日期); CREATE INDEX jDATE ON COST(结算日期); CREATE INDEX rDATE ON COST(入账日期); SELECT DISTINCT * FROM COST,UNITNO WHERE 单位名称='采油一矿二队'AND 预算单位=单位代码 AND 入账日期>='2016-5-1'AND 入账日期<='2016-5-28' AND 预算金额 IS NOT NULL AND 预算日期 IS NOT NULL AND 预算人 IS NOT NULL; SELECT DISTINCT * FROM COST,UNITNO WHERE 单位名称='采油一矿二队'AND 预算单位=单位代码 AND 入账日期>='2016-5-1'AND 入账日期<='2016-5-28' AND 结算金额 IS NOT NULL AND 结算人 IS NOT NULL AND 结算日期 IS NOT NULL; SELECT DISTINCT MATERIALPRICE.单据号,物码,消耗数量,单价 FROM COST,MATERIALPRICE,UNITNO WHERE 单位名称='采油一矿二队'AND 预算单位=单位代码 AND 入账日期>='2016-5-1'AND 入账日期<='2016-5-28'AND MATERIALPRICE.单据号=COST.单据号; SELECT DISTINCT * FROM COST,UNITNO WHERE 单位名称='采油一矿二队'AND 预算单位=单位代码 AND 入账日期>='2016-5-1'AND 入账日期<='2016-5-28' AND 入账金额 IS NOT NULL AND 入账人 IS NOT NULL AND 入账日期 IS NOT NULL; SELECT 预算总额=SUM(DISTINCT 预算金额) FROM UNITNO,COST WHERE 单位名称='采油一矿二队'AND 预算单位=单位代码 AND 入账日期>='2016-5-1'AND 入账日期<='2016-5-28'; SELECT 结算总额=SUM(DISTINCT 结算金额) FROM UNITNO,COST WHERE 单位名称='采油一矿二队'AND 预算单位=单位代码 AND 入账日期>='2016-5-1'AND 入账日期<='2016-5-28'; SELECT 入账总额=SUM(DISTINCT 入账金额) FROM UNITNO,COST WHERE 单位名称='采油一矿二队'AND 预算单位=单位代码 AND 入账日期>='2016-5-1'AND 入账日期<='2016-5-28'; SELECT 一矿入账总额=SUM(DISTINCT 入账金额) FROM UNITNO,COST WHERE 单位名称 LIKE '采油一矿%'AND 预算单位=单位代码 AND 入账日期>='2016-5-1'AND 入账日期<='2016-5-28'; SELECT DISTINCT 入账人 FROM COST WHERE 入账人 IS NOT NULL; SELECT DISTINCT 单据号 FROM COST WHERE 结算日期>='2016-5-1' AND 结算日期<='2016-5-28' AND 入账金额 IS NULL AND 结算金额 IS NOT NULL ; SELECT DISTINCT 单据号,入账金额 FROM COST,UNITNO WHERE 单位名称='采油一矿二队'AND 预算单位=单位代码 ORDER BY 入账金额 DESC; SELECT 单位名称,结算金额总和=SUM(DISTINCT 结算金额),项目数=COUNT(DISTINCT 结算金额) FROM COST,UNITNO WHERE 预算单位=单位代码 GROUP BY 单位名称; SELECT distinct 单据号,物码,消耗数量,单价 FROM MATERIALPRICE WHERE 物码 IN( SELECT 物码 FROM GOODSNO WHERE 名称规格='材料三') AND 单价*消耗数量>=2000; SELECT DISTINCT 单据号 FROM COST WHERE 施工单位 ='作业公司作业二队'; SELECT 单据号,施工单位 FROM COST WHERE 施工单位 ='作业公司作业二队' UNION SELECT 单据号,施工单位 FROM COST WHERE 施工单位 ='作业公司作业一队'; SELECT DISTINCT 施工单位 FROM COST,OILWELL,UNITNO WHERE 预算单位=UNITNO.单位代码 AND UNITNO.单位代码=OILWELL.单位代码 AND 单位名称 LIKE '采油一矿%'; CREATE TABLE 数据表(施工单位 VARCHAR(30), 年月 VARCHAR(20), 结算金额 FLOAT ); INSERT INTO 数据表(施工单位,年月,结算金额) (SELECT 施工单位,YEAR(结算日期)*100+MONTH(结算日期),SUM(结算金额) FROM COST GROUP BY 施工单位,YEAR(结算日期)*100+MONTH(结算日期)); UPDATE COST SET 结算人='李兵' WHERE 预算单位 IN( SELECT 单位代码 FROM UNITNO WHERE 单位代码=预算单位 AND 单位名称 Like '采油一矿%' ); DELETE FROM COST WHERE 预算单位 IN (SELECT 单位代码 FROM UNITNO WHERE 单位代码=预算单位 AND 单位名称 Like '采油一矿%'); BEGIN TRAN UPDATE COST SET 结算人='李兵' WHERE 预算单位 IN( SELECT 单位代码 FROM UNITNO WHERE 单位代码=预算单位 AND 单位名称 Like '采油一矿%' ); DELETE FROM COST WHERE 预算单位 IN( SELECT 单位代码 FROM UNITNO WHERE 单位代码=预算单位 AND 单位名称 Like '采油一矿%'); ROLLBACK TRAN DROP INDEX yDATE ON COST; DROP INDEX jDATE ON COST; DROP INDEX rDATE ON COST; 实验五 ALTER TABLE 数据表 ADD 备注 CHAR; SELECT * FROM 数据表; ALTER TABLE 数据表 ALTER COLUMN 施工单位 VARCHAR(30) NOT NULL; ALTER TABLE 数据表 ADD PRIMARY KEY(施工单位); DELETE FROM 数据表; DROP TABLE 数据表 ; ALTER TABLE UNITNO ALTER COLUMN 单位代码 VARCHAR(20) NOT NULL; ALTER TABLE UNITNO ADD CONSTRAINT UNI_NUM PRIMARY KEY(单位代码); ALTER TABLE OILWELL ALTER COLUMN 井号 VARCHAR(20) NOT NULL; ALTER TABLE OILWELL ADD CONSTRAINT WELL_NUM PRIMARY KEY(井号); ALTER TABLE GOODSNO ALTER COLUMN 物码 VARCHAR(20) NOT NULL; ALTER TABLE GOODSNO ADD CONSTRAINT GOOD_NUM PRIMARY KEY(物码); ALTER TABLE COST ALTER COLUMN 单据号 VARCHAR(20) NOT NULL; ALTER TABLE COST ADD CONSTRAINT COST_NUM PRIMARY KEY( 单据号); ALTER TABLE MATERIALPRICE ALTER COLUMN 单据号 VARCHAR(20) NOT NULL; ALTER TABLE MATERIALPRICE ALTER COLUMN 物码 VARCHAR(20) NOT NULL; ALTER TABLE MATERIALPRICE ADD PRIMARY KEY(单据号,物码); ALTER TABLE CONSTRUCTIONUNIT ALTER COLUMN 施工单位名称 VARCHAR(30) NOT NULL; ALTER TABLE CONSTRUCTIONUNIT ADD CONSTRAINT UNI_NAME PRIMARY KEY(施工单位名称); INSERT INTO MATERIALPRICE VALUES('zy2016001','wm004',100,10); INSERT INTO MATERIALPRICE VALUES('zy2016002',NULL,200,10); ALTER TABLE OILWELL ALTER COLUMN 单位代码 VARCHAR(20) NOT NULL; ALTER TABLE OILWELL ADD CONSTRAINT UNI_NUM2 FOREIGN KEY(单位代码) REFERENCES UNITNO(单位代码); ALTER TABLE COST ALTER COLUMN 井号 VARCHAR(20) NOT NULL; ALTER TABLE COST ADD CONSTRAINT WELL_NUM2 FOREIGN KEY(井号) REFERENCES OILWELL(井号); ALTER TABLE MATERIALPRICE ALTER COLUMN 物码 VARCHAR(20) NOT NULL; ALTER TABLE MATERIALPRICE ADD CONSTRAINT GOOD_NUM2 FOREIGN KEY(物码) REFERENCES GOODSNO(物码); INSERT INTO OILWELL(井号,井别,单位代码)VALUES('y007','油井','112203002'); INSERT INTO MATERIALPRICE(单据号,物码,消耗数量,单价)VALUES('zy2016007','wm006','100','10.00'); UPDATE COST SET 施工单位='作业公司作业五队' WHERE 单据号='ZY2016001'; DELETE FROM UNITNO WHERE 单位名称='采油二矿二队' AND 单位代码='112202002'; UPDATE GOODSNO SET 物码='wm04' WHERE 物码='wm004'; BEGIN TRAN UPDATE COST SET 施工单位='作业公司作业五队' WHERE 单据号='ZY2016001'; DELETE FROM UNITNO WHERE 单位名称='采油二矿二队' AND 单位代码='112202002'; UPDATE GOODSNO SET 物码='wm04' WHERE 物码='wm004'; ROLLBACK TRAN ALTER TABLE UNITNO ALTER COLUMN 单位名称 VARCHAR(30) NOT NULL; ALTER TABLE UNITNO ADD UNIQUE(单位名称); ALTER TABLE OILWELL ALTER COLUMN 单位代码 VARCHAR(20) NOT NULL; ALTER TABLE OILWELL ADD CONSTRAINT OIL_CHECK CHECK(井别 IN('油井','水井')); ALTER TABLE GOODSNO ALTER COLUMN 名称规格 VARCHAR(30) NOT NULL; ALTER TABLE GOODSNO ADD UNIQUE(名称规格); ALTER TABLE GOODSNO ALTER COLUMN 计量单位 VARCHAR(20) NOT NULL; ALTER TABLE MATERIALPRICE ALTER COLUMN 消耗数量 BIGINT NOT NULL; ALTER TABLE MATERIALPRICE ALTER COLUMN 单价 FLOAT NOT NULL; ALTER TABLE COST ALTER COLUMN 预算人 VARCHAR(20) NOT NULL; BEGIN TRANSACTION GO CREATE VIEW COST_PRICE AS SELECT COST.*,物码,消耗数量,单价 FROM COST,MATERIALPRICE where COST.单据号=MATERIALPRICE.单据号; SELECT 单据号,物码 FROM COST_PRICE WHERE 物码='wm002'; SELECT 单据号,单价 FROM COST_PRICE WHERE 单据号='ZY2016001'and 物码='wm001'; GO CREATE VIEW YUSUAN AS SELECT 单据号,预算单位,井号,预算金额,预算人,预算日期 FROM COST; INSERT INTO YUSUAN VALUES('zy2016008','112202002','y005',10000,'张三', '2016-07-02'); ROLLBACK */ 实验六 BEGIN TRANSACTION INSERT INTO COST VALUES('zy2016006','112202002','y005',10000,'张三', '07-01-2016' ,'07-04-2016','07-25-2016','作业公司作业一队','堵漏',7000,2500,1000,1400,11900,'李四','07-26-2016',11900,'王五','07-28-2016'); IF @@ERROR<>0 BEGIN PRINT '第一条插入出错' ROLLBACK END ELSE BEGIN PRINT '第一条插入成功' COMMIT TRANSACTION END BEGIN TRANSACTION insert into MATERIALPRICE values('zy2016006','wm001',200,10); IF @@ERROR<>0 BEGIN PRINT '第二条插入出错' ROLLBACK END ELSE BEGIN PRINT '第二条插入成功' COMMIT TRANSACTION END BEGIN TRANSACTION insert into MATERIALPRICE values('zy2016006','wm002',200,10); IF @@ERROR<>0 BEGIN PRINT '第三条插入出错' ROLLBACK END ELSE BEGIN PRINT '第三条插入成功' COMMIT TRANSACTION END BEGIN TRANSACTION insert into MATERIALPRICE values('zy2016006','wm003',200,10); IF @@ERROR<>0 BEGIN PRINT '第四条插入出错' ROLLBACK END ELSE BEGIN PRINT '第四条插入成功' COMMIT TRANSACTION END BEGIN TRANSACTION insert into MATERIALPRICE values('zy2016006','wm004',100,10); IF @@ERROR<>0 BEGIN PRINT '第五条插入出错' ROLLBACK END ELSE BEGIN PRINT '第五条插入成功' COMMIT TRANSACTION END BEGIN TRANSACTION DECLARE COST_CUR SCROLL CURSOR FOR SELECT * FROM COST; OPEN COST_CUR; DECLARE @单据号 VARCHAR(20) DECLARE @预算单位 VARCHAR(20) DECLARE @井号 VARCHAR(20) DECLARE @预算金额 FLOAT DECLARE @预算人 VARCHAR(20) DECLARE @预算日期 DATE DECLARE @开工日期 DATE DECLARE @完工日期 DATE DECLARE @施工单位 VARCHAR(30) DECLARE @施工内容 VARCHAR(50) DECLARE @材料费 FLOAT DECLARE @人工费 FLOAT DECLARE @设备费 FLOAT DECLARE @其他费用 FLOAT DECLARE @结算金额 FLOAT DECLARE @结算人 VARCHAR(20) DECLARE @结算日期 DATE DECLARE @入账金额 FLOAT DECLARE @入账人 VARCHAR(20) DECLARE @入账日期 DATE PRINT '单据号 '+'预算单位 '+'井号 '+'预算金额 '+'预算人'+' 预算日期' +' 开工日期'+' 完工日期'+' 施工单位'+'施工内容'+'材料费'+' 人工费' +' 设备费'+' 其它费用'+' 结算金额'+' 结算人'+'结算日期'+' 入账金额' +' 入账人'+' 入账日期' FETCH FIRST FROM COST_CRU INTO @单据号,@预算单位,@井号,@预算金额,@预算人,@预算日期, @开工日期,@完工日期,@施工单位,@施工内容,@材料费,@人工费, @设备费,@其他费用,@结算金额,@结算人,@结算日期,@入账金额,@入账人,@入账日期 WHILE(@@FETCH_STATUS=0) BEGIN PRINT +@单据号+@预算单位 +@井号 +@预算金额 +' '+@预算人+' '+@预算日期 +' '+@开工日期 +' '+@完工日期 +' '+@施工单位 +' '+@施工内容 +@材料费+@人工费 +@设备费 +@其他费用 +@结算金额 +' ' +@结算人 +' '+
展开阅读全文

开通  VIP会员、SVIP会员  优惠大
下载10份以上建议开通VIP会员
下载20份以上建议开通SVIP会员


开通VIP      成为共赢上传

当前位置:首页 > 教育专区 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        抽奖活动

©2010-2025 宁波自信网络信息技术有限公司  版权所有

客服电话:0574-28810668  投诉电话:18658249818

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :微信公众号    抖音    微博    LOFTER 

客服