实验5 数据查询(2)
东华大学数据库系统原理上机指导书
《数据库与软件工程》上机实验指导书目录实验一了解SQL SERVER2000的使用 (2)实验二SQL SERVER2000查询分析器 (8)实验三SQL语言的DDL (12)实验四SQL语言的DML初步 (15)实验五SQL语言的数据查询之一 (17)实验六SQL语言的数据查询之二 (18)实验七存储过程、触发器和数据库恢复 (20)2009年3月实验一了解SQL SERVER2000的使用一、实验目的SQL Server 2000的管理工具主要有:查询分析器、导入和导出数据、服务管理器,企业管理器和事件探测器等。
SQL Server 2000的启动和管理工作由服务管理器和企业管理器来实现。
本次实验了解SQL Server 2000的启动,熟悉如何使用企业管理器在SQL Server 2000图形环境下建立数据库和表。
学会SQL Server 2000的启动和建库、表的操作。
二、实验内容1.启动数据库服务软件SQL Server 2000:在程序菜单中选择Microsoft SQL Server,如图1-1所示:图1-1再选中服务管理器,如图1-2所示:图1-2点击服务管理器后,出现SQL Server服务管理器,如图1-3所示:图1-3点击“开始/继续”按钮,启动SQL Server 2000数据库服务。
启动成功后,在时钟旁边出现一个符号,如图1-4所示。
图1-42.在SQL Server 2000中建立数据库:在程序菜单中选择Microsoft SQL Server,如图1-5所示:图1-5再选中企业管理器,如图1-6所示:图1-6点击企业管理器后,出现企业管理器的主界面,如图1-7所示:图1-7点击左边树状控制栏的+/-号可以打开和关闭SQL Server组中的本地服务项目,在选中数据库服务项目后,单击鼠标右键,出现数据库的菜单,如图1-8所示:图1-8点击新建数据库,出现新建数据库窗口,如图1-9所示:图1-9输入数据库名称:Test,点击数据文件选项卡,如图1-10所示:图1-10在数据文件中,你可以设定数据文件的名称,所在目录以及文件的大小等信息。
实验5实验报告
学号:20164477 姓名:陈家凤实验五SQL语言一、目的与要求1.掌握SQL语言的查询功能;2.掌握SQL语言的数据操作功能;3.掌握对象资源管理器建立查询、索引和视图的方法;二、实验准备1.了解SQL语言的查改增删四大操作的语法;2.了解查询、索引和视图的概念;3.了解各类常用函数的含义。
三、实验内容(一)SQL查询功能使用提供的studentdb数据库文件,先附加到目录树中,再完成下列题目,SQL命令请保存到脚本文件中。
1.基本查询(1)查询所有姓王的学生的姓名、学号和性别Select St_Name,St_Sex,St_IDFrom st_infoWhere St_Name like'王%'图5-1(2)查询全体学生的情况,查询结构按班级降序排列,同一班级再按学号升序,并将结果存入新表new中select*into newfrom st_infoorder by Cl_Name desc,st_ID asc图5-2(3)对S_C_info表中选修了“体育”课的学生的平均成绩生成汇总行和明细行。
(提示:用compute汇总计算)因2014版本已不支持compute关键字,所以选择用其他方式。
Select c_no,scoreFrom s_c_infoWhere c_no=29000011group by c_no,score图5-32.嵌套查询(1)查询其他班级中比“材料科学0601班”的学生年龄都大的学生姓名和年龄select st_name,born_datefrom st_infowhere cl_name!='材料科学0601班'and born_date<(select min(born_date) from st_info where cl_name='材料科学0601班')图5-4(2)用exists查询选修了“9710041”课程的学生姓名select st_namefrom st_infowhere exists(select*from s_c_info where c_no=9710041 andst_id=st_info.st_id)图5-5(3)用in查询找出没有选修“9710041”课程的学生的姓名和所在班级。
实验报告五
实验五多表查询1.找出同一天进入公司工作的员工select distinct a.employeeNo,a.employeeName,a.hireDatefrom Employee a,Employee bwhere a.employeeNo!=b.employeeNo and a.hireDate=b.hireDate2.查找与“陈诗杰”在同一个单位工作的员工姓名,性别,部门和职务select a.employeeName,a.sex,a.department,a.headShipfrom Employee a,Employee bwhere a.department=b.department and b.employeeName='陈诗杰'3.在employee表中查询薪水超过员工平均薪水的员工信息select*from Employee awhere a.salary>(select avg(b.salary)from Employee b)4.查找有销售记录的客户编号,名称和订单总额select a.customerNo,a.customerName,b.orderNo,sum(quantity*price) orderSumfrom Customer a,OrderMaster b,OrderDetail cwhere a.customerNo=b.customerNo and b.orderNo=c.orderNogroup by a.customerNo,a.customerName,b.orderNo5.查询没有订购商品的客户编号和客户名称6.使用子查询查找32M DRAM的销售情况,要求显示相应的销售员的姓名,性别,销售日期,销售数量和经济呢,其中性别用“男”和“女”表示select employeeName,case sexwhen'M'then'男'when'F'then'女'end as sex,b.orderDate,c.quantity 销售数量,c.quantity*c.price 金额from Employee a,OrderMaster b,OrderDetail cwhere a.employeeNo=b.salerNo and b.orderNo=c.orderNo and c.productNo in(select f.productNofrom OrderMaster d,OrderDetail e,Product fwhere d.orderNo=e.orderNo and productName='32M DRAM')7.查询OrderMaster表中订单金额最高的订单号及订单金额select orderNo,sum(quantity*price) orderSumfrom OrderDetailgroup by orderNohaving sum(quantity*price)=(select max(orderSum)from(select orderNo,sum(quantity*price) orderSumfrom OrderDetailgroup by orderNo)b)8.在订单主表中查询订单金额大于“E2005002业务员在2008-1-9这天所接的任一张订单的金额”的所有订单信息。
数据库实验5 多表查询及视图
实验五:多表查询及视图一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握数据表的连接查询、嵌套查询、集合查询的使用方法。
3.掌握创建及管理视图的方法;二、实验学时2学时三、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.掌握连接查询、嵌套查询和集合查询的语法规则;3.掌握使用界面方式和命令方式创建及管理视图;4.完成实验报告;四、实验内容1.以实验3数据库为基础,请使用T-SQL 语句实现进行以下操作:1)查询选修了‘数学’或者‘大学英语’的学生学号、姓名、所在院系、选修课程号及成绩;2)查询与‘张力’(假设姓名唯一)年龄不同的所有学生的信息;3)按照“学号,姓名,所在院系,已修学分”的顺序列出学生学分的获得情况。
其中已修学分为考试已经及格的课程学分之和;4)查找选修了至少一门和张力选修课程一样的学生的学号、姓名及课程号;5)查询只被一名学生选修的课程的课程号、课程名;6)使用嵌套查询出选修了“数据结构”课程的学生学号和姓名;7)使用嵌套查询查询其它系中年龄小于CS系的某个学生的学生姓名、年龄和院系;8)使用ANY、ALL 查询,列出其他院系中比WM系所有学生年龄小的学生的姓名;9)使用集合查询查询选修1号课程同时选修2号课程的同学的学号与姓名;2.以实验数据库为基础数据,利用对象资源管理器创建以下视图:1)创建所有学生学号、姓名及年龄的信息视图v_stu_info2)创建CS系学生基本信息视图v_stu_cs3)创建选修课成绩在80分以上的学生的信息视图v_stu_80,包括学生基本情况及成绩。
3. 以实验数据库为基础数据,请使用T-SQL语句完成以下内容,并将SQL语句写在实验报告册中:1) 创建v_CS视图,包括CS系各学生的学号、姓名及年龄,要求进行修改和插入操作时仍需保证该视图只有CS系的学生;2) 创建v_CS_age20视图,包括CS系学生年龄在20岁以上的基本信息;并保证对视图文本的修改都要符合年龄大于20这个条件。
sql server 实验五 分组查询
实验六分组查询、合并结果集、汇总计算1.根据Titles表中的数据,查询各种类图书的平均单价,要求输出图书类别(type)、平均价格信息。
(单分组依据的分组查询)2.根据Titles表中的数据,查询各种类图书的平均单价,要求输出平均单价超过20元的图书类别(type)、平均价格信息。
(单分组依据的分组查询)3.根据employee,publishers,jobs表查询各出版社各岗位的员工数量,输出出版社名称(pub_name),岗位名称(job_desc),员工数量信息。
4.根据employee,publishers,jobs表查询各出版社“Editor”岗位的员工数量,输出出版社名称(pub_name),岗位名称(job_desc),员工数量信息。
5.根据employee表和authors表,分别查询出出版社雇员的姓名信息和作者信息,将两个查询结果合并在一起。
(要求在结果集中注明每个人的身份)6.在titles表中查询出所有商业类(business)书籍的信息(包括type,price,以及翻倍后的价格),并要求最后一并显示商业类书籍的总价,和翻倍后的总价.7.根据titles表,publishers表,查询出各出版社的出版的图书详细信息以及均价信息,和所有出版社出版的全部图书的平均价格信息。
结果输出出版社名称(pub_name),图书名称(title),单价(price),平均价格信息。
--1use pubsselect type,AVG(price)as平均价格from titlesgroup by type--2select type,AVG(price)as平均价格from titlesgroup by typehaving AVG(price)>20--3select pub_name,job_desc,COUNT(*)as总人数from employee,publishers,jobswhere employee.pub_id=publishers.pub_id and employee.job_id=jobs.job_idgroup by pub_name,job_desc--4select pub_name,job_desc,COUNT(*)as总人数from employee,publishers,jobswhere employee.pub_id=publishers.pub_id and employee.job_id=jobs.job_idgroup by pub_name,job_deschaving job_desc='Editor'--5--6select type,price,price*2 as双倍价from titleswhere type='business'compute sum(price),sum(price*2)--7select pub_name,title,price,AVG(price) from titles,publisherswhere titles.pub_id=publishers.pub_id compute avg(price)by pub_namecompute avg(price)。
数据库实验5答案
实验五:数据库综合查询一、实验目的1.掌握SELECT语句的基本语法和查询条件表示方法;2.掌握查询条件种类和表示方法;3.掌握连接查询的表示及使用;4.掌握嵌套查询的表示及使用;5.了解集合查询的表示及使用。
二、实验环境已安装SQL Server企业版的计算机(120台);具有局域网环境,有固定IP;三、实验学时2学时四、实验要求1.了解SELECT语句的基本语法格式和执行方法;2.了解连接查询的表示及使用;3.了解嵌套查询的表示及使用;4.了解集合查询的表示及使用;5.完成实验报告;五、实验内容及步骤1.利用Transact-SQL嵌套语句实现下列数据查询操作。
1) 查询选修了计算机体系结构的学生的基本信息。
select*from studentwhere Sno in(select Sno from coursewhere Cno in(select Cno from sc where Cname='计算机体系结构'))2) 查询年龄比李勇小的学生的学号和成绩。
select a.sno,grade from student a,coursewhere a.sno=course.sno and sage<(select sage from student where sname='李勇')3) 查询其他系中比系编号为‘D1’的学生中年龄最小者要大的学生的信息。
select*from student where dnum<>'D1'AND SAGE>(select min(sage)from student where dnum='D1')4) 查询其他系中比系编号为‘D3’的学生年龄都大的学生的姓名。
select*from student where dnum<>'D3'AND SAGE>all(selectsage from student where dnum='D3')5) 查询‘C1’课程的成绩高于70的学生姓名。
实验五 select数据查询
实验五select数据查询实验目的:1、掌握SELECT语句的基本语法2、掌握子查询的表示3、掌握连接查询的表示4、掌握数据汇总的方法5、掌握SELECT语句的GROUP BY 子句的作用和使用方法6、掌握SELECT语句的ORDER BY 子句的作用和使用方法实验内容:(基于YGGL数据库实现)1、SELECT语句的基本使用(1)查询每个雇员的所有数据(2)查询每个雇员的地址和电话(3)查询employeeid为000001的雇员的地址和电话(4)查询employees表中女雇员的地址和电话,使用as子句将结果中各列的标题分别指定为地址、电话(5)计算每个雇员的实际收入(6)找出所有姓王的雇员的部门号(7)找出所有收入在2000~3000元之间的雇员号码2、子查询的使用(1)查找在财务部工作的雇员情况(2)查找财务部年龄不低于研发部雇员年龄的雇员的姓名(3)查找研发部比所有财务部雇员收入都高的雇员的姓名(4)查找比所有财务部的雇员收入都高的雇员的姓名3、连接查询的使用(1)查询每个雇员的情况以及其薪水的情况(2)查找财务部收入在2200元以上的雇员姓名及其薪水详情4、数据汇总(1)求财务部雇员的平均收入(2)求财务部雇员的平均实际收入(3)求财务部雇员的总人数5、group by 、order by 子句的使用(1)求各部门的雇员数(2)将各雇员的情况按收入由低到高排列实验步骤:1、(1)use ygglselect * from employeesgoselect address,phonenumberfrom employeesgo(3)select address,phonenumberfrom employeeswhere employeeid='000001'go(4)select address as 地址,phonenumber as 电话from employeeswhere sex=0go(5)select employeeid,实际收入=income-outcome from salarygo(6)select departmentidfrom employeeswhere name like '王%'go(7)select employeeidfrom salarywhere income between 2000 and 3000go2、(1)select *from employeeswhere departmentid=(select departmentidfrom departmentswhere departmentname='财务部')go(2)select namefrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='财务部')birthday<=all(select birthdayfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='研发部')) go(3)select namefrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='研发部') andemployeeid in(select employeeidfrom salarywhere income>all(select income from salarywhere employeeid in(select employeeidfrom employeeswhere departmentid in(select departmentidfrom departmentswhere departmentname='财务部')))) go(4)select namefrom employeeswhere employeeid in(select employeeidfrom salarywhere income>all(select incomefrom salarywhere employeeid in(select employeeidfrom employeeswhere departmentid=(select departmentidfrom departmentsgo3、(1)select employees.*,salary.*from employees,salarywhere employees.employeeid=salary.employeeidgo(2)select name,income,outcomefrom employees,salary,departmentswhere employees.employeeid=salary.employeeid and employees.departmentid=departments.departmentid and departmentname='财务部' and income>2000go4、(1)select avg(income) as '财务部平均收入'from salarywhere employeeid in(select employeeidfrom employeeswhere departmentid=(select departmentidfrom departmentswhere departmentname='财务部'))go(2)select avg(income-outcome) as '财务部平均实际收入' from salarywhere employeeid in(select employeeidfrom employeeswhere departmentid=(select departmentidfrom departmentswhere departmentname='财务部'))go(3)select count(employeeid)from employeeswhere departmentid=(select departmentidfrom departmentsgo4、(1)select departmentid,count(employeeid)from employeesgroup by departmentidgo(2)select employees.*,salary.*from employees,salarywhere employees.employeeid=salary.employeeid order by incomego实验报告:。
数据库系统与应用教程(刘金岭)实验五参考答案
实验四简单查询和连接查询2. 简单查询实验用Transact-SQL语句表示下列操作,在“学生选课“数据库中实现其数据查询操作:(1) 查询数学系学生的学号和姓名。
select sno,snamefrom Swhere Sdept='MA'(2) 查询选修了课程的学生学号。
select distinct(sno)from sc;(3) 查询选修课程号为‘C2’的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。
select distinct(sno),gradefrom scwhere cno='C2'order by grade desc,sno asc;(4) 查询选修课程号为‘C2’的成绩在80-90 分之间的学生学号和成绩,并将成绩乘以系数0.8 输出。
select distinct(sno),grade*0.8 as'sore'from scwhere cno='C2'and grade between 80 and 90;(5) 查询数学系(MA)或计算机科学系(CS)姓张的学生的信息。
select*from Swhere dept in('MA','CS')and sname like'张%';(6) 查询缺少了成绩的学生的学号和课程号。
select sno,cnofrom scwhere grade is null;3. 连接查询实验用Transact-SQL语句表示,并在“学生选课”数据库中实现下列数据连接查询操作:(1) 查询每个学生的情况以及他(她)所选修的课程。
select S.*,amefrom S JION sc ON s.sno=sc.sno JION c ON o=o(2) 查询学生的学号、姓名、选修的课程名及成绩。
select s.sno,sname,cname,gradefrom S JION sc ON s.sno=sc.sno JION c ON o=o(3) 查询选修‘离散数学’课程且成绩为90 分以上的学生学号、姓名及成绩。
实验五SQL语言-数据更新操作报告
实验五SQL语言-数据更新操作报告SQL(结构化查询语言)是一种被广泛使用的关系型数据库管理系统查询和编程语言,可以用来操纵数据和其他数据库对象的结构和内容。
本实验采用SQL语言进行对关系型数据库表中的数据更新操作,经过实验室所做操作、实验结果、验证和总结,最终更新操作成功。
实验内容:1. 使用查询语句检查关系表: 首先使用“SELECT * FROM table_name”这样的语句检查表中的内容,确定需要更新的信息,以及数据的形式等。
这样可以确保编写更新语句时,能够正确地更新所需的信息。
2. 编写更新语句: 将检查的结果作为基础,用“UPDATE table_name setcolumn_name = value”这样的语句来修改表中数据项的值,确认这些修改后的值是符合要求的。
3. 在SQL Shell中运行更新语句: 将上述步骤得到的更新语句复制到SQL Shell中,运行,并检查结果。
4. 更新操作验证: 更新操作完成后,应在SQL Shell中通过“SELECT * FROMtable_name”这样的语句,对关系表中的数据项进行再次检查,以确认更新操作的正确性。
5. 总结实验: 通过上述步骤,在关系型数据库表中进行了更新操作,运用了SQL语言相关的操作,并能够准确高效的完成数据更新。
本次实验使用SQL语言进行对关系型数据库表中的数据更新操作,通过查询语句、编写更新语句、在SQL Shell中运行语句、更新操作验证和总结实验等步骤,最终成功地实现了数据更新操作。
这也体现出SQL语言在数据库操作中的强大功能,也让我们对关系型数据库的操作更加熟悉,更能巧妙的应用在各种场合里。
数据库实验报告5多表查询
数据库实验报告5多表查询篇一:数据库实验5实验报告《数据库原理与设计》实验报告报告创建时间:篇二:数据库实验5实验报告淮海工学院计算机工程学院实验报告书课程名:《数据库原理及应用》题目:数据库的完整性班级:软件132 学号:姓名:孙莹莹一.目的与要求1. 掌握索引创建和删除的方法;2. 掌握创建视图和使用视图的方法;3. 掌握完整性约束的定义方法,包括primary key、foreign key等。
二.实验内容1.2.3.4.5.6.7.8.9.10.11.12.13.基于前面建立的factory数据库,使用T-SQL语句在worker表的“部门号”列上创建一个非聚集索引,若该索引已经存在,则删除后重建。
在salary 表的“职工号”和“日期”列创建聚集索引,并且强制唯一性。
建立视图view1,查询所有职工的职工号、姓名、部门名和2004年2月工资,并按部门名顺序排列。
建立视图view2,查询所有职工的职工号、姓名和平均工资;建立视图view3,查询各部门名和该部门的所有职工平均工资;显示视图view3的定义;实施worker表的“性别”列默认值为“男”的约束;实施salary表的“工资”列值限定在0~9999的约束;实施depart表的“部门号”列值唯一的非聚集索引的约束;为worker表建立外键“部门号”,参考表depart的“部门号”列。
建立一个规则sex:@性别=’男’OR @性别=’女’,将其绑定到“性别”上;删除上面第7、8、9和10建立的约束;解除第11题所建立的绑定并删除规则sex。
三.实验步骤1USE factoryGO--判断是否存在depno索引;若存在,则删除之IF EXISTSDROP INDEXGO--创建depno索引CREATE INDEX depno ON workerGOEXEC sp_helpindex workerGO2USE factoryGO--判断是否存在no_date索引;若存在,则删除之IF EXISTSDROP INDEX _dateGO--创建no_date索引CREATE UNIQUE CLUSTERED INDEX no_date ON salaryGOEXEC sp_helpindex salaryGO3USE factoryGO--如果视图viewl存在,则删除IF EXISTSDROP VIEW view1GO--创建视图viewlCREATE VIEW view1AS SELECT TOP 15 worker.职工号,worker.姓名,depart.部门名,salary.工资AS ‘2004年月工资’FROM worker,depart,salaryWHERE worker.部门号=depart.部门号AND worker.职工号=salary.职工号AND YEAR=2004 AND MONTH=2ORDER BY worker.部门号GOSELECT * FROM view1GO4USE factoryGO--如果视图view2存在,则删除IF EXISTSDROP VIEW view2GO--创建视图view2CREATE VIEW view2AS SELECT worker.职工号,worker.姓名,A VG AS ‘平均工资’FROM worker,salaryWHERE worker.职工号=salary.职工号GROUP BY worker.职工号,worker.姓名GOSELECT * FROM view2GO5USE factoryGO--如果视图view3存在,则删除IF EXISTSDROP VIEW view3GO--创建视图view3CREATE VIEW view3AS SELECT depart.部门名,A VG AS ‘平均工资’FROM worker,depart,salaryWHERE worker.部门号=depart.部门号AND worker.职工号=salary.职工号GROUP BY depart.部门名GOSELECT * FROM view3GO6USE factoryGOEXEC sp_helptext ‘view3’GO7USE factoryGOALTER TABLE workerADD CONSTRAINT default_sex DEFAULT ‘男’ FOR 性别GO8USE factoryGOALTER TABLE salaryADD CONSTRAINT check_salary CHECKGO9USE factoryGOALTER TABLE departADD CONSTRAINT unique_depart1 UNIQUE NONCLUSTEREDGOEXEC sp_helpindex depart --显示depart表上的索引GO10USE factoryGOALTER TABLE workerADD CONSTRAINT FK_worker_noFOREIGN KEYREFERENCES departGO11USE factoryGOCREATE RULE sex AS @性别=‘男’ OR @性别=‘女’GOEXEC sp_bindrule ‘sex’,’worker.性别’GO12USE factoryGOALTER TABLE workerDROP CONSTRAINT default_sexGO13USE factoryGOALTER TABLE salaryDROP CONSTRAINT check_salaryGO14USE factoryGOALTER TABLE departDROP CONSTRAINT unique_departGO15USE factoryGOALTER TABLE workerDROP CONSTRAINT FK_worker_noGO16USE factoryGOEXEC sp_unbindrule ‘worker.性别’GODROP RULE sexGO四.测试数据与实验结果第1题图篇三:数据库实验报告5---------------------------------精选公文范文-------------------------- 湖南科技学院电信学院实验报告----------------精选公文范文---------------- 11。
实验五--数据查询——复杂查询
实验五数据查询——复杂查询一、实验目的1.掌握SQLServer查询语句的基本语法2.熟练使用SQL的Select语句对多表进行查询3.熟练掌握并运用SQLServer所提供的函数4.熟练使用SQL语句进行复杂的连接操作二、实验环境(实验的软件、硬件环境)硬件:PC机软件:SQL2000三、实验指导说明请复习相关的查询知识点并完成如下内容。
四、实验内容1.在订单数据库orderDB中,完成如下的查询:(1)用子查询查询员工“张小娟”所做的订单信息。
(2)查询没有订购商品的且在北京地区的客户编号,客户名称和邮政编码,并按邮政编码降序排序。
(3)查询订购了“32M DRAM”商品的订单编号,订货数量和订货单价。
(4)查询与员工编号“E2008005”在同一个部门的员工编号,姓名,性别,所属部门。
(5)查询既订购了P2*******商品,又订购了P2*******商品的客户编号,订单编号和订单金额(6)查询没有订购“52倍速光驱”或“17寸显示器”的客户编号,客户名称。
(7)查询订单金额最高的订单编号,客户姓名,销售员名称和相应的订单金额。
(8)查询订购了“52倍速光驱”商品的订购数量,订购平均价和订购总金额。
(9)查询订购了“52倍速光驱”商品且订货数量界于2~4之间的订单编号,订货数量和订货金额。
(10)在订单主表中查询每个业务员的订单数量(11)统计在业务科工作且在1973年或1967年出生的员工人数和平均工资。
(12)在订单明细表中统计每种商品的销售数量和金额,并按销售金额的升序排序输出。
(13)统计客户号为“C20050001”的客户的订单数,订货总额和平均订货金额(14)统计每个客户的订单数,订货总额和平均订货金额。
(15)查询订单中至少包含3种(含3种)以上商品的订单编号及订购次数,且订购的商品数量在3件(含3件)以上。
(16)查找订购了“32M DRAM”的商品的客户编号,客户名称,订货总数量和订货总金额。
实验5-数据库的简单查询操作答案
实验5 数据库的高级查询操作(一)一、实验目的1.掌握使用查询分析器的使用方法。
2.掌握使用SELECT语句进行数据库单表的高级查询。
3.掌握使用SELECT语句的GROUP BY子句的使用方法。
4.掌握使用SELECT 语句的嵌套查询方法。
5.掌握使用SELECT语句的UNION 合并查询方法。
一、实验内容从查询分析器中导入实验文件夹中的“实验5 数据库的简单查询操作初始化数据.sql ”文件并运行,然后完成下面题目:(提示:学生信息表(Students):属性:学号(Sno),姓名(Sname),性别(Ssex),系别(Sdept),年龄(Sage)。
其中学号设为主键,学号和姓名不能为空,性别取值只能是F或M,系别缺省值为“计算机”。
选课信息表(Enrollment)。
属性:学号(Sno),课程名(Cno),成绩(Grade)。
其中课程号设为主键,课程号和课程名不能为空.。
课程信息表(Course)。
属性:课程号(Cno),课程名称(Cname),学分(Credits)。
)(1)从学生信息表中查询所有学生的所有信息。
SQL代码如下:SELECT *FROM Students(2)从学生信息表中查询所有学生的姓名和学号信息并分别赋予一个中文列名。
SQL代码如下:SELECT Sname AS '姓名', Sno AS '学号'FROM Students(3)从学生信息表中查询姓名是‘Allen’的学生的所有信息。
SQL代码如下:SELECT *FROM StudentsWHERE Sname = 'Allen'(4)从学生信息表中查询学号在1101到1199之间的所有学生的信息SQL代码如下:SELECT *FROM StudentsWHERE Sno BETWEEN 1101 AND 1199(5)从学生信息表中查询年龄小于在18和大于20的所有学生的学号和姓名。
实验五 用LabVIEW编程实现数据的筛选
实验五用LabVIEW编程实现数据的筛选实验五用LabVIEW编程实现数据的筛选一、实验目的:熟悉LabVIEW各种各种菜单和模板掌握LabVIEW中各种数据类型及其使用方法明确LabVIEW中各种程序的结构灵活掌握数组处理函数的各种用法二、实验要求:X和Y均是0到600之间的整数,求所有使0.18X+0.35Y为整数的X和Y的组合,并指出所有满足条件〔X,Y〕的个数。
三、实验仪器计算机,LabVIEW软件。
四、实验原理及步骤程序流程图如下:开始创立每个〔X,Y〕位置上元素为表达式的二维数组转换数组,当上述数组某位置上元素为整数时,该位置元素换位“真〞,否那么该位置上元素为“假〞将上述二维数组转换为一维数组找出一元数组中所有为“真〞的元素的位置,并转换为二维坐标,将二维坐标分别存入两个数组中显示,显示数组中的元素个数即为所有满足条件〔X,Y〕总个数并显示结束具体编程步骤如下:1. 启动LabVIEW,并新建一个扩展名为vi的文件,进入框图程序的编辑。
2. 整数二维数组的创立。
按图一编写程序,通过双层循环和公式节点先创立了每一个〔X,Y〕对应的0.18X+0.35Y的每一个值,由于X和Y都是0到600之间的整数,因此内外循环次数都应为601次,利用循环结构里面的i可作为X和Y的取值。
对Z〔即0.18X+0.35Y〕取整再和Z相减,给差值平方,假设其值为0那么说明这种X和Y的组合满足条件,对应的这位置〔即〔X,Y〕位置〕上的元素为“真〞,否那么为“假〞。
图一3. 将二维数组转换为一维数组。
用数组处理函数“重排数组维数〞即可实现把二维数组转成一维数组的功能,因为上述二维数组行列元素个数都为601,因此总的元素个数为601*601=361201个,给“重排数组维数〞的元素个数赋值为361201,这样就实现了二维数组转一维数组的功能,以便利用众多一维数组处理函数更方便的处理数组问题。
如图二就实现了二维数组向一位数组的转换功能。
数据库实验五 表连接查询
实验五表连接查询1.查找每一个供应商供应的商品的名称,要求显示供应商名称和商品名称。
select Sname,Cnamefrom supplier,commodity,supplyingwhere supplier.Sid=supplying.Sid and commodity.Cid=supplying.Cid2.使用连接查询查找与姓名为‘李云’的采购员签订采购单的供应商的名称。
select distinct(sname)from stock,Employee,supplierwhere stock.Eid=Employee.Eid and stock.Sid=supplier.Sid and Ename like'李云'3.使用关键字IN完成查询,要求查找与姓名为‘李云’的采购员签订采购单的供应商的名称。
select Snamefrom supplierwhere Sid in(select Sidfrom stockwhere Eid in(select Eidfrom Employeewhere Ename='李云'))4.使用左外连接完成如下查询:要求查找所有采购员签订的采购合同的详细信息。
select *from Employee left outer join stock on Employee.Eid=stock.Eid5.使用左外连接完成如下查询:查找所有客户购买的商品详细信息,要求显示客户名称,商品名称,销售数量,商品单价,没有购买商品的客户也要显示。
select CUname,Cname,SDnumber,SDpricefrom customer left outer join sale on customer.CUid=sale.CUidleft outer join saleDetail on sale.SAid=saleDetail.SAidleft outer join commodity on saleDetail.cid=commodity.cid6.请使用内连接完成如下查询:查找每一个供应商供应的商品的种类,要求显示供应商名称,供应的商品的种类。
实验五 连接查询参考答案
--创建学生视图if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_stu]') and OBJECTPROPERTY(id, N'IsView') = 1)drop view [dbo].[v_stu]gocreate view v_stuasselect sid, sname, ssexy, sbdate, Datediff(year, sbdate, getdate()) as sage, stele,ugrade.gid, gname, gyear,udept.did, dname, daddr, dtele, demail,uteacher.tid, tname, tsexy, tbdate, tfield, tprof, tele, qq, email, msnfrom ustudent, ugrade, udept, uteacherwhere ustudent.gid=ugrade.gid and ugrade.did=udept.did and ugrade.tid=uteacher.tid--创建选修课程视图if exists (select * from dbo.sysobjects where id = object_id(N'[dbo].[v_sc]') and OBJECTPROPERTY(id, N'IsView') = 1)drop view [dbo].[v_sc]gocreate view v_scasselect ustudent.sname, usc.*, cname, credit, pcid, chour, cattr, cnumfrom ustudent, usc, ucoursewhere ustudent.sid=usc.sid and usc.cid=ucourse.cid--1、显示所有学生的详细信息,包括学号、姓名、性别、年龄、班级名称,入学年份select sid, sname, ssexy, sage, gname, gyearfrom v_stu--2、显示信息科学与技术系同学的名单,包括学号、姓名、性别、年龄、班级名称、入学年份select sid, sname, ssexy, sage, gname, gyearfrom v_stuwhere dname='信息科学与技术系'--3、显示选修了“数据库”的所有同学的学号、姓名select sid, snamefrom v_scwhere cname='数据库'--4、显示白云同学的班主任老师的姓名、联系电话select tname, telefrom v_stuwhere sname='白云'--5、显示白云同学所在院系的名称、办公地点与联系电话select dname, daddr, dtelefrom v_stuwhere sname='白云'--6、统计计算机科学与技术系每个同学已经修完的学分,显示学号、姓名、学分总数select v_stu.sid, v_stu.sname, sum(v_sc.credit)from v_stu, v_scwhere v_stu.sid=v_sc.sid and v_stu.dname='计算机科学与技术系'group by v_stu.sid, v_stu.sname--7、显示李山同学已修课程及期末成绩select sid, sname, cname, score2from v_scwhere sname='李山'--8、显示计算机科学与技术系、信息科学与技术系的班级名称、入学年份、班导名称与联系电话select distinct gname, gyear, tname, telefrom v_stuwhere dname in ('计算机科学与技术系', '信息科学与技术系')--9、显示2006年入学的同学的学号、姓名、班级名称select sid, sname, gnamefrom v_stuwhere gyear='2006'--10、显示已修数据库的同学的学号、姓名及期末成绩select sid, sname, score2from v_scwhere cname='数据库'--11、显示平均成绩75分以上的课程名称与平均成绩select cname, cast(avg(score2) as dec(5,2)) as '平均成绩'from v_scgroup by cid, cnamehaving avg(score2)>75--12、显示平均成绩80分以上同学的学号、姓名与平均成绩select sid, sname, cast(avg(score2) as dec(5,2)) as '平均成绩'from v_scgroup by sid, snamehaving avg(score2)>80--13、显示一周课时数为6节及以上的教师的姓名与研究领域select tname, tfieldfrom uteacherwhere tid in (select tidfrom ujobtablegroup by tidhaving sum(len(timeseg))>=6)--14、按照班级统计期末平均成绩,显示班级名称与平均成绩select gname, cast(avg(score2) as dec(5,2)) as '平均成绩'from v_stu, uscwhere v_stu.sid=usc.sidgroup by gid, gname--15、按照学期统计计算机科学与技术系的期末平均成绩select term, cast(avg(score2) as dec(5,2)) as '平均成绩'from v_stu, uscwhere v_stu.sid=usc.sid and v_stu.dname='计算机科学与技术系' group by term--16、统计每个院系一周的课时数,显示院系名称与课时数select dname, sum(len(timeseg))from ujobtable, uteacher, udeptwhere ujobtable.tid=uteacher.tid and uteacher.did=udept.didgroup by udept.dname--17、显示没有选修任何课程的学生学号、姓名、班级名称select sid, sname, gnamefrom v_stuwhere sid not in (select sid from usc)--18、显示上过李飞老师的课的学生的学号、姓名与联系电话select sid, sname, stelefrom ustudentwhere gid in (select gidfrom ujobtable, uteacherwhere ujobtable.tid=uteacher.tid and uteacher.tname='李飞')--19、显示一周6节课及以上的课程名称、学分select cname, creditfrom ucoursewhere cid in (select cidfrom ujobtablegroup by cidhaving sum(len(timeseg))>=6)--20、显示一周6节课及以上班级名称select gnamefrom ugradewhere gid in (select gidfrom ujobtablegroup by gidhaving sum(len(timeseg))>=6)--21、查询周四上午第3节有课的同学的学号、姓名与班级名称select sid, sname, gnamefrom v_stu, ujobtablewhere v_stu.gid=ujobtable.gid and week='4' and timeseg like '%3%'--22、显示没有不及格课程的班级的名称select distinct gnamefrom ugrade, ustudent, uscwhere ugrade.gid=ustudent.gidand ustudent.sid=usc.sidand ustudent.gid not in (select distinct gidfrom ustudent, uscwhere ustudent.sid=usc.sid and usc.score2<60)--23、显示已修数据库的同学的信息,包括学号、姓名、班级名称select v_stu.sid, v_stu.sname, gnamefrom v_stu, v_scwhere v_stu.sid=v_sc.sid and v_ame='数据库'--24、显示不及格1门以上的同学学号、姓名、门数select sid, sname, count(cid)from v_scwhere score2<60group by sid, snamehaving count(cid)>1--25、统计每个班级的最高分,显示班级名称、成绩select gname, max(score2) as '最高分'from v_sc, ustudent, ugradewhere v_sc.sid=ustudent.sid and ustudent.gid=ugrade.gidgroup by ugrade.gid, gname--26、显示一周8节课及以上的学生的名单,显示学号、姓名、班级select distinct sid, sname, gnamefrom v_stu, ujobtablewhere v_stu.gid in (select gidfrom ujobtablegroup by gidhaving sum(len(timeseg))>8)--27、显示计算机科学与技术1班一周上课的时间、地点,课程名称select week, timeseg, room, cnamefrom ujobtable, ugrade, ucoursewhere ujobtable.gid=ugrade.gid and ujobtable.cid=ucourse.cid and ugrade.gname='计算机科学与技术1班'--28、统计教授上课的课时数,显示姓名、课时数select tname, sum(len(timeseg))from ujobtable, uteacherwhere ujobtable.tid=uteacher.tid and uteacher.tprof='教授'group by uteacher.tid, uteacher.tname--29、显示没有班导师的班级名称、院系名称select gname, dnamefrom ugrade, udeptwhere ugrade.did=udept.did and ugrade.tid is null--30、显示指导两个班级以上的班导的姓名、所指导的班级名称select tname, gnamefrom uteacher, ugradewhere uteacher.tid=ugrade.tidand uteacher.tid in (select uteacher.tidfrom uteacher, ugradewhere uteacher.tid=ugrade.tidgroup by uteacher.tidhaving count(ugrade.gid)>1)。
实验5,数据查询
知识影响格局格局决定命运
实验5,数据查询
实验55数据查询实验目的:
掌握数据查询SQL命令实验要求:
掌握数据查询SELECT语句的语法格式实验内容:
1.SELECT语句的使用2.连接查询和子查询的使用实验步骤:
说明:恢复song.sql文件中的三个表:Play_list:歌单表Play_fav:歌单收藏表Song_list:歌曲列表要求:仔细观察三个表的结构及各字段含义,写出正确SQL语句。
(1)查询每位艺术家的名字和他的专辑名(2)按歌单订阅人数降序,显示歌单的信息
(3)按歌单创建时间升序,显示歌单的信息(4)查询每个专辑的歌曲数量(5)查询点播次数最多的歌曲(6)查询歌曲数量在2个以上的艺术家及他的歌曲数量
(7)查询订阅人数处于前3名的歌单(8)查询歌曲专辑名中有Straight的歌曲信息(9)查询每曲歌曲的名字和状态。
如状态为1,则显示已删除,若状态为0则显示正常,否则显示未知(10)查询歌曲数量在第2位到第5位的歌单信息(11)查询收藏歌单每日歌曲推荐的用户id和收藏时间
(12)查询每位用户收藏的歌单名字及收藏时间(13)查询所有歌单的被用户收藏的情况(14)查询所有的歌单名和歌曲名歌单名查询:
歌曲名查询:
1。
ACCESS实验-数据查询
ACCESS实验查询一、实验目的1. 掌握各种查询的创建方法2. 掌握查询条件的表示方法3. 掌握应用SQL中SELECT语句进行数据查询的方法4. 理解SQL中数据定义和数据操纵语句二、实验内容与要求1.创建各种查询2.使用SQL中SELECT语句进行数据查询3.使用SQL语句进行数据定义和数据操纵三、实验步骤案例一:利用“简单查询向导”创建选择查询1.单表选择查询要求:以“教师”表为数据源,查询教师的姓名和职称信息,所建查询命名为“教师情况”。
操作步骤:(1)打开“教学管理.accdb”数据库,单击“创建”选项卡,“查询”组——单击“查询向导”弹出“新建查询”对话框。
如图2-1所示。
图2-1创建查询(2)在“新建查询”对话框中选择“简单查询向导”,单击“确定”按钮,在弹出的对话框的“表与查询”下拉列表框中选择数据源为“表:教师”,再分别双击“可用字段”列表中的“姓名”和“职称”字段,将它们添加到“选定的字段”列表框中,如图2-2所示。
然后单击“下一步”按钮,为查询指定标题为“教师情况”,最后单击“完成”按钮。
图2-2简单查询向导2.多表选择查询要求:查询学生所选课程的成绩,并显示“学生编号”、“姓名”、“课程名称”和“成绩”字段。
操作步骤:(1)打开“教学管理.accdb”数据库,在导航窗格中,单击“查询”对象,单击“创建”选项卡,“查询”组——单击“查询向导”弹出“新建查询”对话框。
(2)在“新建查询”对话框中选择“简单查询向导”,单击“确定”按钮,在弹出的对话框的“表与查询”。
先选择查询的数据源为“学生”表,并将“学生编号”、“姓名”字段添加到“选定的字段”列表框中,再分别选择数据源为“课程”表和“选课成绩”表,并将“课程”表中的“课程名称”字段和“选课成绩”表中的“成绩”字段添加到“选定的字段”列表框中。
选择结果如图2-3所示。
图2-3多表查询(3)单击“下一步”按钮,选“明细”选项。
数据库原理实训指导书
数据库原理SQLServer实验指导书数据库系统原理实验一、基本操作实验实验1:数据库的定义实验本实验的实验目的是要求学生熟练掌握和使用SQL、T-SQL、SQL Server Enterpriser Manager Server 创建数据库、表、索引和修改表结构,并学会使用SQL Server Query Analyzer,接收T-SQL语句和进行结果分析。
本实验的内容包括:l)创建数据库和查看数据库属性。
2)创建表、确定表的主码和约束条件,为主码建索引。
3)查看和修改表结构。
4)熟悉SQL Server Enterpriser Manager和 Query Analyzer工具的使用方法具体实验任务如下。
1.基本提作实验1)使用Enterpriser Manager建立图书读者数据库2)在Enterpriser Manager中查看图书读者数据库的属性,并进行修改,使之符合要求。
3)通过Enterpriser Manager,在建好了图书借阅数据库中建立图书、读者和借阅3个表,其结构为:图书(书号,类别,出版社,作者,书名,定价,作者);读者(编号,姓名,单位,性别,电话):借阅(书号,读者编号,借阅日期人)要求为属性选择合适的数据类型,定义每个表的主键,Allow Null(是否允许空值)和Default Value(缺省值)等列级数据约柬。
4)在Enterpriser Manager建立图书、读者和借阅3个表的表级约束:每个表的PrimaryKey (主键)约束;借阅表与图书表间、借阅表与读者表之间的FOREIGNKEY(外码)约柬,要求按语义先确定外码约束表达式,再通过操作予以实现;实现借阅表的书号和读者编号的UNIQUE(惟一性)约束;实现读者性别只能是“男”或“女”的check(检查)约束。
2.提高操作实验建立学生_课程库操作,在SQL Server Enterpriser Manager中实现。
实验5 使用Select 语句查询数据2 汇总查询
实验5 使用Select 语句查询数据(二)——汇总查询【实验目的】
掌握数据汇总查询及其相关子句的使用。
【实验环境】
Sql server 2005
【实验重点及难点】
1)启动SQL Server 2005查询环境。
2)涉及单表的汇总查询。
【实验内容】
1) 打开“SQL Server Management Studio”窗口。
2) 单击“标准”工具栏的“新建查询”按钮,打开“查询编辑器”窗口
3) 在窗口中完成以下SQL查询命令并执行:
①在KC表中,统计每学期的总分数
②在XS_KC表中统计每个学生的选修课程的门数
③统计每个学期所开设的课程门数
④查询各专业的学生人数
⑤将XS_KC表中的数据记录按学号分类汇总,输出学号和平均分
⑥查询平均分大于70且小于80的学生学号和平均分
⑦查询XS_KC表,输出学号、课程号、成绩,并使查询结果首先按照课程号的升序排列,当课程号相同时再按照成绩降序排列,并将查询结果保存到新表TEMP_KC中
⑧查询选修了“101”课程的学生的最高分和最低分
【实验报告总结】
1、写出实验中遇到的问题以及解决办法?
2、用SQL语句表示以上查询,写出结果。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
实验5 数据查询(2)
实验目的:
掌握数据查询SQL命令
实验要求:
掌握数据查询SELECT语句的语法格式
实验内容:
SELECT语句的使用
实验步骤:
说明:按实验步骤对数据库YGGL中的三个表进行数据查询,三个表结构如下(具体参看实验2):
Departments (DepartmentID,DepartmentName,Note)
Employees
(EmployeeID,Name,Sex,Birthday,Education,WorkYear,Address,PhoneNumber,Department ID)
Salary(SalaryID,InCome,OutCome,Time, EmployeeID)
要求:写出正确SQL语句。
(1)查询每个雇员的所有信息
(2) 查询每个部门的部门号和部门名
(3) 查询每个雇员的学历,消除重复行。
(4)查询员工号为000001的员工的地址和电话
(5)查询月收入高于2000元员工号。
(6)查询1970年以后出生的员工姓名和地址。
(7)查询女员工的地址和电话,并使用AS子句将结果中各列的标题分别指定为地址、电话。
(8)查询男员工的姓名和出生日期,并使用AS子句将结果中各列的标题分别指定为姓名、出生日期。
(9)查询员工的姓名和性别,要求Sex值为1时显示“男”,值为0时显示为“女”。
(10)查询员工2012年12月的薪水号和收入水平,收入为2000元以下显示为低收入,2000-3000元显示为中等收入,3000元以上显示为高收入。
(11)查询所有姓“王”员工的部门号及姓名。
(12)找出其地址中不含有“中山”两字的员工的号码、部门号和地址。
(13)找出员工号码中倒数第二个数字为0的员工的姓名、地址和学历。
(14)查询所有2012年11月收入在2000到3000之间的员工号码。
(15)查询所有工作时间不在3到6年之间的所有员工的员工号,员工名和工作时间。
(16)查询男员工和女员工的人数。
(17)按部门列出该部门的员工人数。
(18)按学历列出该学历的员工人数。
(19)查询员工数超过2人的部门名称和员工数量。
(20)按员工的工作时间分组,统计各个工作时间段的员工人数。
(21)将员工信息按出生日期从小到大排列。
(22)查询Employees表中前5位员工信息。
(23) 查询Employees表中第5到第10位员工信息。
(24)查询在财务部工作的雇员的情况。
(25)查找所有收入在2500以下的员工情况。
(26)查询财务部年龄不低于研发部所有雇员年龄的雇员姓名。
select name from employees where departmentid in(select departmentid from departments where departmentname='财务部')and birthday>=aLL (select birthday from employees where departmentid in (select departmentid from departments where departmentname='研发部'));
(27)查询与李丽在同一个部门工作的所有员工的编号和姓名。
(28)查询与朱俊是同样学历的的所有员工的编号、姓名和出生日期。