数据库原理 第一次上机实验

SQL练习1

实验目的

  1. 掌握基本表的定义;
  2. 掌握插入数据、修改数据和删除数据的常用形式。

实验内容

1.新建一个数据库,命名为zyxt。

2. 根据以下要求,用建表语句定义所需的数据表

  1. 该数据库记录某采油厂对油水井实施作业时所消耗的成本。(作业:为保证油水井正常生产所实施的工程项目)
  2. 成本的消耗(成本表costTable)分为预算、结算、入账三个状态。
    预算:采油队向管理部门提出作业申请,并经管理部门批准后,由管理部门负责录入。
    结算:某次作业施工结束后,由管理部门与施工单位共同核算各种成本,由管理部门负责录入。
    入账:结算后,财务部门将成本计入采油厂账目,由财务部门录入。
    (一)、 预算状态时需要录入的数据:(★:字符型 ◆数字型 ▲日期型)
    ★单据号:某一作业项目的编号 invoice(varchar(16))
    ★预算单位:指需要对油水井实施作业的采油队代码 departmentId(varchar(16))
    ★井号:需要实施作业的油水井 oilWall(varchar(16))
    ◆预算金额 budgetAmount(decimal(10,2))
    ★预算人 budgetPerson(varchar(16))
    ▲预算日期 budgetDate(datetime))
    (二)、 结算状态时需要录入的数据:(★:字符型 ◆数字型 ▲日期型)
    调出某条预算记录,录入以下数据:
    ▲开工日期 startDate(datetime)
    ▲完工日期 endDate(datetime)
    ★施工单位 constructionUnit(varchar(16))
    ★施工内容 constructionContent(varchar(16))
    ◆材料费(要求另外用表单独记录材料消耗的明细) materialCost(decimal(10,2))
    ◆人工费 presonCost(decimal(10,2))
    ◆设备费 equipmentCost(decimal(10,2))
    ◆其它费用 otherCost(decimal(10,2))
    ◆结算金额(材料费+人工费+设备费+其它费用)allCost(decimal(10,2))
    ★结算人 settlePreson(varchar(16))
    ▲结算日期 settleDate(datetime)
    (三)、 入账状态时需要录入的数据:(★:字符型 ◆数字型 ▲日期型)
    调出某条结算记录,录入以下数据:
    ◆入账金额 recordAmount(decimal(10,2))
    ★入账人 recordPerson(varchar(16))
    ▲入账日期 recordDate(datetime)

材料消耗表 materialCostDetail(★单据号 invoice(varchar(16)) ★物码 materialId(decimal(10,2)) ◆消耗数量 consumeQuantity(decimal(10,2)) )

  1. 为了避免出现数据的不一致和方便数据录入,要求定义以下基础表:(★:字符型)

单位表 departTable
★单位代码 departID(varchar(16))
★单位名称 departName(varcahr(16))

油水井表 oilWallTable
★井号 oilWallId(varcahr(16))
★井别:油井/水井 oilWallType(varcahr(16))
★单位代码 (表示某口井由哪个单位负责管理) departID(varcharID(16))

材料表 materiaTable
★物码 materialId(varchar(16))
★名称 materialName(varchar(16))
★计量单位 measureUnit(varchar(16))
◆单价 Price(decimal(10,2))

3. 用数据插入语句录入以下数据

  1. 单位表(departTable) 插入数据
departIDdepartName
1122productionPlant
112201oilOne
112202oilTwo
112201001oilOneFirst
112201002oilOneSecond
112201003oilOneThird
112202001oilTwoFirst
112202002oilTwoSecond
  1. 油井表(oilWallTable) 插入数据
oilWallIdoilWallTypedepartID
y001oilWall112201001
y002oilWall112201001
y003oilWall112201002
s001waterWall112201002
y004oilWall112201003
s002waterWall112202001
s003waterWall112202001
y005oilWall112202002
  1. 材料表(materiaTable) 插入数据
materialIdmaterialNamemeasureUnitPrice
wm001firstt10
wm002secondm10
wm003thirdbucket10
wm004fourthbag10
  1. 成本表(costTable) 插入数据
invoicedepartmentIdoilWallbudgetAmountbudgetPersonbudgetDatestartDateendDateconstructionUnitconstructionContentmaterialCostpresonCostequipmentCostotherCostallCostsettlePresonsettleDaterecordAmountrecordPersonrecordDate
zy2016001112201001y00110000.00A2016-05-01 00:00:002016-05-04 00:00:002016-05-25 00:00:00companyFirstplugging7000.002500.001000.001400.0011900.00B2016-05-26 00:00:0011900.00C2016-05-28 00:00:00
zy2016002112201002y00311000.00A2016-05-01 00:00:002016-05-04 00:00:002016-05-23 00:00:00companySecondcheckPump6000.001500.001000.002400.0010900.00B2016-05-26 00:00:0010900.00C2016-05-28 00:00:00
zy2016003112201002s00110500.00A2016-05-01 00:00:002016-05-06 00:00:002016-05-23 00:00:00companySecondprofileControl6500.002000.00500.001400.0010400.00B2016-05-26 00:00:0010400.00C2016-05-28 00:00:00
zy2016004112202001s00212000.00A2016-05-01 00:00:002016-05-04 00:00:002016-05-24 00:00:00companyThirdunblock6000.002000.001000.001600.0010600.00B2016-05-26 00:00:0010600.00D2016-05-28 00:00:00
zy2016005112202002y00512000.00A2016-05-01 00:00:002016-05-04 00:00:002016-05-28 00:00:00companyThirdsandControl7000.001000.002000.001300.0011300.00B2016-06-01 00:00:0011300.00B2020-6-1 00:00:00
  1. 材料消耗表(materialCostDetail) 插入数据
invoicematerialIdconsumeQuantity
zy2016001wm001200
zy2016001wm002200
zy2016001wm003200
zy2016001wm004100
zy2016002wm001200
zy2016002wm002200
zy2016002wm003200
zy2016003wm001200
zy2016003wm002200
zy2016003wm003250
zy2016004wm001200
zy2016004wm002200
zy2016004wm004200
zy2016005wm001200
zy2016005wm002200
zy2016005wm004300

4. 完成以下操作

  1. 将编号为zy2016001的项目的presonCost、allCost和recordAmount增加200元。
//所有内容的代码
create database zyxt

CREATE TABLE costTable
( invoice VARCHAR(16),
 departmentId VARCHAR(16),
 oilWall VARCHAR(16),
 budgetAmount DECIMAL(10,2),
 budgetPerson VARCHAR(16),
 budgetDate DATETIME,
 startDate DATETIME,
 endDate DATETIME,
 constructionUnit VARCHAR(16),
 constructionContent VARCHAR(16),
 materialCost DECIMAL(10,2),
 presonCost DECIMAL(10,2),
   equipmentCost DECIMAL(10,2),
   otherCost DECIMAL(10,2),
   allCost DECIMAL(10,2),
   settlePreson VARCHAR(16),
   settleDate DATETIME,
 recordAmount DECIMAL(10,2),
 recordPerson VARCHAR(16),
 recordDate DATETIME
);

CREATE TABLE materialCostDetail
(  invoice VARCHAR(16),
   materialId VARCHAR(16),
   consumeQuantity DECIMAL(10,2) 
   
);

CREATE TABLE departTable
( departID VARCHAR(16),
  departName VARCHAR(16)
);

CREATE TABLE oilWallTable
( oilWallId VARCHAR(16),
  oilWallType VARCHAR(16),
  departID VARCHAR(16)
);

CREATE TABLE materiaTable
( materialId VARCHAR(16),
  materialName VARCHAR(16),
  measureUnit VARCHAR(16),
  Price DECIMAL(10,2)
);

INSERT INTO departTable 
VALUES("1122","productionPlant"),
('112201','oilOne'),
('112202','oilTwo'),
('112201001','oilOneFirst'),
('112201002','oilOneSecond'),
('112201003','oilOneThird'),
('112202001','oilTwoFirst'),
('112202002','oilTwoSecond')

INSERT INTO oilWallTable 
VALUES('y001','oilWall','112201001'),
('y002','oilWall','112201001'),
('y003','oilWall','112201002'),
("s001","waterWall","112201002"),
("y004","oilWall","112201003"),
("s002","waterWall","112202001"),
("s003","waterWall","112202001"),
("y005","oilWall","112202002")

INSERT INTO materiaTable
VALUES('wm001','first','t','10'),
('wm002','second','m','10'),
('wm003','third','bucket','10'),
('wm004','fourth','bag','10')

INSERT INTO costTable
VALUES('zy2016001','112201001','y001','10000.00','A','2016-05-01 00:00:00','2016-05-04 00:00:00','2016-05-25 00:00:00','companyFirst','plugging','7000.00','2500.00','1000.00','1400.00','11900.00	','B','2016-05-26 00:00:00','11900.00','C','2016-05-28 00:00:00'),
('zy2016002','112201002','y003','11000.00','A','2016-05-01 00:00:00','2016-05-04 00:00:00','2016-05-23 00:00:00','companySencond','checkPump','6000.00','1500.00','1000.00','2400.00','10900.00','B','2016-05-26 00:00:00','10900.00','C','2016-05-28 00:00:00'),
('zy2016003','112201002','s001','10500.00','A','2016-05-01 00:00:00','2016-05-04 00:00:00','2016-05-23 00:00:00','companySencond','profileControl','6500.00','2000.00','500.00','1400.00','10400.00','B','2016-05-26 00:00:00','10400.00','C','2016-05-28 00:00:00'),
('zy2016004','112201001','s002','12000.00','A','2016-05-01 00:00:00','2016-05-04 00:00:00','2016-05-24 00:00:00','companyThird','unblock','6000.00','2000.00','1000.00','1600.00','10600.00','B','2016-05-26 00:00:00','10600.00','D','2016-05-28 00:00:00'),
('zy2016005','112201002','y005','12000.00','A','2016-05-01 00:00:00','2016-05-04 00:00:00','2016-05-28 00:00:00','companyThird','sandControl','7000.00','1000.00','2000.00','1300.00','11300.00','B','2016-06-01 00:00:00','11300.00','B','2020-6-1 00:00:00')


INSERT 
INTO materialCostDetail(invoice,materialId,consumeQuantity) 
VALUES('zy2016001','wm001',200),
('zy2016001','wm002',200),
('zy2016001','wm003',200),
('zy2016001','wm004',100),
('zy2016002','wm001',200),
('zy2016002','wm002',200),
('zy2016002','wm003',200),  
('zy2016003','wm001',200),
('zy2016003','wm002',200),
('zy2016003','wm003',250),
('zy2016004','wm001',200),
('zy2016004','wm002',200),
('zy2016004','wm004',200),
('zy2016005','wm001',200),
('zy2016005','wm002',200),
('zy2016005','wm004',300);


UPDATE costTable SET presonCost = presonCost+200,allcost = allcost+200,recordAmount=recordAmount+200 
WHERE invoice ='zy2016001'
  • 5
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

RockyBlog

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值