南邮--数据库实验报告(共24页)_第1页
南邮--数据库实验报告(共24页)_第2页
南邮--数据库实验报告(共24页)_第3页
南邮--数据库实验报告(共24页)_第4页
南邮--数据库实验报告(共24页)_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、精选优质文档-倾情为你奉上数据库实验报告 ( 2012 / 2013 学年 第 二 学期)学 号 姓 名 指导教师 成 绩 一、数据库原理第一次实验【一】实验内容:数据库表的建立与管理【二】、实验目的:学习数据库及表的建立、删除、更新等操作。注:本次实验题目,除了特殊要求,以T-SQL为主,并将所有语句标注好题号,留存在查询界面上,方便检查。【三】、实验题目及其解答:1、创建一名为test的数据库;Solution:CREATE DATABASE test2、在“test”数据库中新建一张部门表 “部门”,输入列:name(char,10位),ID(char,7位),manager (char

2、,10位)各列均不能为空值。Solution:use testCREATE TABLE 部门 (ID CHAR(7) NOT NULL, name CHAR(10) NOT NULL, manager CHAR(10) NOT NULL)结果: 3、在“test”数据库中新建一张员工表,命名为“员工”。在表中输入以下各列: name(char,10位),personID(char,7位),Sex(char,7位),birthday(datetime),deptID(char,7位),各列均不能为空值。Solution:CREATE TABLE 员工 (name CHAR(10) NOT NUL

3、L, personID CHAR(7) NOT NULL, sex CHAR(7) NOT NULL, birthday datetime NOT NULL, deptID CHAR(7) NOT NULL)结果: 4、修改表的操作练习:1)将部门表中的列ID设为主键;2)将员工表中personID设为主键,并将deptID设置为外键,关联到部门表上的ID列;3)在部门表中,添加列quantity(char, 5); 4) 删除员工表中的列sex; 5)修改员工表中列name为(varchar,8)Solution:ALTER TABLE 部门 ADD CONSTRAINT C1 PRIMAR

4、Y KEY(ID)ALTER TABLE 员工 ADD CONSTRAINT C2 PRIMARY KEY( personID )ALTER TABLE 员工 ADD CONSTRAINT C3 FOREIGN KEY(deptID) REFERENCES 部门(ID)ALTER TABLE 部门 ADD quantity CHAR(5)ALTER TABLE 员工 DROP COLUMN sexALTER TABLE 员工 ALTER COLUMN name VARCHAR(8)结果: 5、1)在数据库test中新建表scores,输入以下列:ID (char,8位) 主键, C语言nume

5、ric(3,1) ,IT英语 numeric(3,1) ,数据库 numeric(3,1) ,软件基础 numeric(3,1) ,平均成绩 。四门学科都不能为空,并且平均成绩为四门学科的平均分; 2)为表scores中的四项成绩添加default约束:使其默认值为0; 3)为表scores中的四项成绩添加check约束:是每项成绩在0到100之间。Solution:CREATE TABLE scores (ID CHAR(8) PRIMARY KEY NOT NULL, C语言 NUMERIC(3,1) NOT NULL, IT英语 NUMERIC(3,1) NOT NULL, 数据库 NU

6、MERIC(3,1) NOT NULL, 软件基础 NUMERIC(3,1) NOT NULL, 平均成绩 AS(C语言+IT英语+数据库+软件基础)/4)ALTER TABLE scores ADD CONSTRAINT C语言 DEFAULT'0'FOR C语言ALTER TABLE scores ADD CONSTRAINT IT英语 DEFAULT'0'FOR IT英语ALTER TABLE scores ADD CONSTRAINT 数据库 DEFAULT'0'FOR 数据库ALTER TABLE scores ADD CONSTRAI

7、NT 软件基础 DEFAULT'0'FOR 软件基础ALTER TABLE scores ADD CONSTRAINT CK1 CHECK(C语言>=0 AND C语言<=100);ALTER TABLE scores ADD CONSTRAINT CK2 CHECK(IT英语>=0 AND IT英语 <=100);ALTER TABLE scores ADD CONSTRAINT CK3 CHECK(数据库>=0 AND 数据库<=100);ALTER TABLE scores ADD CONSTRAINT CK4 CHECK(软件基础&g

8、t;=0 AND 软件基础<=100);结果: 6、删除department表,并删除数据库test。Solution:DROP Table 部门;DROP DATABASE test;【四】实验一完整的代码:CREATE DATABASE test use testCREATE TABLE 部门 (ID CHAR(7) NOT NULL, name CHAR(10) NOT NULL, manager CHAR(10) NOT NULL)CREATE TABLE 员工 (name CHAR(10) NOT NULL, personID CHAR(7) NOT NULL, sex CHA

9、R(7) NOT NULL, birthday datetime NOT NULL, deptID CHAR(7) NOT NULL)ALTER TABLE 部门 ADD CONSTRAINT C1 PRIMARY KEY(ID)ALTER TABLE 员工 ADD CONSTRAINT C2 PRIMARY KEY( personID )ALTER TABLE 员工 ADD CONSTRAINT C3 FOREIGN KEY(deptID) REFERENCES 部门(ID)ALTER TABLE 部门 ADD quantity CHAR(5)ALTER TABLE 员工 DROP COLU

10、MN sexALTER TABLE 员工 ALTER COLUMN name VARCHAR(8)CREATE TABLE scores (ID CHAR(8) PRIMARY KEY NOT NULL, C语言 NUMERIC(3,1) NOT NULL, IT英语 NUMERIC(3,1) NOT NULL, 数据库 NUMERIC(3,1) NOT NULL, 软件基础 NUMERIC(3,1) NOT NULL, 平均成绩 AS(C语言+IT英语+数据库+软件基础)/4)ALTER TABLE scores ADD CONSTRAINT C语言 DEFAULT'0'FO

11、R C语言ALTER TABLE scores ADD CONSTRAINT IT英语 DEFAULT'0'FOR IT英语ALTER TABLE scores ADD CONSTRAINT 数据库 DEFAULT'0'FOR 数据库ALTER TABLE scores ADD CONSTRAINT 软件基础 DEFAULT'0'FOR 软件基础ALTER TABLE scores ADD CONSTRAINT CK1 CHECK(C语言>=0 AND C语言<=100);ALTER TABLE scores ADD CONSTRAI

12、NT CK2 CHECK(IT英语>=0 AND IT英语 <=100);ALTER TABLE scores ADD CONSTRAINT CK3 CHECK(数据库>=0 AND 数据库<=100);ALTER TABLE scores ADD CONSTRAINT CK4 CHECK(软件基础>=0 AND 软件基础<=100);DROP Table 部门;DROP DATABASE test;二、数据库原理第二次实验【一】、实验内容:查询技术的应用【二】、实验目的:1、掌握SELECT语句的基本语法2、掌握连接查询的表示3、掌握数据汇总的方法4、掌握

13、SELECT语句的GROUP BY子句的作用和使用方法5、掌握SELECT语句的ORDER BY 子句的作用和使用方法【三】、实验内容1、创建员工管理数据库(compy)及相应的四张表:Employees:员工信息表Departments:部门信息表Salary:员工薪水信息表Purchase:员工购物信息表各表中属性的定义可根据表中的记录加以设定,均以编号为主键,例如可定义Departments表结构如下:列名数据类型长度是否允许空值说明部门编号Char3否部门编号 主键部门名称Char 20否部门名称备注text16是备注向表中填入数据A、向Departments表中加入表2所示的记录编号

14、部门名称备注1财务部null2人力资源部null3生产部null4采购部null5销售部nullSolution:CREATE DATABASE compyuse compyCREATE TABLE Employees( 编号 CHAR(10) NOT NULL PRIMARY KEY, 姓名 VARCHAR(10) NOT NULL, 地址 CHAR(10) NOT NULL, 邮编 CHAR(6), 电话 CHAR(11) NOT NULL, 部门号 CHAR(3) NOT NULL, 出生日期 DATE NOT NULL, 性别 CHAR(2) NOT NULL);CREATE TABL

15、E Departments( 部门编号 CHAR(3) NOT NULL PRIMARY KEY, 部门名称 CHAR(20) NOT NULL, 备注 text);CREATE TABLE Salary( 编号 CHAR(10) NOT NULL PRIMARY key, 收入 int default 0, 支出 int default 0);CREATE TABLE Purchase( 员工编号 CHAR(10) NOT NULL, 商品 CHAR(4) NOT NULL , 购买数量 CHAR(4) NOT NULL, PRIMARY KEY(员工编号,商品);INSERT INTO D

16、epartments VALUES('1','财务部',NULL);INSERT INTO Departments VALUES('2','人力资源部',NULL);INSERT INTO Departments VALUES('3','生产部',NULL) ;INSERT INTO Departments VALUES('4','采购部',NULL);INSERT INTO Departments VALUES('5','销售部',N

17、ULL);B、向Employees表中加入表1所示的记录编号姓名地址邮编电话部门号出生日期性别张晓强上海21956-1-11柳树合肥11966-1-11许静北京11972-1-11李可武汉11950-1-10张三丰西安51962-1-10白眉南京51955-1-11胡适昆明31969-1-11成吉思汗海口51964-1-11萧然成都31967-1-11Solution:INSERT INTO Employees VALUES('','张晓强','上海','','','2','1956-1-1

18、','1')INSERT INTO Employees VALUES('','柳树','合肥','','','1','1966-1-1','1')INSERT INTO Employees VALUES('','许静','北京','','','1','1972-1-1','1')INSERT INTO Employee

19、s VALUES('','李可','武汉','','','1','1950-1-1','0')INSERT INTO Employees VALUES('','张三丰','西安','','','5','1962-1-1','0')INSERT INTO Employees VALUES('','白眉','

20、;南京','','','5','1955-1-1','1')INSERT INTO Employees VALUES('','胡适','昆明','','','3','1969-1-1','1')INSERT INTO Employees VALUES('','成吉思汗','海口','','','

21、5','1964-1-1','1')INSERT INTO Employees VALUES('','萧然','成都','','','3','1967-1-1','1');结果: C、向Salary表中加入表3所示的记录编号收入支出2100123158288256918519877920661082980210325928128601982347180Solution:INSERT INTO Salary VALUES('

22、;','2100','123')INSERT INTO Salary VALUES('','1582','88')INSERT INTO Salary VALUES('','2569','185')INSERT INTO Salary VALUES('','1987','79')INSERT INTO Salary VALUES('','2066','108')IN

23、SERT INTO Salary VALUES('','2980','210')INSERT INTO Salary VALUES('','3259','281')INSERT INTO Salary VALUES('','2860','198')INSERT INTO Salary VALUES('','2347','180');结果: D、向Purchase表中加入表4所示的记录员工编号商品购买数量0

24、13031015036111113015021112Solution:INSERT INTO Purchase VALUES('','01','3');INSERT INTO Purchase VALUES('','03','1');INSERT INTO Purchase VALUES('','01','5');INSERT INTO Purchase VALUES('','03','6');INSER

25、T INTO Purchase VALUES('','11','1');INSERT INTO Purchase VALUES('','11','3');INSERT INTO Purchase VALUES('','01','5');INSERT INTO Purchase VALUES('','02','1');INSERT INTO Purchase VALUES('','1

26、1','2');2、简单查询 (1)查询1956,1962,1964年出生的员工记录; (2)查询性别为1的员工记录; (3)查询名字中包含白字的所有雇员信息; (4)查询不姓李或者胡,并且名字为三个字的雇员的记录(注:“姓名”列的数据类型必须定义为varchar,想想为什么? )。Solution:SELECT * FROM EmployeesWHERE 出生日期 LIKE '%1956%' or 出生日期 LIKE '%1962%' or 出生日期 LIKE '%1964%' SELECT * FROM Employe

27、es WHERE 性别='1'SELECT * FROM Employees WHERE 姓名 LIKE '%白%'SELECT * FROM Employees WHERE 姓名 not LIKE'李%' AND 姓名 not LIKE'胡%' AND 姓名 LIKE'_'结 果:3、连接查询的使用(1)查询每个雇员的情况以及其薪水情况(2)查询收入高于编号为的员工收入的职工信息Solution:SELECT Employees.*,Salary.收入 FROM Employees INNER JOIN Sala

28、ry ON Employees.编号=Salary.编号SELECT a.*,b.收入 FROM Employees AS a JOIN salary AS b ON a.编号=b.编号WHERE 收入>( SELECT 收入 FROM Salary WHERE 编号='');结果:4数据汇总(1)求财务部员工的平均净收入(2)求财务部雇员的总人数Solution:SELECT AVG(b.收入-b.支出) AS 财务部员工的平均净收入 FROM Employees AS a INNER JOIN Salary AS b ON a.编号=b.编号WHERE 部门号=

29、9;1'SELECT COUNT(编号)AS 财务部雇员的总人数 FROM Employees WHERE 部门号='1'结果:5GROUP BY ,ORDER BY 子句的使用(1)求各部门的雇员数(2)将各雇员的情况按薪水由低到高排列Solution:SELECT b.部门名称 ,COUNT(a.编号) AS 部门人数FROM Employees AS a JOIN Departments AS b ON a.部门号=b.部门编号 group by 部门名称;SELECT a.*,b.收入 FROM Employees AS a INNER JOIN Salary

30、AS b ON a.编号=b.编号 order by 收入;结果:6、(选做题)查找比所有财务部的员工的收入都高的员工的姓名;Solution:SELECT 姓名 FROM Employees WHERE 编号 IN (SELECT 编号 FROM Salary WHERE 收入>All(SELECT 收入 FROM Salary WHERE 编号 IN(SELECT 编号 FROM Employees WHERE 部门号='1')结果: 【四】实验二完整的代码: CREATE DATABASE compyuse compyCREATE TABLE Employees(

31、编号 CHAR(10) NOT NULL PRIMARY KEY, 姓名 VARCHAR(10) NOT NULL, 地址 CHAR(10) NOT NULL, 邮编 CHAR(6), 电话 CHAR(11) NOT NULL, 部门号 CHAR(3) NOT NULL, 出生日期 DATE NOT NULL, 性别 CHAR(2) NOT NULL);CREATE TABLE Departments( 部门编号 CHAR(3) NOT NULL PRIMARY KEY, 部门名称 CHAR(20) NOT NULL, 备注 text);CREATE TABLE Salary( 编号 CHAR

32、(10) NOT NULL PRIMARY key, 收入 int default 0, 支出 int default 0);CREATE TABLE Purchase( 员工编号 CHAR(10) NOT NULL, 商品 CHAR(4) NOT NULL , 购买数量 CHAR(4) NOT NULL, PRIMARY KEY(员工编号,商品);INSERT INTO Departments VALUES('1','财务部',NULL);INSERT INTO Departments VALUES('2','人力资源部',NU

33、LL);INSERT INTO Departments VALUES('3','生产部',NULL) ;INSERT INTO Departments VALUES('4','采购部',NULL);INSERT INTO Departments VALUES('5','销售部',NULL);INSERT INTO Employees VALUES('','张晓强','上海','','','2','

34、1956-1-1','1')INSERT INTO Employees VALUES('','柳树','合肥','','','1','1966-1-1','1')INSERT INTO Employees VALUES('','许静','北京','','','1','1972-1-1','1')INSERT INTO

35、Employees VALUES('','李可','武汉','','','1','1950-1-1','0')INSERT INTO Employees VALUES('','张三丰','西安','','','5','1962-1-1','0')INSERT INTO Employees VALUES('','白眉&#

36、39;,'南京','','','5','1955-1-1','1')INSERT INTO Employees VALUES('','胡适','昆明','','','3','1969-1-1','1')INSERT INTO Employees VALUES('','成吉思汗','海口','','

37、9;,'5','1964-1-1','1')INSERT INTO Employees VALUES('','萧然','成都','','','3','1967-1-1','1');INSERT INTO Salary VALUES('','2100','123')INSERT INTO Salary VALUES('','1582','

38、;88')INSERT INTO Salary VALUES('','2569','185')INSERT INTO Salary VALUES('','1987','79')INSERT INTO Salary VALUES('','2066','108')INSERT INTO Salary VALUES('','2980','210')INSERT INTO Salary VALUES(&#

39、39;','3259','281')INSERT INTO Salary VALUES('','2860','198')INSERT INTO Salary VALUES('','2347','180');INSERT INTO Purchase VALUES('','01','3');INSERT INTO Purchase VALUES('','03','1')

40、;INSERT INTO Purchase VALUES('','01','5');INSERT INTO Purchase VALUES('','03','6');INSERT INTO Purchase VALUES('','11','1');INSERT INTO Purchase VALUES('','11','3');INSERT INTO Purchase VALUES('',

41、'01','5');INSERT INTO Purchase VALUES('','02','1');INSERT INTO Purchase VALUES('','11','2');SELECT * FROM EmployeesWHERE 出生日期 LIKE '%1956%' or 出生日期 LIKE '%1962%' or 出生日期 LIKE '%1964%' SELECT * FROM Employees WHER

42、E 性别='1'SELECT * FROM Employees WHERE 姓名 LIKE '%白%'SELECT * FROM Employees WHERE 姓名 not LIKE'李%' AND 姓名 not LIKE'胡%' AND 姓名 LIKE'_'SELECT Employees.*,Salary.收入 FROM Employees INNER JOIN Salary ON Employees.编号=Salary.编号SELECT a.*,b.收入 FROM Employees AS a JOIN s

43、alary AS b ON a.编号=b.编号WHERE 收入>( SELECT 收入 FROM Salary WHERE 编号='');SELECT AVG(b.收入-b.支出) AS 财务部员工的平均净收入 FROM Employees AS a INNER JOIN Salary AS b ON a.编号=b.编号WHERE 部门号='1'SELECT COUNT(编号)AS 财务部雇员的总人数 FROM Employees WHERE 部门号='1'SELECT b.部门名称 ,COUNT(a.编号) AS 部门人数FROM Emp

44、loyees AS a JOIN Departments AS b ON a.部门号=b.部门编号 group by 部门名称;SELECT a.*,b.收入 FROM Employees AS a INNER JOIN Salary AS b ON a.编号=b.编号 order by 收入;SELECT 姓名 FROM Employees WHERE 编号 IN (SELECT 编号 FROM Salary WHERE 收入>All(SELECT 收入 FROM Salary WHERE 编号 IN(SELECT 编号 FROM Employees WHERE 部门号='1&

45、#39;)三、数据库原理第三次实验【一】、实验内容:数据库的表中数据的操作。【二】、实验目的:1、学习SQL语句进行表中的数据的插入、更新和删除;2、学会含有子查询语句的数据更新操作;2、理解表中列的属性对表中数据的影响。【三】、实验准备试用上次实验创建的员工管理数据库(compy)及相应的四张表(具体见实验2):Employees:员工信息表Departments:部门信息表Salary:员工薪水信息表Purchase:员工购物信息表【四】、实验题目及其解答:1、 向Employees表中加入一列:年龄,其值为“当前时间”与“出生日期”差值(提示:年龄的计算可以使用getdate及year两

46、个日期函数,具体使用参考联机丛书Transact SQL参考)。Solutionuse compyALTER TABLE Employees ADD 年龄 AS datediff (year,出生日期,getdate();2、数据更新:1)将编号为的雇员地址改为“苏州”;2)将编号为的雇员收入降低10;3)更改salary表,如果收入和支出的差值小于2000,则将收入提高1000;Solution:SELECT * FROM EmployeesUPDATE Employees SET 地址='苏州' WHERE 编号=''SELECT * FROM Employ

47、eesUPDATE Salary SET 收入=收入*0.9 WHERE 编号=''SELECT * FROM SalaryUPDATE Salary SET 收入=收入+1000WHERE abs(收入-支出)<2000;结果: 3、 使用SELECTINTO进行多行插入: 将每个部门的编号,名称,雇员数,插入到新表DepartmentStatic中。Solution:SELECT * FROM SalarySELECT Departments.部门编号,Departments.部门名称,COUNT(Employees.编号) AS 部门人数 INTO Departme

48、ntStatic FROM Departments INNER JOIN Employees on Departments.部门编号=Employees.部门号 GROUP BY 部门名称,部门编号 SELECT * FROM DepartmentStatic; 结果 4、含子查询的数据更新(1)将地址为合肥的雇员收入增加5(2)将收入小于平均收入的雇员的收入增加500元(3)将财务部的雇员收入减少100Solution:UPDATE Salary SET 收入=收入*1.05 WHERE 编号 IN (SELECT 编号 FROM Employees WHERE 地址='合肥'

49、;)SELECT Employees.编号,Employees.姓名,Employees.地址,Salary.收入 FROM Employees INNER JOIN Salary ON Employees.编号=Salary.编号UPDATE Salary SET 收入=收入+500 WHERE 收入<(SELECT AVG(收入) FROM Salary)SELECT * FROM SalaryUPDATE Salary SET 收入=收入-100WHERE 编号 IN (SELECT 编号 FROM Employees WHERE 部门号=(SELECT 部门编号 FROM Dep

50、artments WHERE 部门名称='财务部'); 结果: 5、删除删除DepartmentStatic中所有数据Solution:SELECT Employees.编号,Employees.姓名,Employees.地址,Salary.收入 FROM Employees INNER JOIN Salary ON Employees.编号=Salary.编号TRUNCATE TABLE DepartmentStatic;结果: 6、(选做)(1)将总收入大于6000的部门中的雇员收入减少5(2)删除收入大于平均收入的雇员的信息,包括Employees, Salary中相关的

51、数据Solution:SELECT * FROM DepartmentStaticUPDATE Salary SET 收入=收入*0.95WHERE 编号 IN (SELECT 编号 FROM Employees WHERE 部门号 IN(SELECT b.部门号FROM Salary AS a INNER JOIN Employees AS b ON a.编号=b.编号GROUP BY 部门号HAVING SUM(收入)>6000)SELECT Employees.编号,Employees.姓名,Employees.部门号,Salary.收入,Salary.支出FROM Employe

52、es INNER JOIN Salary ON Employees.编号=Salary.编号DELETE FROM Employees WHERE 编号 IN ( SELECT 编号 FROM Salary WHERE 收入>(SELECT AVG(收入) FROM Salary)DELETE FROM SalaryWHERE 编号 IN ( SELECT 编号 FROM Salary WHERE 收入>(SELECT AVG(收入) FROM Salary)SELECT * FROM EmployeesSELECT * FROM Salary;结果: 【四】实验三完整的代码:us

53、e compyALTER TABLE Employees ADD 年龄 AS datediff (year,出生日期,getdate()SELECT * FROM EmployeesUPDATE Employees SET 地址='苏州' WHERE 编号=''SELECT * FROM EmployeesUPDATE Salary SET 收入=收入*0.9 WHERE 编号=''SELECT * FROM SalaryUPDATE Salary SET 收入=收入+1000WHERE abs(收入-支出)<2000SELECT * FR

54、OM SalarySELECT Departments.部门编号,Departments.部门名称,COUNT(Employees.编号) AS 部门人数 INTO DepartmentStatic FROM Departments INNER JOIN Employees on Departments.部门编号=Employees.部门号 GROUP BY 部门名称,部门编号 SELECT * FROM DepartmentStaticUPDATE Salary SET 收入=收入*1.05 WHERE 编号 IN (SELECT 编号 FROM Employees WHERE 地址=

55、9;合肥')SELECT Employees.编号,Employees.姓名,Employees.地址,Salary.收入 FROM Employees INNER JOIN Salary ON Employees.编号=Salary.编号UPDATE Salary SET 收入=收入+500 WHERE 收入<(SELECT AVG(收入) FROM Salary)SELECT * FROM SalaryUPDATE Salary SET 收入=收入-100WHERE 编号 IN (SELECT 编号 FROM Employees WHERE 部门号=(SELECT 部门编号

56、FROM Departments WHERE 部门名称='财务部')SELECT Employees.编号,Employees.姓名,Employees.地址,Salary.收入 FROM Employees INNER JOIN Salary ON Employees.编号=Salary.编号TRUNCATE TABLE DepartmentStatic SELECT * FROM DepartmentStaticUPDATE Salary SET 收入=收入*0.95WHERE 编号 IN (SELECT 编号 FROM Employees WHERE 部门号 IN(SEL

57、ECT b.部门号FROM Salary AS a INNER JOIN Employees AS b ON a.编号=b.编号GROUP BY 部门号HAVING SUM(收入)>6000)SELECT Employees.编号,Employees.姓名,Employees.部门号,Salary.收入,Salary.支出FROM Employees INNER JOIN Salary ON Employees.编号=Salary.编号DELETE FROM Employees WHERE 编号 IN ( SELECT 编号 FROM Salary WHERE 收入>(SELECT

58、 AVG(收入) FROM Salary)DELETE FROM SalaryWHERE 编号 IN ( SELECT 编号 FROM Salary WHERE 收入>(SELECT AVG(收入) FROM Salary)SELECT * FROM EmployeesSELECT * FROM Salary四、数据库原理第四次实验【一】、实验内容:视图练习【二】、实验目的:1、练习视图的建立与使用;2、理解视图的优点和作用。【三】、实验准备:创建员工管理数据库(company)及相应的四张表:Employees:员工信息表Departments:部门信息表Salary:员工薪水信息表p

59、urchase表:购买信息表【四】、实验题目及其解答:1、建立视图(1) 建立视图view1, 查询所有财务部的职工的编号、姓名和工资收入,显示前5项, 并按照收入排序。Solution:use compyCREATE VIEW view1(编号,姓名,收入)AS (SELECT Employees.编号,姓名,收入 FROM Employees INNER JOIN Salary ON Salary.编号=Employees.编号 WHERE 部门号=(SELECT 部门编号 FROM Departments WHERE 部门名称='财务部');SELECT TOP 5 编号

60、,姓名,收入 FROM view1ORDER BY 收入;(2) 建立视图view2,查询所有职工的职工编号、姓名和盈余;Solution:CREATE VIEW view2(编号,姓名,盈余)AS (SELECT Employees.编号,姓名,(收入-支出)AS 盈余 FROM Employees INNER JOIN Salary ON Employees.编号=Salary.编号)SELECT 编号,姓名,盈余 FROM view2(3) 在建立视图view1上建立视图view3,要求为:所有财务部的,收入大于2000的职工编号、姓名和工资收入;Solution:CREATE VIEW view3(编号,姓名,收入)AS SELECT 编号,姓名,收入 FROM view1 WHERE 收入>2000SELECT * from view3(4) 建立市场部购买商品1的员工的信息的视图view4,并在视图view4上查询收入大于3000的员工信息;Solution: CREATE VIEW view4 AS SELECT * FROM Employee

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论