资源描述:
《数据库技术验四.doc》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、课程名称数据库技术实验成绩实验名称视图的使用及T-SQL编程学号姓名班级日期实验目的:1.熟悉视图的概念和作用,掌握视图的创建方法;2.掌握如何查询和修改视图;3.掌握用户自定义数据类型的使用;4.掌握变量、运算符和各种控制语句的使用;5.掌握系统函数及用户自定义函数的使用;实验平台:利用RDBMS(SQLServer2008)及其交互查询工具(查询分析器)来操作T-SQL语言;实验内容:1.视图的使用(1)创建YGGL数据库上的视图Employees_view,视图包含员工号码,姓名,所在部门名称和实际收入这
2、几列。createviewEmployees_view(编号,姓名,部门名称,实际收入)asselectEmployees.编号,姓名,部门名称,收入-支出fromEmployees,Salary,DepartmentswhereEmployees.编号=Salary.编号andEmployees.部门号=Departments.部门号(2)从视图Employees_view中查询出姓王的员工的实际收入。SELECT实际收入,姓名FROMEmployees_viewWHERE姓名like'王%'(3)视图Emp
3、loyees_view中可以插入和删除数据吗?其中实际收入字段可以修改吗,为什么?不可以,因为视图是从基表中导出的逻辑表,它不象基表一样物理地存贮在数据库中,视图没有自己独立的数据实体。实际收入也是通过数据库中数据计算得出的。(1)以上操作执行完成之后,用T-SQL语句删除视图Employees_view。dropviewEmployees_view2.T-SQL编程(1)使用图形方式和T-SQL语句分别创建用户自定义数据类型SEX_TYPE,用于描述性别。CREATETYPESEX_TYPEFROMnchar
4、(10)notnull(2)使用图形方式和T-SQL语句分别修改YGGL数据库的Employees表的sex字段的数据类型为SEX_TYPE。altertableEmployeesaltercolumn性别SEX_TYPE(3)定义一个变量,用于描述YGGL数据库的Salary表中000001号员工的实际收入,然后查询该变量。Declare@xintset@x=(select收入-支出fromSalarywhere编号='000001')select@x(4)使用RAND()函数产生一个0~1的随机数;使用SQ
5、UARE函数获得一个数的平方;使用SQRT函数返回一个数的平方根。declare@xintset@x=0selectrand()DECLARE@numfloatSET@num=8SELECTSQUARE(@num)DECLARE@numfloatSET@num=64SELECTSQrt(@num)(2)求财务部收入最高的员工姓名。SELECT姓名FROMEmployees,Salary,DepartmentsWHERE收入>=ALL(SELECT收入FROMEmployees,Salary,Department
6、sWHEREEmployees.编号=Salary.编号ANDEmployees.部门号=Departments.部门号AND部门名称='财务部')ANDEmployees.编号=Salary.编号ANDEmployees.部门号=Departments.部门号AND部门名称='财务部'(3)查询姓名为3个字的员工的基本信息。SELECT*fromEmployeesWHERELEN(Employees.姓名)=3(4)显示Employees表中年龄大于40岁的员工的编号,姓名和所在部门信息。SELECTEmpl
7、oyees.编号,出生日期,姓名,Departments.部门名称fromEmployees,DepartmentsWHERE(出生日期)<'1975-01-01'andEmployees.部门号=Departments.部门号(2)判断姓名为“王林”的员工实际收入是否高于3000元,如果是,则显示其收入,否则显示“收入不高于3000元”。IFEXISTS(select收入fromSalary,Employeeswhere(收入-支出)>3000and姓名=(select姓名whereSalary.编号=Emp
8、loyees.编号and姓名='王林'))select收入fromSalary,Employeeswhere(收入-支出)>3000and姓名=(select姓名whereSalary.编号=Employees.编号and姓名='王林')elseselect'收入不高于3000'(9)使用循环输出一个用“*”组成的三角形。declare@xint,@yintset@x=0while@x