SQL总复习练习.doc

上传人:汽*** 文档编号:564327639 上传时间:2024-01-21 格式:DOC 页数:9 大小:60.20KB
返回 下载 相关 举报
SQL总复习练习.doc_第1页
第1页 / 共9页
SQL总复习练习.doc_第2页
第2页 / 共9页
SQL总复习练习.doc_第3页
第3页 / 共9页
SQL总复习练习.doc_第4页
第4页 / 共9页
SQL总复习练习.doc_第5页
第5页 / 共9页
点击查看更多>>
资源描述

《SQL总复习练习.doc》由会员分享,可在线阅读,更多相关《SQL总复习练习.doc(9页珍藏版)》请在金锄头文库上搜索。

1、练习1SQL案例活期存款中,“储户”通过“存取款单”和“储蓄所”发生联系。假定:“储户”包括:帐号,姓名,电话,地址,存款额;“储蓄所”包括:储蓄所编号,名称,电话,地址。假定一个储户可以在不同的储蓄所存取款。1E-R图储户帐号存款额地址电话姓名存取款单储蓄所编号帐号存取日期存取标志存取金额储蓄所储蓄所编号名称电话地址2创建一个数据库名为SAVE3按照下述创建相应的表储户表字段名称字段类型描述帐号int主键姓名Char(10)电话int地址Char(10)存款额money储蓄所字段名称字段类型描述储蓄所编号int主键姓名Char(10)电话int地址Char(10)存取款单(帐号, 储蓄所编号

2、, 存取日期为组合主键)字段名称字段类型描述帐号intNot null(与储户表中的帐号字段关联)储蓄所编号intNot null(与储蓄所表中的储蓄所编号字段关联)存取日期datetimeNot null存取标志bitNot null存取金额money说明:一个储户要存钱,实际上就是向存取款单中插入数据。银行的商业规则规定,一个人必须开了帐户才能存取钱,即“储户”表中存在要存取款人的帐号。并且这个人必须到储蓄所去存取钱,即你要插入到“存取款单”表的储蓄所编号列必须在“储蓄所”中存在。4创建一个触发器TR1完成当向“存取款单”表中插入数据时,如果存取标志=1则应该更改储户表让存款额加上存取金额

3、,如果存取标志=0则应该更改储户表让存款额减去存取金额,如果余额不足显示余额不足错误,交易取消。5创建一个视图显示用户帐号、用户姓名、存款额和所在银行。6创建存储过程INPUT_PROC,OUTPUT_PROC分别用于存款和取款,即向存取款单中插入数据答案部分-创建触发器create trigger tr1on 存取款单for insertasdeclare bz int,money money,zh intselect bz=存取标志,money=存取金额,zh=帐号from insertedif bz=0beginupdate 储户 set 存款额=存款额-money where 帐号=z

4、hdeclare sy moneyselect sy=存款额 from 储户 where 帐号=zhif sy=3000 显示待遇较好,=4000 高用一条sql语句显示所有员工的工资号、员工号、薪水和薪水等级7、为提高员工的生活水平,公司决定进行加薪,对每个员工加薪200,如果有员工的薪水2500,则继续加薪直到所有人的薪水都大于等于2500。8、工人布什由于严重的失误,导致公司损失巨大,现决定扣除其基本工资2000,请用事务进行扣除,如果扣除成功,显示:已扣除成功,失败,回滚,显示:违反劳动法,不能扣除。9、为EmployeeInfo表中的Emp_code建一个唯一聚集索引(sql语句)1

5、0、为了方便财务部门快速查到员工的工资情况,创建一个视图要求显示员工的姓名、身份证号,基本工资,职务。select i.Emp_name,i.Emp_age,s.ESal_type,s.ESal_salary from EmployeeInfo as i inner join EmployeeSalary as s on i.Emp_id=s.Emp_id where i.Emp_sex=男select i.Emp_name,i.Emp_age,s.ESal_type,s.ESal_salary from EmployeeInfo as i left outer join EmployeeSa

6、lary as s on i.Emp_id=s.Emp_id where i.Emp_sex=男select Emp_age from EmployeeInfo where Emp_name=默克尔select Emp_name,Emp_age,Emp_address from EmployeeInfo where Emp_age(select Emp_age from EmployeeInfo where Emp_name=默克尔)declare age intselect age=Emp_age from EmployeeInfo where Emp_name=默克尔select Emp_

7、name,Emp_age,Emp_address from EmployeeInfo where Emp_ageageselect s.ESal_salary from EmployeeInfo as i inner join EmployeeSalary as s on i.Emp_id=s.Emp_id where i.Emp_address=俄罗斯declare id intselect id=Emp_id from EmployeeInfo where Emp_address=俄罗斯select ESal_salary from EmployeeSalary where Emp_id=

8、id-联结查询和case的综合应用-select i.Emp_name as 姓名,工资=casewhen s.ESal_type=普通工人 then s.ESal_salary+s.Esal_salary*0.3when s.ESal_type=主任 then s.ESal_salary+s.Esal_salary*0.5else s.ESal_salary+s.Esal_salary*0.8endfrom EmployeeInfo as i inner join EmployeeSalary as s on i.Emp_id=s.Emp_iddeclare avgsalary intselect avgsalary=avg(ESal_salary) from EmployeeSalaryif(avgsalary=3000)print 平均工资为+convert(nvarchar(20),avgsalary)+待遇较好elseprint 平均工资为+convert(nvarchar(20),avgsalary)+待遇较差select ESal_id as 工资编号,Emp_id as 员工编号

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 社会民生

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号