实验2数据库查询语句

合集下载

实验二SQL语言——数据查询操作

实验二SQL语言——数据查询操作

实验二SQL语言——数据查询操作SQL (Structured Query Language) 是一种用于管理关系数据库系统的标准语言。

在数据查询操作方面,SQL 可以帮助用户从数据库中检索想要的数据,通过下面的实验,我们将深入了解 SQL 语言在数据查询操作中的应用。

一、SELECT语句SELECT语句是SQL中最常用的语句之一,它用于从数据库中选择需要查询的数据。

SELECT语句的基本语法如下:```SELECT列名1,列名2,...FROM表名;```例如,我们有一个名为 "Students" 的表,其中包含了学生的姓名、年龄和性别等信息。

要查询学生的姓名和年龄,我们可以使用以下SELECT 语句:```SELECT 姓名, 年龄 FROM Students;```二、WHERE子句WHERE子句用于在SELECT语句中添加过滤条件,只返回满足条件的数据。

下面是WHERE子句的基本语法:```SELECT列名1,列名2,...FROM表名WHERE条件;```例如,我们要查询年龄大于等于18岁的学生信息,可以使用以下SELECT语句:```SELECT * FROM Students WHERE 年龄 >= 18;```三、ORDERBY子句ORDERBY子句用于按照指定的列进行排序,可以按照升序或降序排列。

下面是ORDERBY子句的基本语法:```SELECT列名1,列名2,...FROM表名ORDERBY列名[ASC,DESC];```例如,我们要按照学生的年龄从小到大排序,可以使用以下SELECT语句:```SELECT * FROM Students ORDER BY 年龄 ASC;```四、GROUPBY子句GROUPBY子句用于将查询结果按照一个或多个列进行分组,并对每个组进行聚合操作。

下面是GROUPBY子句的基本语法:```SELECT列名1,列名2,...FROM表名GROUPBY列名1,列名2,...;```例如,我们要统计每个性别的学生人数```SELECT 性别, COUNT(*) FROM Students GROUP BY 性别;```五、HAVING子句HAVING子句用于在GROUPBY子句中添加过滤条件,只返回满足条件的分组。

数据库系统概论实验二

数据库系统概论实验二

《数据库系统概论》第二次实验实验题目:数据库中数据的查询实验目的:学会使用SQL语言进行各种类型的查询,理解各种查询的异同及相互之间的转换。

实验类型:验证实验内容:练习单表查询、嵌套查询、连接查询及集合查询操作步骤:1)打开实验1建立的数据库2)在SQL Server管理器中完成以下单表查询语句查询全体学生的姓名及其出生年份select Sname,2016-SageBirthYearfrom Student;查询选修了课程的学生学号(去掉重复行)selectdistinct Snofrom SC;查询年龄不在20~23岁之间的学生姓名、系别和年龄select Sname,Sdept,Sagefrom Studentwhere Sage>23 or Sage<20/* where Sage NOT BETWEED 20 AND 23; */查询既不是IS、MA,也不是CS系学生的姓名和性别select Sname,Ssexfrom Studentwhere Sdept NOTIN('IS','MA','CS');查询所有姓刘的学生的姓名、学号和性别select Sname,Sno,Ssexfrom Studentwhere Sname LIKE'刘%'查询选修了3号课程的学生的学号及其成绩,结果按分数的降序排列select Sno,Gradefrom SCwhere Cno='3'ORDERBY Grade DESC;计算1号课程的学生平均成绩select AVG(Grade)avggradeFrom SCwhere Cno='1'查询选修了3门以上课程的学生学号select Snofrom SCGROUPBY SnoHAVING COUNT(*)>3;/*3门以上,不包括三门。

好吧。

SQL实验二:数据库查询实验报告

SQL实验二:数据库查询实验报告

实验二数据库的查询实验实验目的和要求(1)掌握SQL Server查询分析器的使用方法,加深对SQL和Transact-SQL语言的查询语句的理解。

(2)熟练掌握简单表的数据查询、数据排序和数据连接查询的操作方法。

(3)熟练掌握数据查询中的分组、统计、计算和组合的操作方法。

实验内容和原理在实验一定义的“学生成绩数据库”中,使用T-SQL 语句完成以下查询:(1 )求计算机系学生的学号和姓名。

(2)求选修了数学的学生学号、姓名和成绩。

(3)求选修01 课程的学生学号和成绩,并要求对查询结果按成绩降序排列,如果成绩相同则按学号升序排列。

(4)查找选修课程的平均成绩位于前三名的学生的学号。

(5)查询计算机系的姓刘且单名的学生的信息。

(6)查询至少选修两门课程的学生学号。

(7)查询学生的学号、课程号以及对应成绩与所有学生所有课程的最高成绩的百分比。

(8)查询选修“数据库”课程,且成绩在80 分以上的学生的学号和成绩。

(9)查询所有姓“王”的同学没有选修的课程名。

(请分别用exists和in完成该查询) (10)查询选修了全部课程的学生的姓名。

(请至少写出两种查询语句)(11)求选修了学生“ 95001”所选修的全部课程的学生学号和姓名。

(12)查询每一门课的间接先修课。

(13)列出所有学生所有可能的选课情况。

(14)列出每个学生的学号及选修课程号,没有选修的学生的学号也一并列出。

(15)输出与“张三”同性别并位于同一个系的所有同学的姓名。

(请至少写出两种查询语句)(16)查询至少被两名男生选修的课程名。

(17)对被两名以上学生所选修的课程统计每门课的选课人数。

要求输出课程号和选修人数,查询结果按人数降序排列;若人数相同,按课程号升序排列。

(18)列出选修课程超过 3 门的学生姓名及选修门数。

(19)检索至少选修课程号为01 和03 的学生姓名。

(20)检索至少选修课程“数学”和“操作系统”的学生学号。

(21 )查询‘操作系统'课程的最高分的学生的姓名、性别、所在系(22)查询数据结构的成绩低于操作系统的成绩的学生姓名及该生的这两门课的成绩(23)所有成绩都在70 分以上的学生姓名及所在系。

数据库原理实验2数据查询

数据库原理实验2数据查询

课程名称数据库原理实验序号 2实验项目数据查询实验地点实验学时实验类型验证性指导教师实验员专业班级学号姓名年月日成绩:A教师该学生本次实验的内容丰富,完成的操作步骤详细具体,实验结果正确,在实验报告的填写中态度十分严谨,对数据分析有自己的见解。

四、实验过程(实验步骤、记录、数据、分析)实验准备:在实验一的基础上(包括数据库的建立、定义表和添加表内容)进行实验,下面分别为depts表、students表、courses表、reports表。

一、简单的选择与投影查询1、无条件查询1.1查询全体学生的详细记录。

这是一个无条件的选择查询,其命令为:其命令为:select * from students运行结果如右图,显示整张表的内容。

1.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(dno)。

这是一个无条件的投影查询,其命令为:select sname,ssexfrom students运行结果如右图,显示了表中的三列。

1.3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。

其命令为:select sno,sname,2017-sage as birth from students运行结果如右图,显示了三列内容。

1.4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。

其命令为:select sname,'birth:' title,YEAR(GETDATE())-sagebirthyear,LOWER(sno) lsnofrom students运行结果如右图,显示了四列内容。

1.5查询选修了课程的学生学号。

其命令为:select distinct snofrom reports运行结果如右图,distinct短语是为了消去查询结果中的重复值。

2、条件查询(1)比较条件1.1查询d03系全体学生的学号(Sno)和姓名(Sname)。

其命令为:select sno,snamefrom studentswhere dno='d03'运行结果如右图,显示了d03系的全体学生姓名与学号。

数据库实验答案实验二Sql

数据库实验答案实验二Sql

(1) 查找有销售记录的客户编号、名称和订单总额。

命令:SELECT a.CustomerNo,CustomerName, sum(quantity*price) orderSumFROM OrderMaster a,OrderDetail b,Customer cWHERE b.orderNo=a.orderNo AND c.CustomerNo=a.CustomerNoGROUP BY a.CustomerNo,CustomerNameORDER BY a.CustomerNo,orderSum DESC(2) 在订单明细表中查询订单金额最高的订单。

命令:SELECT top 1 orderNo,sum(quantity*price)订单金额FROM OrderDetailGROUP BY orderNoORDER BY 订单金额DESC(3) 查询没有订购商品的客户编号和客户名称。

命令:SELECT CustomerNo,CustomerNameFROM CustomerWHERE CustomerNo NOT IN (SELECT CustomerNo FROM OrderMaster)(4) 找出至少被订购3次的商品编号、订单编号、订货数量和订货金额,并按订货数量的降序排序输出。

命令:SELECT a.productNo,orderNo,quantity,(quantity*price) moneyFROM OrderDetail a,(SELECT productNoFROM OrderDetailGROUP BY productNoHA VING COUNT(*)>=3) bWHERE a.productNo =b.productNoORDER BY a.productNo,quantity DESC被订购三件以上的……SELECT b.ProductNo,orderNo,quantity,orderSum=quantity*priceFROM OrderDetail b,(SELECT ProductNo FROM(SELECT ProductNo,sum(quantity)SQfrom OrderDetail GROUP BY ProductNo)aWHERE a.SQ>3)cWHERE b.ProductNo=c.ProductNoORDER BY b.quantity DESC(5) 使用子查询查找32M DRAM的销售情况,要求显示相应的销售员的姓名、性别,销售日期、销售数量和金额,其中性别用“男”、“女”表示。

实验2SQL语言—SELECT查询操作

实验2SQL语言—SELECT查询操作

实验2SQL 语⾔—SELECT 查询操作实验2 SQL 语⾔—SELECT 查询操作实验⽬的要求掌握SQL 程序设计基本规范,熟练运⽤SQL 语⾔实现数据基本查询,包括单表查询、分组统计查询和连接查询。

掌握SQL 嵌套查询和集合查询等各种⾼级查询的设计⽅法等。

要求学⽣掌握SQL Server 查询分析器和T -SQL 语⾔的使⽤⽅法,熟练掌握和使⽤简单表的数据查询﹑数据排序和数据连接查询﹑嵌套查询等操作⽅法。

实验仪器设备学⽣每个⼀台PC 机已安装SQL Server 环境实验主要内容针对SQL Server 数据库设计各种单表查询语句、分组统计查询语句;设计单个表针对⾃⾝的连接查询,设计多个表的连接查询。

理解和掌握SQL 查询语句各个⼦句的特点和作⽤,按照SQL 程序设计规范写出具体的SQL 查询语句,并调试通过。

针对SQL Server 数据库,正确分析⽤户查询要求,设计各种嵌套查询和集合查询。

本次实验基于图书发⾏数据库系统,进⾏实验实验原理# 单表查询单表查询是指仅涉及⼀个表的查询SELECT ⼦句后⾯不仅可以是表中的属性列,还可以是表达式、字符串常量、函数:取消取值重复的⾏|保留取值重复的⾏将DISTINCT 换成ALL ,不加则默认ALL 换码、通配符 和对⼀个或多个属性列进⾏排序,⼦句| |ASC 升序,DESC 降序聚集函数(放在SELECT 后⾯)GROUP BY ⼦句:将查询结果按某⼀列或多列的值进⾏分组,值相等的为⼀组:作⽤于组,从中选择满⾜条件的组# 连接查询⼀个查询同时涉及两个及以上表的称为连接查询,属性列名前⾯加上表名,即SC.Sno 等值连接查询连接运算符为=时称为等值连接⾮等值连接查询连接运算符不是=时称为⾮等值连接⾃然连接若在等值连接中把⽬标列中重复的属性列去掉则为⾃然连接单个表的⾃⾝连接查询多表连接# 嵌套查询将⼀个查询块嵌套在另⼀个查询块的WHERE ⼦句或者HAVING 短语的条件中的查询称为嵌套查询⼦查询带有IN 谓词的⼦查询带有⽐较运算符的⼦查询带有ANY(SOME)或ALL 谓词的⼦查询带有EXIST 谓词的⼦查询# 集合查询集合操作主要包括并操作UNION 、交操作INTERSECT 和差操作EXCEPT实验记录# 检索L1从书店S1购买的图书的书号及其册数;DISTINCT SELECT DISTINCT LNO %_ESCAPEORDER BY ORDER BY [属性列名] ASC|DESC COUNT(*) --统计元组个数COUNT([DISTINCT|ALL]<列名>) --统计⼀列中值的个数SUM(DISTINCT|ALL]<列名>) --统计⼀列值的总和(必须是数值型)AVG([DISTINCT|ALL]<列名>) --统计⼀列值的平均值(必须是数值型)MAX([DISTINCT|ALL]<列名>) --统计⼀列值的最⼤值MIN([DISTINCT|ALL]<列名>) --统计⼀列值的最⼩值GROUP BY HAVING 查询选修了三门以上课程的学⽣的学号SELECT SNO FROM SC GROUP BY SNO HAVING COUNT(*)>3查询每⼀门课的间接选修课SELECT o,SECOND.Cpno FROM Course FIRST,Course SECOND WHERE FIRST.Cpno=o;查询每个学⽣的学号、姓名、选秀的课程名及成绩(涉及三个表的查询)、SELECT Student.Sno,Sname,Cname,Grade FROM Student,SC,CourseWHERE Student.Sno=SC.Sno AND o=o SELECT BNO,QTY FROM 图书发⾏# 检索馆址在“上海”的图书馆及其电话号码;SELECT LNAME,TELFROM 图书馆WHERE CITY='上海';# 检索L4收藏图书的书名;SELECT 图书.BNAMEFROM 图书,图书发⾏WHERE 图书发⾏.LNO='L4'AND 图书发⾏.BNO=图书.BNO;# 检索S3发⾏的图书书名及数量;SELECT 图书.BNAME,图书发⾏.QTYFROM 图书,图书发⾏WHERE 图书发⾏.SNO='S3'AND 图书发⾏.BNO=图书.BNO;# 检索收藏图书“数据库设计”的馆名;SELECT 图书馆.LNAMEFROM 图书馆,图书发⾏,图书WHERE 图书.BNAME='数据库设计'AND 图书.BNO=图书发⾏.BNOAND 图书馆.LNO=图书发⾏.LNO;# 检索没有购买上海新华书店出售的图书的图书馆号LNO;SELECT LNO,LNAMEFROM 图书馆WHERE LNO NOT IN (SELECT 图书发⾏.LNOFROM 图书发⾏,书店WHERE 图书发⾏.SNO=书店.SNO AND书店.SNAME='上海新华书店');思考题如何提⾼数据查询和连接速度。

数据查询(数据库实验2)

数据查询(数据库实验2)

数据库基础与实践实验报告实验二数据查询班级:惠普测试142学号:**********姓名:***日期:2016-11-061 实验目的:1)掌握针对单张基本表的数据查询方法;2)掌握SQL常用库函数及统计汇总查询方法;3)掌握分组查询方法和结果排序的方法;4)掌握连接查询和嵌套查询的方法。

2 实验平台:操作系统:Windows xp。

实验环境:SQL Server 2000以上版本。

3 实验内容与步骤利用实验一创建的sch_id数据库完成下列查询,并对查询语句的功能进行测试。

1.查询学号s5的同学的姓名和所在系,将查询结果的列名显示为中文。

代码:SELECT sn AS姓名,dn AS所在系FROM S,D WHERE S.sno='S5'AND S.dno=D.dno测试记录:S:D:运行结果截图:2.查询教过课程号为C2或C5的课程的教师的编号(写两个查询语句完成同样的功能)代码::SELECT tno FROM TC WHERE cno='C2'OR cno='C5'SELECT tno FROM TC WHERE cno IN('C2','C5')测试记录:运行结果截图:3.查询学号为S5的同学所学课程的平均成绩。

代码:SELECT A VG(score)AS'平均分'FROM SC WHERE sno='S5'测试记录:运行结果截图:4.查询选过课程号为C1的课程的人数。

代码:SELECT COUNT(*)FROM SC WHERE cno='C1'测试记录:运行结果截图:5.查询计算机系学生的最大年龄,显示系名和最大年龄(查询结果的每列都要有列名且为中文)。

代码:SELECT dn AS系名,MAX(age)AS'最大年龄'FROM S,D WHERE S.dno=D.dno AND D.dn='计算机'GROUP BY dn测试记录:运行结果截图:6.查询所有教过课的老师的人数(教过多门课的同一位老师只计数1次)。

数据库运维形考2

数据库运维形考2

【实验2-1】查看INFORMATION_SCHEMA.SCHEMATA 表中的信息。

Select * from schemata【实验2-2】查看INFORMATION_SCHEMA.TABLES 表中的信息。

Select * from TABLES【实验2-3】查看INFORMATION_SCHEMA.COLUMNS 表中的信息。

Select * from COLUMNS【实验2-4】查看INFORMATION_SCHEMA.STATISTICS 表中的信息。

Select * from STATISTICS【实验2-5】查看INFORMATION_SCHEMA.CHARACTER_SETS 表中的信息。

Select * from CHARACTER_SETS【实验2-6】查看INFORMATION_SCHEMA.COLLATIONS表中的信息。

Select * from COLLATIONS【实验2-7】使用CREATE DABASE语句创建school数据库。

Create database school【实验2-8】将school数据库的字符集设为utf-8。

【实验2-9】在school数据库下创建stu_info表,包括stuno varchar(10)、stuname varchar(8)、stubir date、stuage int;创建表course,包括courno varchar(3)、courname varchar(10)、schyear date、credit int;创建stuandcour表,包括stuno varchar(10)、courno varchar(3)、grade int。

Create table stu_info (stuno varchar(10),stuname varchar(8),stubir date,stuage int,)Create table course (courno varchar(3),courname varchar(10),schyear date,credit intCreate table stuandcour (stuno varchar(10),courno varchar(3),grade int)【实验2-10】使用SHOW、DESCRIBE语句查看所建的表。

实验训练2数据查询操作

实验训练2数据查询操作

实验训练2:数据查询操作实验目的:基于实验1创建的汽车用品网上商城数据库Shopping,理解MySQL运算符、函数、谓词,练习Select语句的操作方法。

实验内容:1.单表查询【实验2.1】字段查询(1)查询商品名称为“挡风玻璃”的商品信息。

分析:商品信息存在于商品表,而且商品表中包含商品名称此被查询信息,因此这是只需要涉及一个表就可以完成简单单表查询。

(2)查询ID为1的订单。

分析:所有的订单信息存在于订单表中,而且订单用户ID也存在于此表中,因此这是只需要查询订单表就可以完成的查询。

【实验2.2】多条件查询查询所有促销的价格小于1000的商品信息。

分析:此查询过程包含两个条件,第一个是是否促销,第二个是价格,在商品表中均有此信息,因此这是一个多重条件的查询。

【实验2.3】DISTINCT(1)查询所有对商品ID为1的商品发表过评论的用户ID。

分析:条件和查询对象存在于评论表中,对此商品发表过评论的用户不止一个,而且一个用户可以对此商品发表多个评论,因此,结果需要进行去重,这里使用DISTINCT实现。

(2)查询此汽车用品网上商城会员的创建时间段,1年为一段。

分析:通过用户表可以完成查询,每年可能包含多个会员,如果把此表中的创建年份都列出来会有重复,因此使用DISTINCT去重。

【实验2.4】ORDER BY(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。

分析:从商品表中可以查询出所有类别ID为1的商品信息,结果按照商品ID的降序排列,因此使用ORDER BY语句,降序使用DESC关键字。

(2)查询今年新增的所有会员,结果按照用户名字排序。

分析:在用户表中可以完成查询,创建日期条件设置为今年,此处使用语句ORDER BY。

【实验2.5】GROUP BY(1)查询每个用户的消费总金额(所有订单)。

分析:订单表中包含每个订单的订单总价和用户ID。

现在需要将每个用户的所有订单提取出来分为一类,通过SUM()函数取得总金额。

数据库实验二:简单查询和连接查询(供河南科技大学学生用)

数据库实验二:简单查询和连接查询(供河南科技大学学生用)

实验二:简单查询和连接查询一、实验目的:熟练掌握用SQL语句实现的简单查询和多个数据表连接查询。

二、实验内容:(一)完成下面的简单查询:①查询所有“天津”的供应商明细;②查询所有“红色”的14公斤以上的零件。

③查询工程名称中含有“厂”字的工程明细。

(二)完成下面的连接查询:①等值连接:求s表和j表的相同城市的等值连接。

②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。

③笛卡尔积:求s和p表的笛卡尔积④左连接:求j表和spj表的左连接。

⑤右连接:求spj表和j表的右连接。

三、完成情况:(一)完成下面的简单查询:①查询所有“天津”的供应商明细;select*from swhere city='天津'②查询所有“红色”的14公斤以上的零件select*from pwhere color='红'andweight>'14'③查询工程名称中含有“厂”字的工程明细select*from jwhere jname like'%厂'(二)完成下面的连接查询:①等值连接:求s表和j表的相同城市的等值连接。

select s.*,j.*from s,jwhere s.city=j.city②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。

select sname,jname,pnamefrom s,p,j,spjwhere spj.sno=s.sno andspj.pno=p.pno andspj.jno=j.jno③笛卡尔积:求s和p表的笛卡尔积select*from s,p④左连接:求j表和spj表的左连接select j.jno,jname,city,spj.sno,pno,QTYfrom j left join spj on(j.jno=spj.jno)⑤右连接:求spj表和j表的右连接select j.jno,jname,city,spj.sno,pno,QTYfrom spj right join j on(j.jno=spj.jno)四、实验结果:(一)①查询所有“天津”的供应商明细;②查询所有“红色”的14公斤以上的零件③查询工程名称中含有“厂”字的工程明细(二)①等值连接:求s表和j表的相同城市的等值连接②自然连接:查询所有的供应明细,要求显示供应商、零件和工程的名称,并按照供应、工程、零件排序。

数据库原理实验2数据查询

数据库原理实验2数据查询

课程名称数据库原理实验序号 2实验项目数据查询实验地点实验学时实验类型验证性指导教师实验员专业班级学号姓名年月日成绩:A教师该学生本次实验的内容丰富,完成的操作步骤详细具体,实验结果正确,在实验报告的填写中态度十分严谨,对数据分析有自己的见解。

四、实验过程(实验步骤、记录、数据、分析)实验准备:在实验一的基础上(包括数据库的建立、定义表和添加表内容)进行实验,下面分别为depts表、students表、courses表、reports表。

一、简单的选择与投影查询1、无条件查询1.1查询全体学生的详细记录。

这是一个无条件的选择查询,其命令为:其命令为:select * from students运行结果如右图,显示整张表的内容。

1.2查询全体学生的姓名(Sname)、学号(Sno)、所在系(dno)。

这是一个无条件的投影查询,其命令为:select sname,ssexfrom students运行结果如右图,显示了表中的三列。

1.3查询全体学生的姓名(Sname)、出生年份及学号(Sno)。

其命令为:select sno,sname,2017-sage as birth from students运行结果如右图,显示了三列内容。

1.4查询全体学生的姓名、出生年份和学号,要求用小写字母表示学号中的字母。

其命令为:select sname,'birth:' title,YEAR(GETDATE())-sagebirthyear,LOWER(sno) lsnofrom students运行结果如右图,显示了四列内容。

1.5查询选修了课程的学生学号。

其命令为:select distinct snofrom reports运行结果如右图,distinct短语是为了消去查询结果中的重复值。

2、条件查询(1)比较条件1.1查询d03系全体学生的学号(Sno)和姓名(Sname)。

其命令为:select sno,snamefrom studentswhere dno='d03'运行结果如右图,显示了d03系的全体学生姓名与学号。

实验二 查询数据库

实验二  查询数据库

实验二查询数据库一、实验目的熟悉SQL语句的基本使用方法,学习如何编写SQL语句来实现查询二、实验内容和要求使用SQL查询分析器查询数据,练习查询语句的使用,掌握SELECT 语句的完整结构,包括简单查询、嵌套查询、连接查询等基本实现方法。

三、实验主要仪器设备和材料1.计算机及操作系统:PC机,Windows 2000/xp;2.数据库管理系统:SQL sever 2000/2005;四、实验方法、步骤及结果测试对实验一建立的数据库表进行查询。

实验题目:题目1、查询学生的系别,用小写字母表示。

题目2、查询所有刘姓学生的学号、系别。

实现代码及查询结果截图:select Sno,Sdept from S where Sname like'刘%';题目3、查询教师姓名第二个字是“一”的教师姓名,所教课程名。

实现代码及查询结果截图:select Tname,Cname from C where Tname like'_一_';题目4、查询没有成绩的学生学号,学号降序排列。

实现代码及查询结果截图:select Sno from Sc where Grade is null order by Sno desc;题目5、各科选修课考试成绩及格的人数。

实现代码及查询结果截图:select Count(Sno)from Sc where Grade>60 group by Cno题目6、各学院男生人数,超过2人的输出学院名和人数,并按男生人数降序排列实现代码及查询结果截图:select Sdept,Count(Sno)from S where Ssex='男'group by Sdept having Count(Sno)>2 order by Count(Sno)desc;题目7、查询IS系男女学生人数各是多少实现代码及查询结果截图:select S.Ssex As'性别',count(*) As'IS系人数' from S where S.Sdept='IS'group by Ssex;题目8、找出年龄>23岁,平均成绩不及格的学生学号和平均分实现代码及查询结果截图:select Sno,avg(Grade)from Sc where Sno in(select Sno from S where year(getdate()-Sbirth)>23)group by Sno having avg(Grade)<60题目9、显示所有学生信息,如果该生选修过课程,显示其选修课号和考试成绩实现代码及查询结果截图:select S.*,o,Sc.Grade from S left join Sc on(SC.Sno=S.Sno)题目10、查询每门课都是80分以上的学生的学号与姓名。

数据库系统 实验报告 2 查询

数据库系统 实验报告 2 查询

实验2 查询1、查询“红楼梦“目前可借的各图书编号,及所属版本信息.(是否借出为‘否‘的图书)SELECT BNUM,BUNITFROM BOOK,BOOKNAMEWHERE BOOK.BISBN=BOOKNAME.BISBNAND BNAME='红楼梦'AND BBORROW='否';2、查找高等教育出版社的所有书目及单价,结果按单价降序排序. SELECT BNAME,BPRICEFROM BOOKNAMEWHERE BUNIT='高等教育出版社'ORDER BY BPRICE DESC;3、统计“红楼梦“各版的藏书数量(ISBN不同则版本不同). SELECT COUNT(BISBN)FROM BOOKNAMEWHERE BNAME='红楼梦'GROUP BY BISBN;4、查询…20061234‟号借书证借阅未还的图书的信息. SELECT *FROM BOOKNAMEWHERE BISBN IN(SELECT BISBNFROM BOOKWHERE BNUM IN(SELECT BNUMFROM BORROWWHERE RNUM='20061234'AND RDATE IS NULL));5、查询各个出版社的图书最高单价、平均单价. SELECT MAX(BPRICE),AVG(BPRICE)FROM BOOKNAMEGROUP BY BUNIT;6、要查询借阅了两本和两本以上图书的读者的个人信息. SELECT*FROM READERWHERE RNUM IN(SELECT RNUMFROM BORROWGROUP BY RNUMHAVING COUNT(RNUM)>=2);7、查询…王菲‟的单位、所借图书的书名和借阅日期. SELECT RUNIT,BNAME,BDATEFROM READER,BOOKNAME,BORROWWHERE RNAME='王菲';8、查询每类图书的册数和平均单价. SELECT COUNT(BISBN),AVG(BPRICE) FROM BOOKNAMEGROUP BY BTNUM;9、统计从未借书的读者人数.SELECT COUNT(RNAME)FROM READERWHERE NOT EXISTS(SELECT *FROM BORROWWHERE READER.RNUM=BORROW.RNUM);10、统计参与借书的人数.SELECT COUNT(RNAME)FROM READERWHERE EXISTS(SELECT *FROM BORROW,READERWHERE READER.RNUM=BORROW.RNUM);11、找出所有借书未还的读者的信息及所借图书编号及名称.SELECT DISTINCTBORROW.RNUM,RNAME,RUNIT,RSEX,RADD,RTEL,RID,BORROW.BNUM,BNAME FROM READER,BORROW,BOOKNAMEWHERE READER.RNUM=BORROW.RNUMAND BOOK.BNUM=BORROW.BNUMAND BOOKNAME.BISBN=BOOK.BISBNAND RDATE IS NULL;12、检索书名是以“Internet”开头的所有图书的书名和作者.SELECT BNAME,BWRITERFROM BOOKNAMEWHERE BNAME='Internet%';13、查询各图书的罚款总金额.SELECT SUM(MMONEY)FROM BOOKNAME,MONEY,BORROWWHERE BORROW.BMNUM=MONEY.BMNUM;14、查询借阅及罚款分类信息,如果有罚款则显示借阅信息及罚款名称、罚金,如果没有罚款则罚款名称、罚金显示空(左外连接).SELECT BWNUM,BNUM,RNUM,BDATE,RDATE, BREMARK,MNAME,MMONEY FROM BORROW LEFT OUTER JOIN MONEYON(BORROW.BMNUM=M0NEY.BMNUM);。

实验二-数据的查询、更新

实验二-数据的查询、更新

实验二数据的查询、更新一、实验目的1、掌握用户自定义数据类型的方法2、掌握用T-SQL语句进行数据的插入、修改、删除的方法3、熟练掌握SELECT语句,能够运用该语句完成各种查询二、实验要求1、实验前做好上机实验的准备,针对实验内容,认真复习与本次实验有关的知识,完成实验内容的预习准备工作;2、能认真独立完成实训内容;3、实验后做好实验总结,根据实验情况完成总结报告。

三、实验内容1、用T-SQL语句,创建一用户自定义数据类型:名称为“char20”,数据类型为varchar,长度为20,允许为空。

sp_addtype char20,'varchar(20)',null提示:sp_addtype [@typename=]用户自定义类型的名字[, @phystype=]系统类型名[, [@nulltype=] ' not null | null '] [, [@owner=] '拥有该类型的用户名'] 例:自定义一个名为address的类型,其所属系统类型为varchar,长度为80,不能为空。

sp_addtype address,' varchar(80)', ' not null '2、用T-SQL语句,建立一个“学生课程数据库”,在此基础上建立该数据库包含的学生表,课程表,学生选修表,并向各表插入如下相应的数据。

create database学生课程数据库学生表:Student(Sno,Sname,Ssex,Sage,Sdept) 其中Sno 为主键、Ssex取值为男或女、SageSno Sname Ssex Sage Sdept95001 李敏勇男20 CS95002 刘晨女19 IS95003 王敏女18 MA95004 张立男18 IScreate table student(sno int primary key,sname char(10),ssex char(2)constraint ssex_ch check(ssex in('男','女')),sage int constraint sage_ch check(sage>=15 andsage<=30),sdept char(10))insert into studentvalues(95001,'李敏勇','男',20,'CS')insert into studentvalues(95002,'刘晨','女',19,'IS')insert into studentvalues(95003,'王敏','女',18,'MA')insert into studentvalues(95004,'张立','男',18,'IS')课程表:Course(Cno,Cname,Cpno,Credeit,remarks) 其中Cno为主键、Teacher的类型为Cno Cname Cpno Credit Teacher1 数据库 5 4 王芳2 数学NULL 2 刘新3 信息系统 14 刘新4 操作系统 6 3 高升5 数据结构7 4 宋明6 数据处理NULL 2 张彬7 Pascal语言 6 4 李磊create table course(cno int primary key,cname char(15),cpno int null,credit int,teacher char20)insert into coursevalues(1,'数据库',5,4,'王芳')insert into coursevalues(2,'数学',NULL,2,'刘新')insert into coursevalues(3,'信息系统',1,4,'刘新')insert into coursevalues(4,'操作系统',6,3,'高升')insert into coursevalues(5,'数据结构',7,4,'宋明')insert into coursevalues(6,'数据处理',NULL,2,'张彬')insert into coursevalues(7,'PASCAL语言',6,4,'李磊')学生选修表:SC(Sno,Cno,Grade) 其中Sno,Cno为主键同时又为外键、Grade值在0到100;Sno Cno Grade95001 1 9295001 2 8595001 3 8895002 2 9095003 2 5595004 2 70create table sc(sno int,cno int,grade int constraint grade_ch check(grade between 0 and100),primary key(sno,cno),constraint fk_sno foreign key (sno)references student(sno),constraint fk_cno foreign key (cno)references course(cno),)insert into scvalues(95001,1,92)insert into scvalues(95001,2,85)insert into scvalues(95001,3,88)insert into scvalues(95002,2,90)insert into scvalues(95003,2,55)insert into scvalues(95004,2,70)3、用T-SQL语句,修改上面所建学生课程数据库中数据:1) 向学生表:Student中加入一条记录:(95030,谢非,男,22,CS)并保存insert into studentvalues(95030,'谢非','男',22,'CS')2) 将李敏勇的数据库的成绩改为98分update scset grade=98where o=(select ofrom coursewhere ame='数据库'and sno=(select snofrom studentwhere sname='李敏勇'))3) 删除学生表Student中谢非的记录并保存deletefrom studentwhere sname='谢非'4) 能不能从Student表中删除李敏勇学生的记录,为什么?能不能删除王敏, 张立两个学生的记录?不能, sc表中列sno是外码,参照student表的sno列。

实验二-单表查询(2012)

实验二-单表查询(2012)

实验二单表查询学号:20103191姓名:王晓燕专业:应用物理、实验目的掌握简单SQL查询语句的应用,包括like、top、order by、compute、聚集函数的应用。

、实验内容请在上次实验所建的数据库上实现下列查询练习,并抓图显示其查询结果。

1、基本查询(1)查询Student表中全体学生的全部信息。

结果:(2)检索全体学生的学号、姓名。

结果:班级:sw希罢井丄BMhUD.2、查询时改变列标题的显示检索全体学生的学号、姓名、家庭地址信息,并分别加上 的别名信息。

结果:■臥 jTifkHUlA.Q» QQ 丈静ID心 网魁 矍™;① u 目油 工且(xi■口(凹 甘庇;口 网心.SLT I ti L.> [ d L :l J d J d 已鼻 V f ■T孰研凶■ v | : *u a&i D 3E 机#血苛4 丫缶站护 返曙(2>・ 土 Jd 丄茗主r= r j Jf^T-fift 辿 I oi CGhJri err Jrio UHU kqFh_djR 馬 >tl*T“n ZD :a3L ?L5ti_£erf rirahtr鼻粳4 j 竝畑 e J *fl 'jaurce F 1to-X .* JLfl ■ z丄NE _i STffl ;^ _j 萍 Utj ®irt a -牡H B ._-i ™ fl ww d 占M 」LS*ig 他«l i- H 2O1Q31.. MULUwrZ.Hl 11I select 勺即。

5D aiie =££4)mc.ge ■口x ;二"学生”学号”家庭地址«*fc rmirfC Zrivr3、条件查询(1)查询成绩大于80分的学生的学号及课程号、成绩。

结果朝翻J - 1行i Ch»Iw 4MM| f ^-. ] ?m, ,. HArMc^ifQLUvhN*...出…,或宅祖E卫|疔耳00邮(L:i) 皿」皿・2沌Q0 CD OD 1 Fa TMfliW Ci 酋U 1/ 5■i 証fi』越山九机#z苛4 rh 3茹lil 11hi iSl€io>-匀JS t twto *・越于|£,^1厂些之。

数据库实验二,sql查询语句

数据库实验二,sql查询语句

实验二:数据查询语言实验内容SQL数据查询语句:例5-1:(选择表中的若干列) 求全体学生的学号、姓名、性别和年龄。

select sno,sname,sex,sage from student;例5-2:(不选择重复行) 求选修了课程的学生学号。

select distinct cno from sc where cno is not null;例5-3:(选择表中的所有列) 求全体学生的详细信息。

select * from student;例5-4:(使用表达式) 求全体学生的学号、姓名和出生年份。

select sno,sname,birthday from student;例5-5:(使用列的别名) 求学生的学号和出生年份,显示时使用别名“学号”和“出生年份”。

select sno as"学号",birthday as"出生年份" from student;例5-6:(比较大小条件) 求年龄大于19岁的学生的姓名和年龄。

select sname,age from studentwhere age>19;例5-7:(比较大小条件) 求计算机系或经济管理系年龄大于18岁的学生的姓名、系和年龄。

select sname,depname ,agefrom student,departmentwhere student.depno=department.depnoand age>18;例5-8:(确定范围条件) 求年龄在19岁与22岁(含20岁和22岁)之间的学生的学号和年龄。

select sno,age from studentwhere age in(19,22);例5-9:(确定范围条件) 求年龄不在19岁与22岁之间的学生的学号和年龄。

select sno,age from studentwhere age not in(19,22);例5-10:(确定集合条件) 求在下列各系的学生信息:数学系、计算机系。

实验训练2:数据查询操作

实验训练2:数据查询操作

实验二MySQL数据库操作实验实验目的:基于实验1创建的汽车用品网上商城数据库Shopping,理解MySQL 运算符、函数、谓词,练习Select语句的操作方法。

实验内容:1.单表查询【实验2.1】字段查询(1)查询商品名称为“挡风玻璃”的商品信息。

分析:商品信息存在于商品表,而且商品表中包含商品名称此被查询信息,因此这是只需要涉及一个表就可以完成简单单表查询。

(2)查询ID为1的订单。

分析:所有的订单信息存在于订单表中,而且订单用户ID也存在于此表中,因此这是只需要查询订单表就可以完成的查询。

【实验2.2】多条件查询查询所有促销的价格小于1000的商品信息。

分析:此查询过程包含两个条件,第一个是是否促销,第二个是价格,在商品表中均有此信息,因此这是一个多重条件的查询。

【实验2.3】DISTINCT(1)查询所有对商品ID为1的商品发表过评论的用户ID。

分析:条件和查询对象存在于评论表中,对此商品发表过评论的用户不止一个,而且一个用户可以对此商品发表多个评论,因此,结果需要进行去重,这里使用DISTINCT实现。

(2)查询此汽车用品网上商城会员的创建时间段,1年为一段。

分析:通过用户表可以完成查询,每年可能包含多个会员,如果把此表中的创建年份都列出来会有重复,因此使用DISTINCT去重。

【实验2.4】ORDER BY(1)查询类别ID为1的所有商品,结果按照商品ID降序排列。

分析:从商品表中可以查询出所有类别ID为1的商品信息,结果按照商品ID的降序排列,因此使用ORDER BY语句,降序使用DESC关键字。

(2)查询今年新增的所有会员,结果按照用户名字排序。

分析:在用户表中可以完成查询,创建日期条件设置为今年,此处使用语句ORDER BY。

【实验2.5】GROUP BY(1)查询每个用户的消费总金额(所有订单)。

分析:订单表中包含每个订单的订单总价和用户ID。

现在需要将每个用户的所有订单提取出来分为一类,通过SUM()函数取得总金额。

实验二 数据更新与数据查询实验

实验二 数据更新与数据查询实验

实验二:数据更新与数据查询实验实验目的:理解和掌握数据DML语言,能够熟练地使用SQL DML语言进行数据的增加、删除、修改和查询。

实验内容:1、在MySQL中建立一个名为studentsys的数据库;2、在studentsys中建立以下三个关系模式:学生表:Student(Sno,Sname,Ssex,Sdept)课程表:Course(Cno,Cname,Cpno,Ccredit)学生选课表:SC(Sno,Cno,Grade)具体要求如下:表1 学生表(Student)字段名数据类型是否允许空值主码/外码备注Sno char(11) 否主码学号Sname char(50) 否姓名Ssex char(1) 是性别Sage int 是年龄Sdept char(50) 是院系表2 课程表(Course)字段名数据类型是否允许空值主码/外码备注Cno char(11) 否主码课程号Cname char(50) 否课程名外码,参照Cpno char(11) 是先修课程Course表的CnoCcredit double 是学分表3 选课表(SC)字段名数据类型是否允许空值主码/外码备注主码,外码Sno char(11) 否学号参照Student表的Sno主码,外码Cno char(11) 否课程号参照Course表的Cno Grade double 是分数3、在Student表中添加以下数据:Sno Sname Ssex Sage Sdept 201215121 李勇男20 CS201215122 刘晨女19 CS201215123 王敏女18 MA201215125 张立男19 IS4、在Course表中添加以下数据:Cno Cname Cpno Ccredit1 数据库 42 数学 23 信息系统 1 45、在SC表中添加以下数据:Sno Cno Grade201215121 1 92201215121 2 85201215121 3 88201215122 2 90201215122 3 80建立student表:CREATE TABLE student (Sno char(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学号',Sname char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '姓名',Ssex char(1) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '性别',Sage int(11) NULL DEFAULT NULL COMMENT '年龄',Sdept char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '院系',PRIMARY KEY (`Sno`) USING BTREE);建立course表:CREATE TABLE course (Cno char(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '课程号',Cname char(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '课程名',Cpno char(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '先修课程',Ccredit double(255, 0) NULL DEFAULT NULL COMMENT '学分', PRIMARY KEY (`Cno`, `Cpno`) USING BTREE);建立sc表:CREATE TABLE sc (Sno char(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '学号',Cno char(11) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '课程号',Grade double(255, 0) NULL DEFAULT NULL COMMENT '分数', PRIMARY KEY (`Sno`, `Cno`) USING BTREE);添加student信息:INSERT INTO `student` V ALUES ('201215121', '李勇', '男', 20, 'CS'); INSERT INTO `student` V ALUES ('201215122', '刘晨', '女', 19, 'CS'); INSERT INTO `student` V ALUES ('201215123', '王敏', '女', 18, 'MA'); INSERT INTO `student` V ALUES ('201215125', '张立', '男', 19, 'IS');添加course表信息:INSERT INTO `course` V ALUES ('1', '数据库', 'NULL', 4);INSERT INTO `course` V ALUES ('2', '数学', 'NULL', 2);INSERT INTO `course` V ALUES ('3', '信息系统', '1', 4);添加sc表信息:INSERT INTO `sc` V ALUES ('201215121', '1', 92); INSERT INTO `sc` V ALUES ('201215121', '2', 85); INSERT INTO `sc` V ALUES ('201215121', '3', 88); INSERT INTO `sc` V ALUES ('201215122', '2', 90); INSERT INTO `sc` V ALUES ('201215122', '3', 80);6、将学生201215121的年龄改为22岁。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验项目2 SQL数据操纵语言一、实验课时:4二、实验目的(1) 理解查询的概念和方法。

(2) 掌握SELECT语句在单表查询中的应用。

(3) 掌握SELECT语句在多表连接查询中的应用。

(4) 掌握SELECT语句在嵌套查询中的应用。

(5) 掌握SELECT语句在集合查询中的应用。

(6) 主要掌握使用“查询分析器”进行查询。

三、实验要求(1) 使用“查询分析器”进行查询。

(2) 严格依照题目要求编写SQL查询语句(鼓励同学们在按照题目要求完成查询的前提下尝试其他的查询方式)。

(3) 为了今后可重用本实验项目中编写的SQL语句,最好按实验题目编号将SQL语句保存为.sql文件。

四、实验环境(1) PC机。

(2) SQL Server 2005。

五、实验内容及步骤以下查询均使用实验项目1中创建的COMPANY数据库。

1.单表查询(1)基本查询。

Q0. 使用查询分析器从Employee表中检索出所有员工的姓名。

select FNAME,LNAME from EMPLOYEE Q1.使用查询分析器从Employee表中检索出员工的FNAME、LNAME、SSN、BDATE、SALARY等字段,并分别加上“名”、“姓”、“社会保险号”、“生日”、“工资”的标题。

员工的排序规则为:首先按工资的降序排列,然后按FNAME的字母升序排列。

select Fname as名,lname as姓,SSN as 社会保险号,BDATE as生日,SALARY as工资from employeeorder by Salary DESCselect Fname as名, lname as姓,SSN as社会保险号,BDATE as生日,SALARY as 工资from employeeorder by FNAMEQ2.查询不重复的员工工资值。

select distinct salary from EMPLOYEEQ3.查询没有直接上司的员工姓名。

SELECT FNAME,LNAME FROM EMPLOYEE WHERE Super_ssn is null(2) 基于WHERE子句进行数据查询。

1)基于比较条件。

Q4. 从Employee表中查询出工资大于等于40000的员工资料。

SELECT*FROM EMPLOYEEWHERE SALARY>=400002)基于BETWEEN子句的查询。

Q5. 从Employee表中查询出1960年——1970年之间出生的员工资料。

SELECT*FROM EMPLOYEEWHERE BDATE BETWEEN'1960/01/01' AND'1970/01/01'3)基于IN子句的查询。

Q6.从Employee表中查询出部门号为4或者5的员工资料。

SELECT*FROM EMPLOYEEWHERE Dno IN(4,5)4)基于LIKE子句的查询。

Q7.从Employee表中查询出LNAME中含有字母o的员工资料。

SELECT*FROM EMPLOYEEWHERE LNAME LIKE'%O%'(3) 使用计算列查询。

Q8.从Employee表中检索出员工的FNAME、LNAME、SSN、SALARY等字段(其中SALARY需换算成人民币,汇率假定为1美元=8人民币元),并分别加上“名”、“姓”、“社会保险号”、“人民币工资”的标题。

SELECT Fname AS名,Lname AS姓,SSN AS 社会保险号,8*SALARY AS人民币工资FROM employee2.多表连接查询(使用JOIN)Q9.查询所有为Research部门工作的员工姓名及地址。

select fname,lname,address from employeejoin DEPARTMENTON DNO=Dnumberwhere Dname='research'Q10.对于所有位于Stafford的项目,查询项目的编号、项目负责部门编号以及该部门经理的姓、地址、生日。

selectPname,Dnum ,Lname,Address,Bdate from PROJECTjoin DEPARTMENT ON DNUM=DNUMBERjoin EMPLOYEE ON MGR_ssn=SsnWHERE PLOCATION='Stafford' Q11.查询有两个或以上家属的员工姓名(此题较难,若不能完成者可只查询出员工的SSN而不是姓名)。

select fname,lname from dependent join employee on Essn=Ssngroup by fname,lname,Essnhaving count(*)>2Q12.查询在ProductX项目上每周工作时间超过10小时的部门5的员工姓名。

select Fname ,Lname from works_on join PROJECT ON pno=pnumberjoin EMPLOYEE ON Essn=SSNwhere PNAME='PRODUCTX'andHours>10 and Dno=5Q13.对于每个项目,列出项目名称以及所有员工在此项目上工作的总时间。

select Pname,Sum(hours)as总时间from Works_onjoin PROJECT ON pno=pnumber GROUP BY PnameQ14.对于每个部门,列出部门名称以及此部门员工的平均工资。

select Dname,AVG(salary)as平均工资from employeejoin DEPARTMENT ON Dno=Dnumber GROUP BY DnameQ15.对于每个员工,查询其姓名以及他/她的直接上司的姓名。

select e1.fname,e1.lname,e2.fname as上司名,e2.lnameas上司姓from employee e1left join employee e2 one1.super_ssn=e2.SsnQ16.查询Company数据库中所有员工SSN与DNAME(部门名称)的组合。

select SSN ,DNAME from employee join DEPARTMENT ON Dno=Dnumber Q17.查询有两个或以上“工资大于等于30000员工”的部门名称。

SELECT Dname FROM employeeJOIN DEPARTMENT ON Dno=Dnumber WHERE salary>=30000GROUP BY DNAMEHAVING count(*)>=23.嵌套查询(子查询)Q18.查询没有参与任何部门5控制项目的员工姓名。

select fname,lname from employee where Ssn not in(select ESSN from WORKS_ONwhere pno in(select Pnumber from PROJECT where Dnum=5))Q19.查询工资超过部门5所有员工工资的员工姓名。

select fname,lname from employee where salary >all(select salary from employee where Dno=5)Q20.查询参与了所有项目的员工姓名。

select fname,lname from employee where Ssn in(select Essn from WORKS_ON where pno=all(select pnumber from PROJECT )) Q21.查询至少参与了所有部门4控制项目的员工姓名。

select fname,lname from employee where Ssn not in(select distinct Essn from WORKS_ON where pno not in(select pnumber from PROJECT where Dnum=4))Q22.查询至少参与了所有John Smith参与项目的员工姓名。

select fname, lname from employee where Ssn not in(select distinct Essn from WORKS_ON where pno not in(select pno from WORKS_ONwhere Essn in(select Ssn from employeewhere fname='Jhon'andlname='Smith')))Q23.查询至少有一个家属的部门经理姓名。

select fname,lname from employee where Ssn in(select Mgr_ssn from department where Mgr_ssn in(select Essn from dependent)) Q24.查询有两个或以上隶属员工的部门名称及其“工资大于等于30000员工”总数。

select dname,(select count(*)from employeewhere Salary>=30000 and dno=e.dno) from employee e,departmentwhere dnumber= dnogroup by dname,dnohaving count(*)>=2Q25.查询有两个或以上家属的员工姓名。

select fname,lname from employee where Ssn in(select Essn from dependentgroup by Essnhaving count(*)>=2)4.集合查询Q26.查询符合以下任意条件的项目编号:(1)参与此项目员工的LNAME是Smith;(2)控制此项目的部门经理的LNAME是Smith。

select pnumber from PROJECTwhere pnumber in(select pno from WORKS_ONwhere Essn in(select Ssn from employeewhere lname='Smith'))ordnum in(select dnumber from departmentwhere Mgr_ssn in(select Ssn from employeewhere lname='Smith'))六、注意事项请在本地服务器中的数据库“Company_你的拼音名字”中进行查询。

相关文档
最新文档