南邮 大数据库实验报告材料_第1页
南邮 大数据库实验报告材料_第2页
南邮 大数据库实验报告材料_第3页
南邮 大数据库实验报告材料_第4页
南邮 大数据库实验报告材料_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

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

文档简介

wordword/word数据库实验报告〔2012/2013学年第二学期〕学号姓名指导教师成绩一、数据库原理第一次实验【一】实验容:数据库表的建立与管理【二】、实验目的:学习数据库与表的建立、删除、更新等操作。注:本次实验题目,除了特殊要求,以T-SQL为主,并将所有语句标注好题号,留存在查询界面上,方便检查。【三】、实验题目与其解答:1、创建一名为‘test’的数据库;Solution:CREATEDATABASEtest2、在“test〞数据库中新建一部门表“部门〞,输入列:name〔char,10位〕,ID〔char,7位〕,manager(char,10位)各列均不能为空值。Solution:usetestCREATETABLE部门(IDCHAR(7)NOTNULL,nameCHAR(10)NOTNULL,managerCHAR(10)NOTNULL)结果:3、在“test〞数据库中新建一员工表,命名为“员工〞。在表中输入以下各列:name〔char,10位〕,personID〔char,7位〕,Sex〔char,7位〕,birthday〔datetime〕,deptID〔char,7位〕,各列均不能为空值。Solution:CREATETABLE员工(nameCHAR(10)NOTNULL,personIDCHAR(7)NOTNULL,sexCHAR(7)NOTNULL,birthdaydatetimeNOTNULL,deptIDCHAR(7)NOTNULL)结果:4、修改表的操作练习:1〕将‘部门’表中的列ID设为主键;2〕将‘员工’表中personID设为主键,并将deptID设置为外键,关联到‘部门’表上的‘ID’列;3〕在‘部门’表中,添加列quantity(char,5);4)删除‘员工’表中的列‘sex’;5〕修改‘员工’表中列name为〔varchar,8〕Solution:ALTERTABLE部门ADDCONSTRAINTC1PRIMARYKEY(ID)ALTERTABLE员工ADDCONSTRAINTC2PRIMARYKEY(personID)ALTERTABLE员工ADDCONSTRAINTC3FOREIGNKEY(deptID)REFERENCES部门(ID)ALTERTABLE部门ADDquantityCHAR(5)ALTERTABLE员工DROPCOLUMNsexALTERTABLE员工ALTERCOLUMNnameVARCHAR(8)结果:5、1〕在数据库test中新建表scores,输入以如下:ID〔char,8位〕主键,C语言numeric(3,1),IT英语numeric(3,1),数据库numeric(3,1),软件根底numeric(3,1),平均成绩。四门学科都不能为空,并且平均成绩为四门学科的平均分;2〕为表scores中的四项成绩添加default约束:使其默认值为0;3〕为表scores中的四项成绩添加check约束:是每项成绩在0到100之间。Solution:CREATETABLEscores(IDCHAR(8)PRIMARYKEYNOTNULL,C语言NUMERIC(3,1)NOTNULL,IT英语NUMERIC(3,1)NOTNULL,数据库NUMERIC(3,1)NOTNULL,软件根底NUMERIC(3,1)NOTNULL,平均成绩AS(C语言+IT英语+数据库+软件根底)/4)ALTERTABLEscoresADDCONSTRAINTC语言DEFAULT'0'FORC语言ALTERTABLEscoresADDCONSTRAINTIT英语DEFAULT'0'FORIT英语ALTERTABLEscoresADDCONSTRAINT数据库DEFAULT'0'FOR数据库ALTERTABLEscoresADDCONSTRAINT软件根底DEFAULT'0'FOR软件根底ALTERTABLEscoresADDCONSTRAINTCK1CHECK(C语言>=0ANDC语言<=100);ALTERTABLEscoresADDCONSTRAINTCK2CHECK(IT英语>=0ANDIT英语<=100);ALTERTABLEscoresADDCONSTRAINTCK3CHECK(数据库>=0AND数据库<=100);ALTERTABLEscoresADDCONSTRAINTCK4CHECK(软件根底>=0AND软件根底<=100);结果:6、删除department表,并删除数据库test。Solution:DROPTable部门;DROPDATABASEtest;【四】实验一完整的代码:CREATEDATABASEtestusetestCREATETABLE部门(IDCHAR(7)NOTNULL,nameCHAR(10)NOTNULL,managerCHAR(10)NOTNULL)CREATETABLE员工(nameCHAR(10)NOTNULL,personIDCHAR(7)NOTNULL,sexCHAR(7)NOTNULL,birthdaydatetimeNOTNULL,deptIDCHAR(7)NOTNULL)ALTERTABLE部门ADDCONSTRAINTC1PRIMARYKEY(ID)ALTERTABLE员工ADDCONSTRAINTC2PRIMARYKEY(personID)ALTERTABLE员工ADDCONSTRAINTC3FOREIGNKEY(deptID)REFERENCES部门(ID)ALTERTABLE部门ADDquantityCHAR(5)ALTERTABLE员工DROPCOLUMNsexALTERTABLE员工ALTERCOLUMNnameVARCHAR(8)CREATETABLEscores(IDCHAR(8)PRIMARYKEYNOTNULL,C语言NUMERIC(3,1)NOTNULL,IT英语NUMERIC(3,1)NOTNULL,数据库NUMERIC(3,1)NOTNULL,软件根底NUMERIC(3,1)NOTNULL,平均成绩AS(C语言+IT英语+数据库+软件根底)/4)ALTERTABLEscoresADDCONSTRAINTC语言DEFAULT'0'FORC语言ALTERTABLEscoresADDCONSTRAINTIT英语DEFAULT'0'FORIT英语ALTERTABLEscoresADDCONSTRAINT数据库DEFAULT'0'FOR数据库ALTERTABLEscoresADDCONSTRAINT软件根底DEFAULT'0'FOR软件根底ALTERTABLEscoresADDCONSTRAINTCK1CHECK(C语言>=0ANDC语言<=100);ALTERTABLEscoresADDCONSTRAINTCK2CHECK(IT英语>=0ANDIT英语<=100);ALTERTABLEscoresADDCONSTRAINTCK3CHECK(数据库>=0AND数据库<=100);ALTERTABLEscoresADDCONSTRAINTCK4CHECK(软件根底>=0AND软件根底<=100);DROPTable部门;DROPDATABASEtest;二、数据库原理第二次实验【一】、实验容:查询技术的应用【二】、实验目的:1、 掌握SELECT语句的根本语法2、 掌握连接查询的表示3、 掌握数据汇总的方法4、 掌握SELECT语句的GROUPBY子句的作用和使用方法5、 掌握SELECT语句的ORDERBY子句的作用和使用方法【三】、实验容1、创建员工管理数据库〔py〕与相应的四表:Employees:员工信息表Departments:部门信息表Salary:员工薪水信息表Purchase:员工购物信息表各表中属性的定义可根据表中的记录加以设定,均以编号为主键,例如可定义Departments表结构如下:列名数据类型长度是否允许空值说明部门编号Char3否部门编号主键部门名称Char20否部门名称备注text16是备注向表中填入数据 A、向Departments表中参加表2所示的记录编号部门名称备注1财务部null2人力资源部null3生产部null4采购部null5销售部nullSolution:CREATEDATABASEpyusepyCREATETABLEEmployees(编号CHAR(10)NOTNULLPRIMARYKEY,VARCHAR(10)NOTNULL,地址CHAR(10)NOTNULL,CHAR(6),CHAR(11)NOTNULL,部门号CHAR(3)NOTNULL,出生日期DATENOTNULL,性别CHAR(2)NOTNULL);CREATETABLEDepartments(部门编号CHAR(3)NOTNULLPRIMARYKEY,部门名称CHAR(20)NOTNULL,备注text);CREATETABLESalary(编号CHAR(10)NOTNULLPRIMARYkey,收入intdefault0,支出intdefault0);CREATETABLEPurchase(员工编号CHAR(10)NOTNULL,商品CHAR(4)NOTNULL,购置数量CHAR(4)NOTNULL,PRIMARYKEY(员工编号,商品));INSERTINTODepartmentsVALUES('1','财务部',NULL);INSERTINTODepartmentsVALUES('2','人力资源部',NULL);INSERTINTODepartmentsVALUES('3','生产部',NULL);INSERTINTODepartmentsVALUES('4','采购部',NULL);INSERTINTODepartmentsVALUES('5','销售部',NULL);B、向Employees表中参加表1所示的记录编号地址部门号出生日期性别000001晓强230027333355621956-1-11010008柳树230027313135911966-1-11002001许静230026313235911972-1-11020018可230026369356411950-1-10102201三丰123456363534651962-1-10102208白眉123456345896551955-1-11108991胡适123456456892131969-1-11111006成吉思汗123456345814551964-1-11210678萧然123456345456531967-1-11Solution:INSERTINTOEmployeesVALUES('000001','晓强','','230027','3333556','2','1956-1-1','1')INSERTINTOEmployeesVALUES('010008','柳树','','230027','3131359','1','1966-1-1','1')INSERTINTOEmployeesVALUES('002001','许静','','230026','3132359','1','1972-1-1','1')INSERTINTOEmployeesVALUES('020018','可','','230026','3693564','1','1950-1-1','0')INSERTINTOEmployeesVALUES('102201','三丰','','123456','3635364','5','1962-1-1','0')INSERTINTOEmployeesVALUES('102208','白眉','','123456','3458965','5','1955-1-1','1')INSERTINTOEmployeesVALUES('108991','胡适','','123456','4568921','3','1969-1-1','1')INSERTINTOEmployeesVALUES('111006','成吉思汗','','123456','3458145','5','1964-1-1','1')INSERTINTOEmployeesVALUES('210678','萧然','','123456','3454565','3','1967-1-1','1');结果:C、向Salary表中参加表3所示的记录编号收入支出0000012100123010008158288002001256918502001819877910220120661081022082980210108991325928111100628601982106782347180Solution:INSERTINTOSalaryVALUES('000001','2100','123')INSERTINTOSalaryVALUES('010008','1582','88')INSERTINTOSalaryVALUES('002001','2569','185')INSERTINTOSalaryVALUES('020018','1987','79')INSERTINTOSalaryVALUES('102201','2066','108')INSERTINTOSalaryVALUES('102208','2980','210')INSERTINTOSalaryVALUES('108991','3259','281')INSERTINTOSalaryVALUES('111006','2860','198')INSERTINTOSalaryVALUES('210678','2347','180');结果:D、向Purchase表中参加表4所示的记录员工编号商品购置数量000001013000001031002001015020018036108991111000001113020018015201678021020018112Solution:INSERTINTOPurchaseVALUES('000001','01','3');INSERTINTOPurchaseVALUES('000001','03','1');INSERTINTOPurchaseVALUES('002001','01','5');INSERTINTOPurchaseVALUES('020018','03','6');INSERTINTOPurchaseVALUES('108991','11','1');INSERTINTOPurchaseVALUES('000001','11','3');INSERTINTOPurchaseVALUES('020018','01','5');INSERTINTOPurchaseVALUES('201678','02','1');INSERTINTOPurchaseVALUES('020018','11','2');2、简单查询〔1〕查询1956,1962,1964年出生的员工记录;〔2〕查询性别为1的员工记录;〔3〕查询名字中包含‘白’字的所有雇员信息;〔4〕查询不姓‘’或者‘胡’,并且名字为三个字的雇员的记录〔注:“〞列的数据类型必须定义为varchar,想想为什么?〕。Solution:SELECT*FROMEmployeesWHERE出生日期LIKE'%1956%'or出生日期LIKE'%1962%'or出生日期LIKE'%1964%';SELECT*FROMEmployeesWHERE性别='1';SELECT*FROMEmployeesWHERELIKE'%白%';SELECT*FROMEmployeesWHEREnotLIKE'%'ANDnotLIKE'胡%'ANDLIKE'___';结果:3、连接查询的使用〔1〕查询每个雇员的情况以与其薪水情况〔2〕查询收入高于编号为102201的员工收入的职工信息Solution:SELECTEmployees.*,Salary.收入FROMEmployeesINNERJOINSalaryONEmployees.编号=Salary.编号SELECTa.*,b.收入FROMEmployeesASaJOINsalaryASbONa.编号=b.编号WHERE收入>(SELECT收入FROMSalaryWHERE编号='102201');结果:4.数据汇总〔1〕求财务部员工的平均净收入〔2〕求财务部雇员的总人数Solution:SELECTAVG(b.收入-b.支出)AS财务部员工的平均净收入FROMEmployeesASaINNERJOINSalaryASbONa.编号=b.编号WHERE部门号='1';SELECTCOUNT(编号)AS财务部雇员的总人数FROMEmployeesWHERE部门号='1';结果:5.GROUPBY,ORDERBY子句的使用〔1〕求各部门的雇员数〔2〕将各雇员的情况按薪水由低到高排列Solution:SELECTb.部门名称,COUNT(a.编号)AS部门人数FROMEmployeesASaJOINDepartmentsASbONa.部门号=b.部门编号groupby部门名称;SELECTa.*,b.收入FROMEmployeesASaINNERJOINSalaryASbONa.编号=b.编号orderby收入;结果:6、〔选做题〕查找比所有财务部的员工的收入都高的员工的;Solution:SELECTFROMEmployeesWHERE编号IN(SELECT编号FROMSalaryWHERE收入>All(SELECT收入FROMSalaryWHERE编号IN(SELECT编号FROMEmployeesWHERE部门号='1')))结果:【四】实验二完整的代码:CREATEDATABASEpyusepyCREATETABLEEmployees(编号CHAR(10)NOTNULLPRIMARYKEY,VARCHAR(10)NOTNULL,地址CHAR(10)NOTNULL,CHAR(6),CHAR(11)NOTNULL,部门号CHAR(3)NOTNULL,出生日期DATENOTNULL,性别CHAR(2)NOTNULL);CREATETABLEDepartments(部门编号CHAR(3)NOTNULLPRIMARYKEY,部门名称CHAR(20)NOTNULL,备注text);CREATETABLESalary(编号CHAR(10)NOTNULLPRIMARYkey,收入intdefault0,支出intdefault0);CREATETABLEPurchase(员工编号CHAR(10)NOTNULL,商品CHAR(4)NOTNULL,购置数量CHAR(4)NOTNULL,PRIMARYKEY(员工编号,商品));INSERTINTODepartmentsVALUES('1','财务部',NULL);INSERTINTODepartmentsVALUES('2','人力资源部',NULL);INSERTINTODepartmentsVALUES('3','生产部',NULL);INSERTINTODepartmentsVALUES('4','采购部',NULL);INSERTINTODepartmentsVALUES('5','销售部',NULL);INSERTINTOEmployeesVALUES('000001','晓强','','230027','3333556','2','1956-1-1','1')INSERTINTOEmployeesVALUES('010008','柳树','','230027','3131359','1','1966-1-1','1')INSERTINTOEmployeesVALUES('002001','许静','','230026','3132359','1','1972-1-1','1')INSERTINTOEmployeesVALUES('020018','可','','230026','3693564','1','1950-1-1','0')INSERTINTOEmployeesVALUES('102201','三丰','','123456','3635364','5','1962-1-1','0')INSERTINTOEmployeesVALUES('102208','白眉','','123456','3458965','5','1955-1-1','1')INSERTINTOEmployeesVALUES('108991','胡适','','123456','4568921','3','1969-1-1','1')INSERTINTOEmployeesVALUES('111006','成吉思汗','','123456','3458145','5','1964-1-1','1')INSERTINTOEmployeesVALUES('210678','萧然','','123456','3454565','3','1967-1-1','1');INSERTINTOSalaryVALUES('000001','2100','123')INSERTINTOSalaryVALUES('010008','1582','88')INSERTINTOSalaryVALUES('002001','2569','185')INSERTINTOSalaryVALUES('020018','1987','79')INSERTINTOSalaryVALUES('102201','2066','108')INSERTINTOSalaryVALUES('102208','2980','210')INSERTINTOSalaryVALUES('108991','3259','281')INSERTINTOSalaryVALUES('111006','2860','198')INSERTINTOSalaryVALUES('210678','2347','180');INSERTINTOPurchaseVALUES('000001','01','3');INSERTINTOPurchaseVALUES('000001','03','1');INSERTINTOPurchaseVALUES('002001','01','5');INSERTINTOPurchaseVALUES('020018','03','6');INSERTINTOPurchaseVALUES('108991','11','1');INSERTINTOPurchaseVALUES('000001','11','3');INSERTINTOPurchaseVALUES('020018','01','5');INSERTINTOPurchaseVALUES('201678','02','1');INSERTINTOPurchaseVALUES('020018','11','2');SELECT*FROMEmployeesWHERE出生日期LIKE'%1956%'or出生日期LIKE'%1962%'or出生日期LIKE'%1964%';SELECT*FROMEmployeesWHERE性别='1';SELECT*FROMEmployeesWHERELIKE'%白%';SELECT*FROMEmployeesWHEREnotLIKE'%'ANDnotLIKE'胡%'ANDLIKE'___';SELECTEmployees.*,Salary.收入FROMEmployeesINNERJOINSalaryONEmployees.编号=Salary.编号SELECTa.*,b.收入FROMEmployeesASaJOINsalaryASbONa.编号=b.编号WHERE收入>(SELECT收入FROMSalaryWHERE编号='102201');SELECTAVG(b.收入-b.支出)AS财务部员工的平均净收入FROMEmployeesASaINNERJOINSalaryASbONa.编号=b.编号WHERE部门号='1';SELECTCOUNT(编号)AS财务部雇员的总人数FROMEmployeesWHERE部门号='1';SELECTb.部门名称,COUNT(a.编号)AS部门人数FROMEmployeesASaJOINDepartmentsASbONa.部门号=b.部门编号groupby部门名称;SELECTa.*,b.收入FROMEmployeesASaINNERJOINSalaryASbONa.编号=b.编号orderby收入;SELECTFROMEmployeesWHERE编号IN(SELECT编号FROMSalaryWHERE收入>All(SELECT收入FROMSalaryWHERE编号IN(SELECT编号FROMEmployeesWHERE部门号='1')))三、数据库原理第三次实验【一】、实验容:数据库的表中数据的操作。【二】、实验目的:1、学习SQL语句进展表中的数据的插入、更新和删除;2、学会含有子查询语句的数据更新操作;2、理解表中列的属性对表中数据的影响。【三】、实验准备试用上次实验创建的员工管理数据库〔py〕与相应的四表〔具体见实验2〕:Employees:员工信息表Departments:部门信息表Salary:员工薪水信息表Purchase:员工购物信息表【四】、实验题目与其解答:向Employees表中参加一列:年龄,其值为“当前时间〞与“出生日期〞差值〔提示:年龄的计算可以使用getdate与year两个日期函数,具体使用参考联机丛书TransactSQL参考〕。SolutionusepyALTERTABLEEmployeesADD年龄ASdatediff(year,出生日期,getdate());2、数据更新:1〕将编号为102201的雇员地址改为“〞;2〕将编号为102208的雇员收入降低10%;3〕更改salary表,如果收入和支出的差值小于2000,如此将收入提高1000;Solution:SELECT*FROMEmployeesUPDATEEmployeesSET地址=''WHERE编号='102201'SELECT*FROMEmployeesUPDATESalarySET收入=收入*0.9WHERE编号='102208'SELECT*FROMSalaryUPDATESalarySET收入=收入+1000WHEREabs(收入-支出)<2000;结果:使用SELECT…INTO进展多行插入:将每个部门的编号,名称,雇员数,插入到新表DepartmentStatic中。Solution:SELECT*FROMSalarySELECTDepartments.部门编号,Departments.部门名称,COUNT(Employees.编号)AS部门人数INTODepartmentStaticFROMDepartmentsINNERJOINEmployeesonDepartments.部门编号=Employees.部门号GROUPBY部门名称,部门编号SELECT*FROMDepartmentStatic;结果4、含子查询的数据更新 〔1〕将地址为的雇员收入增加5% 〔2〕将收入小于平均收入的雇员的收入增加500元 〔3〕将财务部的雇员收入减少100Solution:UPDATESalarySET收入=收入*WHERE编号IN(SELECT编号FROMEmployeesWHERE地址='')SELECTEmployees.编号,Employees.,Employees.地址,Salary.收入FROMEmployeesINNERJOINSalaryONEmployees.编号=Salary.编号UPDATESalarySET收入=收入+500WHERE收入<(SELECTAVG(收入)FROMSalary)SELECT*FROMSalaryUPDATESalarySET收入=收入-100WHERE编号IN(SELECT编号FROMEmployeesWHERE部门号=(SELECT部门编号FROMDepartmentsWHERE部门名称='财务部'));结果:5、删除 删除DepartmentStatic中所有数据Solution:SELECTEmployees.编号,Employees.,Employees.地址,Salary.收入FROMEmployeesINNERJOINSalaryONEmployees.编号=Salary.编号TRUNCATETABLEDepartmentStatic;结果:6、〔选做〕〔1〕将总收入大于6000的部门中的雇员收入减少5%〔2〕删除收入大于平均收入的雇员的信息,包括Employees,Salary中相关的数据Solution:SELECT*FROMDepartmentStaticUPDATESalarySET收入=收入*WHERE编号IN(SELECT编号FROMEmployeesWHERE部门号IN(SELECTb.部门号FROMSalaryASaINNERJOINEmployeesASbONa.编号=b.编号GROUPBY部门号HAVINGSUM(收入)>6000))SELECTEmployees.编号,Employees.,Employees.部门号,Salary.收入,Salary.支出FROMEmployeesINNERJOINSalaryONEmployees.编号=Salary.编号DELETEFROMEmployeesWHERE编号IN(SELECT编号FROMSalaryWHERE收入>(SELECTAVG(收入)FROMSalary))DELETEFROMSalaryWHERE编号IN(SELECT编号FROMSalaryWHERE收入>(SELECTAVG(收入)FROMSalary))SELECT*FROMEmployeesSELECT*FROMSalary;结果:【四】实验三完整的代码:usepyALTERTABLEEmployeesADD年龄ASdatediff(year,出生日期,getdate())SELECT*FROMEmployeesUPDATEEmployeesSET地址=''WHERE编号='102201'SELECT*FROMEmployeesUPDATESalarySET收入=收入*0.9WHERE编号='102208'SELECT*FROMSalaryUPDATESalarySET收入=收入+1000WHEREabs(收入-支出)<2000SELECT*FROMSalarySELECTDepartments.部门编号,Departments.部门名称,COUNT(Employees.编号)AS部门人数INTODepartmentStaticFROMDepartmentsINNERJOINEmployeesonDepartments.部门编号=Employees.部门号GROUPBY部门名称,部门编号SELECT*FROMDepartmentStaticUPDATESalarySET收入=收入*WHERE编号IN(SELECT编号FROMEmployeesWHERE地址='')SELECTEmployees.编号,Employees.,Employees.地址,Salary.收入FROMEmployeesINNERJOINSalaryONEmployees.编号=Salary.编号UPDATESalarySET收入=收入+500WHERE收入<(SELECTAVG(收入)FROMSalary)SELECT*FROMSalaryUPDATESalarySET收入=收入-100WHERE编号IN(SELECT编号FROMEmployeesWHERE部门号=(SELECT部门编号FROMDepartmentsWHERE部门名称='财务部'))SELECTEmployees.编号,Employees.,Employees.地址,Salary.收入FROMEmployeesINNERJOINSalaryONEmployees.编号=Salary.编号TRUNCATETABLEDepartmentStaticSELECT*FROMDepartmentStaticUPDATESalarySET收入=收入*WHERE编号IN(SELECT编号FROMEmployeesWHERE部门号IN(SELECTb.部门号FROMSalaryASaINNERJOINEmployeesASbONa.编号=b.编号GROUPBY部门号HAVINGSUM(收入)>6000))SELECTEmployees.编号,Employees.,Employees.部门号,Salary.收入,Salary.支出FROMEmployeesINNERJOINSalaryONEmployees.编号=Salary.编号DELETEFROMEmployeesWHERE编号IN(SELECT编号FROMSalaryWHERE收入>(SELECTAVG(收入)FROMSalary))DELETEFROMSalaryWHERE编号IN(SELECT编号FROMSalaryWHERE收入>(SELECTAVG(收入)FROMSalary))SELECT*FROMEmployeesSELECT*FROMSalary四、数据库原理第四次实验【一】、实验容:视图练习【二】、实验目的:1、练习视图的建立与使用;2、理解视图的优点和作用。【三】、实验准备:创建员工管理数据库〔pany〕与相应的四表:Employees:员工信息表Departments:部门信息表Salary:员工薪水信息表purchase表:购置信息表【四】、实验题目与其解答:1、建立视图建立视图view1,查询所有财务部的职工的编号、和工资收入,显示前5项,并按照收入排序。Solution:usepyCREATEVIEWview1(编号,,收入)AS(SELECTEmployees.编号,,收入FROMEmployeesINNERJOINSalaryONSalary.编号=Employees.编号WHERE部门号=(SELECT部门编号FROMDepartmentsWHERE部门名称='财务部'));SELECTTOP5编号,,收入FROMview1ORDERBY收入;建立视图view2,查询所有职工的职工编号、和盈余;Solution:CREATEVIEWview2(编号,,盈余)AS(SELECTEmployees.编号,,(收入-支出)AS盈余FROMEmployeesINNERJOINSalaryONEmployees.编号=Salary.编号)SELECT编号,,盈余FROMview2在建立视图view1上建立视图view3,要求为:所有财务部的,收入大于2000的职工编号、和工资收入;Solution:CREATEVIEWview3(编号,,收入)ASSELECT编号,,收入FROMview1WHERE收入>2000SELECT*fromview3建立市场部购置商品1的员工的信息的视图view4,并在视图view4上查询收入大于3000的员工信息;Solution:CREATEVIEWview4ASSELECT*FROMEmployeesINNERJOINPurchaseonEmployees.编号=Purchase.员工编号WHERE商品='01'SELECT*FROMview4WHERE编号IN(SELECT编号FROMSalaryWHERE收入>3000)建立关于年龄小于40的所有员工的编号、、、地址、年龄的视图view5;Solution:CREATEVIEWview5(编号,,,地址,年龄)ASSELECT编号,,,地址,年龄FROMEmployeesWHERE年龄<40SELECT*FROMview5建立关于视图性别为‘1’的员工的编号、、地址、、部门号、出生日期、性别的视图view6。Solution:CREATEVIEWview6(编号,,地址,,部门号,出生日期,性别)AS(SELECT编号,,地址,,部门号,出生日期,性别FROMEmployeesWHERE性别='1')SELECT*FROMview62、查询视图〔1〕在视图view1上查询收入大于3000的财务部员工的信息;〔2〕通过视图view2和表查询盈余最大的职工所在部门的部门号。Solution:SELECT*FROMview1WHERE收入>3000SELECT部门号FROMEmployeesWHERE编号in(SELECTview2.编号FROMview2WHERE盈余=(SELECTMAX(盈余)FROMview2))3、更新视图〔1〕将视图view5中员工编号为‘002001’的改为‘8263137’;〔2〕在视图view6上添加一个新的员工记录:010076,祝无双,,3865730,2,1985-11-1

温馨提示

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

评论

0/150

提交评论