《数据的查询操作》

合集下载

SQLServer的表数据简单操作(表数据查询)

SQLServer的表数据简单操作(表数据查询)

SQLServer的表数据简单操作(表数据查询)--表数据查询----数据的基本查询----数据简单的查询--select * | 字段名[,字段名2, ...] from 数据表名 [where 条件表达式]例:use商品管理数据库goselect*from商品信息表select商品编号,商品名称,产地from商品信息表selelct *from商品信息表where产地='辽宁沈阳'理解例⼦--关键字辅助查询----1)distinct关键字(⽤来消除查询结果中的重复⾏,使⽤时紧跟在select命令后)--select distinct * | 字段名[,字段名2, ...] from 数据表名 [where 条件表达式]例:use商品管理数据库goselect distinct产地from商品信息表理解例⼦--2)top关键字(⽤来查找结果中前n条或前n%条记录,⽤法:top n | n percent,使⽤时紧跟在select命令后)--select top n | n percent * | 字段名[,字段名2, ...] from 数据表名 [where 条件表达式]例:use 商品管理数据库goselect top 3 * from 商品信息表 --查询结果的前3条记录select top 30 percent * from 商品信息表 --查询结果的30%条记录--3)between...and...关键字(⽤来查找结果在⼀定范围内的记录,使⽤时放于where后⾯,作为筛选条件)--字段名[not] between 低值 and ⾼值 --加"not"表⽰对满⾜between...and...关键字的查找结果取反值例:use 商品管理数据库goselelct * from 库存信息表 where 库存数量 between 100 and 200 --查询"库存信息表"中"库存数量"在100到200之间的记录--4)in 关键字(⽤来查找结果为指定值的记录,使⽤时放于where后⾯,作为筛选条件)--字段名[not] int (值1,值2,值3,...) --加"not"表⽰对满⾜in关键字的查找结果取反值例:use 商品管理数据库goselelct * from 库存信息表 where 库存数量 in(100,200) --查询"库存信息表"中"库存数量"为100或者200的记录--5)like 关键字(⽤来实现表⽰⼀定范围的模糊查询,主要⽤于字符型字段,使⽤时放于where后⾯,作为筛选条件)--字段名 [not] like '<字符表达式>' --加"not"表⽰对满⾜like关键字的查找结果取反值例:use 商品管理数据库goselect * from 客户信息表 where 客户姓名 like '_⼩%' --查询"客户信息表"中"客户姓名"满⾜筛选条件'_⼩%'的记录--6)in null 关键字(⽤来查询字段中是否包含空值,使⽤时放在where后⾯,作为条件筛选)--字段名 is null --is不可以⽤"="代替,null也不能⽤"0"或空格等代替例:use 商品管理数据库goselelct * from 客户信息表 where 邮箱 is null--数据的统计查询---- 聚合函数查询--count( * | 字段名) --统计数据表中的数据总数sum( 表达式 | 字段名) --计算表达式或字段名中数据的和,表达式或字段名的数据类型要求是数值型avg( 表达式 | 字段名) --计算表达式或字段名中数据的平均值,表达式或字段名的数据类型要求是数值型max( 表达式 | 字段名) --求出表达式或字段名中数据的最⼤值,表达式或字段名的数据类型可以是数值型、字符型或⽇期时间型min( 表达式 | 字段名) --求出表达式或字段名中数据的最⼩值,表达式或字段名的数据类型可以是数值型、字符型或⽇期时间型--为查询结果重命名的3种⽅法:--原字段名 '新字段名'原字段名 as '新字段名''新字段名'=原字段名例:use 商品管理数据库goselect COUNT(*),SUM(进货数量),AVG(进货⾦额),MAX(进货⾦额),MIN(进货⾦额) from 进货信息表select COUNT(*)as'总记录',SUM(进货数量)as'进货数量和',AVG(进货⾦额) '进货⾦额平均数',MAX(进货⾦额) '进货⾦额最⼤值','进货⾦额最⼩值'=MIN(进货⾦额) from 进货信息表--查询结果排序(order by 语句⽤于实现排序操作,可以出现在from或者where语句的后⾯)--order by 字段名1 [,字段名2, ...] [asc | desc] --加asc表⽰升序,加desc表⽰降序,默认升序,关键字asc可以省略例:use 商品管理数据库goselect*from 进货信息表 order by 进货数量 desc --查询进货信息表中的所有字段,并将进货数量进⾏降序排序--查询结果分组⼩计----1)group by...语句 --使⽤时可出现在from语句或者where语句后⾯group by 字段名列表 [ having 条件表达式] --"字段名列表"表⽰按该字段分组。

利用索引优化数据库的日期查询操作(二)

利用索引优化数据库的日期查询操作(二)

在数据库中,日期是一种常用的数据类型,而针对日期的查询操作是经常遇到的需求。

然而,由于日期查询涉及到大量的数据比较和筛选,如果不加以优化,可能会导致数据库查询性能下降。

为了提高数据库的查询效率,我们可以利用索引来优化日期查询操作。

一、索引的作用和原理索引是数据库中一种重要的数据结构,它可以加快数据的检索速度。

在数据库表中创建索引,相当于建立了一个快速查找的目录,通过索引可以快速定位到具体的数据行。

索引的原理是将数据排序并存储在索引文件中,用于快速定位数据。

对于日期查询操作来说,我们可以创建一个日期字段的索引,将日期数据按照从小到大或从大到小的顺序排序,这样在查询时就可以利用二分查找等高效算法来进行查询,从而提高查询性能。

二、选择合适的索引类型在利用索引优化日期查询操作时,我们需要选择合适的索引类型。

在MySQL中,常见的索引类型有B树索引、Hash索引和全文索引。

1. B树索引B树索引是一种平衡多路查找树,它适用于范围查询和单条记录查询。

对于日期查询操作来说,我们通常会涉及到范围查询,例如查询某个日期范围内的数据记录。

在这种情况下,B树索引是比较适合的选择。

2. Hash索引Hash索引将数据按照哈希算法进行分散存储,适用于等值查询。

对于日期查询操作来说,Hash索引并不适用,因为日期查询通常是范围查询,而不是等值查询。

3. 全文索引全文索引适用于模糊查询和全文检索,对于日期查询操作并不适用。

综上所述,对于日期查询操作,我们一般选择B树索引来优化查询性能。

三、使用索引优化日期查询操作的注意事项在利用索引优化日期查询操作时,我们需要注意以下几点:1. 索引的创建在设计数据库表结构时,需要为日期字段创建索引。

可以使用ALTER TABLE语句来为已有表添加索引,语法如下:```ALTER TABLE 表名 ADD INDEX 索引名 (日期字段);```2. 查询条件的写法在进行日期查询时,应尽量避免对日期字段进行函数操作,以免导致索引失效。

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作

实验4:数据库的高级查询操作实验四:数据库的各类数据查询操作一、实验目的掌握SQL程序设计基本规范,熟练运用SQL语言实现数据的各种查询和设计,包括连接查询、嵌套查询、集合查询等。

二、实验内容和要求针对KingbaseES数据库设计单个表针对自身的连接查询,设计多个表的连接查询;设计各种嵌套查询和集合查询。

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

三、实验步骤连接查询1. 查询每个学生及其选修课程的情况:select student.*, sc.* from student, sc where student.sno=sc.sno比较: 笛卡尔集: select student.*, sc.* from student, sc自然连接: select student.sno, sname, ssex, sdept, cno, grade from student, sc where student.sno=sc.sno2. 查询每一门课程的间接先行课(只求两层即先行课的先行课):select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o比较:select /doc/3d4429586.html,o, Second.pcno 间接先行课from course First, course Second where First.pcno=/doc/3d4429586.html,o and Second.pcno is not null3. 列出所有学生的基本情况和选课情况, 若没有选课,则只列出基本情况信息:SQL Server 中: select s.sno, sname, ssex,sdept, cno, grade from student s, sc sc where s.sno*=sc.sno4. 查询每个学生的学号, 姓名, 选修的课程名和成绩:select S.sno, sname, cname, grade from student S, course C, sc SC where S.sno=SC.sno and /doc/3d4429586.html,o=/doc/ 3d4429586.html,o5. 查询平均成绩在80分以上的学生姓名Select sname from student,sc where student.sno=sc.sno GROUP BY sc.snoHAVING AVG(sc.grade)>80;高级查询使用带IN谓词的子查询1.查询与’刘晨’在同一个系学习的学生的信息:select * from student where sdept in(select sdept from student where sname='刘晨')比较: select * from student where sdept =(select sdept from student where sname='刘晨') 的异同比较: select * from student where sdept =(select sdept from student where sname='刘晨') and sname<>'刘晨' 比较: select S1.* from student S1, student S2 where S1.sdept=S2.sdept and S2.sname='刘晨'2.查询选修了课程名为’信息系统’的学生的学号和姓名:SQL Server中: select sno, sname from student where sno in (select sno from sc where cno in(select cno from course where cname='信息系统'))3.查询选修了课程’1’和课程’2’的学生的学号:select sno from student where sno in (select sno from sc where cno='1')and sno in (select sno from sc where cno='2') 比较: 查询选修了课程’1’或课程’2’的学生的sno:select sno from sc where cno='1' or cno='2'比较连接查询:select A.sno from sc A, sc B where A.sno=B.sno and /doc/3d4429586.html,o='1' and/doc/3d4429586.html,o='2'使用带比较运算的子查询1.查询比’刘晨’年龄小的所有学生的信息:select * from student where sage<(select sage from student where sname='刘晨')使用带Any, All谓词的子查询2.查询其他系中比信息系(IS)某一学生年龄小的学生姓名和年龄;select sname, sage from student where sage <any< p=""> (select sage from student where sdept='IS')and sdept<>'IS'3.查询其他系中比信息系(IS)学生年龄都小的学生姓名和年龄:select sname, sage from student where sage <all< p="">(select sage from student where sdept='IS')and sdept<>'IS'4.查询与计算机系(CS)系所有学生的年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student where sage<>all(select sage from student where sdept='CS')使用带Exists谓词的子查询和相关子查询5.查询与其他所有学生年龄均不同的学生学号, 姓名和年龄:select sno,sname,sage from student A where not exists(select * from student B where A.sage=B.sage andA.sno<>B.sno)6.查询所有选修了1号课程的学生姓名:select sname from student where exists(select * from sc where sno=student.sno and cno='1')7.查询没有选修了1号课程的学生姓名:select sname from student where not exists(select * from sc where sno=student.sno and cno='1')8.查询选修了全部课程的学生姓名:select sname from student where not exists(select * from course where not exists( select * from sc where sno=student.sno and cno=/doc/3d4429586.html,o))12. 查询至少选修了学生95002选修的全部课程的学生的学号:select distinct sno from sc A where not exists(select * from sc B where sno='95002'and not exists(select * from sc C where sno=A.sno and cno=/doc/3d4429586.html,o))13. 求没有人选修的课程号cno和cnamecname:select cno,cname from course C where not exists(select * from sc where /doc/3d4429586.html,o=/doc/ 3d4429586.html,o )14. 查询满足条件的(sno,cno)对, 其中该学号的学生没有选修该课程号cno 的课程select sno,cno from student,course where not exists(select * from sc where cno=/doc/3d4429586.html,o and sno=student.sno)15. 查询每个学生的课程成绩最高的成绩信息(sno,cno,grade):select * from sc A where grade=(select max(grade) from sc where sno=A.sno )集合查询1. 查询数学系和信息系的学生的信息;select * from student where sdept='MA' union select * from student where sdept='IS'2. 查询选修了1号课程或2号课程的学生的学号:select sno from sc where cno='1'Unionselect sno from sc where cno='2'思考:1. 连接查询速度是影响关系数据库性能的关键因素。

最全MySQL数据库表的查询操作

最全MySQL数据库表的查询操作

最全MySQL数据库表的查询操作 序⾔ 1、 2、 本节⽐较重要,对数据表数据进⾏查询操作,其中可能⼤家不熟悉的就对于INNER JOIN(内连接)、LEFT JOIN(左连接)、RIGHT JOIN(右连接)等⼀些复杂查询。

通过本节的学习,可以让你知道这些基本的复杂查询是怎么实现的,但是建议还是需要多动⼿去敲,虽然理解了什么是内连接等,但是从理解到学会,是完全不⼀样的感觉。

--WZY⼀、单表查询 1.1、查询所有字段 1.2、查询指定字段 1.3、查询指定记录 1.4、带IN关键字的查询 1.5、带BETWEEN AND 的范围查询 1.6、带LIKE的字符匹配查询 1.7、查询空值 1.8、带AND的多条件查询 1.9、带OR的多条件查询 1.10、关键字DISTINCT(查询结果不重复) 1.11、对查询结果排序 1.12、分组查询(GROUP BY) 1.13、使⽤LIMIT限制查询结果的数量 集合函数查询 1.14、COUNT()函数 1.15、SUM()函数 1.16、AVG()函数 1.17、MAX()函数 1.18、MIN()函数 ⼆、多表查询 ⼩知识 为表取别名 为字段取别名 基于两张表  2.1、普通双表连接查询 2.2、内连接查询 2.3、外连接查询 2.3.1、左外连接查询 2.3.2、右外连接查询 2.4、复合条件连接查询 ⼦查询 2.5、带ANY、SOME关键字的⼦查询 2.6、带ALL关键字的⼦查询 2.7、带EXISTS关键字的⼦查询 2.8、带IN关键字的⼦查询 2.9、带⽐较运算符的⼦查询 合并结果查询 2.10、UNION[ALL]的使⽤三、使⽤正则表达式查询 3.1、查询以特定字符或字符串开头的记录 3.2、查询以特定字符或字符串结尾的记录 3.3、⽤符号"."来替代字符串中的任意⼀个字符 3.4、使⽤"*"和"+"来匹配多个字符 3.5、匹配指定字符串 3.6、匹配指定字符中的任意⼀个 3.7、匹配指定字符以外的字符 3.8、使⽤{n,}或者{n,m}来指定字符串连续出现的次数四、综合案例练习数据表查询操作 4.1、搭建环境 省略 4.2、查询操作 省略 4.3、在已经创建好的employee表中进⾏如下操作 4.3.1、计算所有⼥员⼯(F)的年龄 4.3.2、使⽤LIMIT查询从第3条记录开始到第六条记录 4.3.3、查询销售⼈员(SALSEMAN)的最低⼯资 4.3.4、查询名字以字母N或者S结尾的记录 4.3.5、查询在BeiJing⼯作的员⼯的姓名和职务 4.3.6、使⽤左连接⽅式查询employee和dept表 4.3.7、查询所有2001~2005年⼊职的员⼯的信息,查询部门编号为20和30的员⼯信息并使⽤UNION合并两个查询结果 4.3.8、使⽤LIKE查询员⼯姓名中包含字母a的记录 4.3.9、使⽤REGEXP查询员⼯姓名中包含T、C或者M 3个字母中任意1个的记录 想直接做题的,跳过讲解,直接到练习区。

MySQL中的数据统计和分组查询操作

MySQL中的数据统计和分组查询操作

MySQL中的数据统计和分组查询操作概述MySQL是一种常用的关系型数据库管理系统,用于存储和管理大量结构化数据。

在数据分析和报告生成过程中,数据统计和分组查询是非常常见的操作。

本文将介绍MySQL中的数据统计和分组查询的相关操作,包括使用聚合函数进行数据统计,使用GROUP BY子句进行分组查询以及常见的统计函数和操作符的使用。

一、数据统计操作1.1 聚合函数MySQL提供了很多聚合函数(Aggregate Functions),用于对数据进行统计计算。

常见的聚合函数包括SUM、AVG、MAX、MIN和COUNT等。

- SUM函数用于计算某一列的总和,例如SELECT SUM(sales) FROM orders;- AVG函数用于计算某一列的平均值,例如SELECT AVG(price) FROM products;- MAX函数用于获取某一列的最大值,例如SELECT MAX(age) FROM customers;- MIN函数用于获取某一列的最小值,例如SELECT MIN(quantity) FROM orders;- COUNT函数用于统计某一列的记录数量,例如SELECT COUNT(*) FROM customers; 如果想统计某一列不为NULL的记录数量,可以使用SELECT COUNT(column_name) FROM table_name;1.2 筛选条件在进行数据统计计算时,可以根据特定的条件筛选出需要统计的数据。

可使用WHERE子句来添加条件,例如SELECT SUM(sales) FROM orders WHERE date >= '2022-01-01';此外,还可以使用HAVING子句来添加对统计结果的筛选条件,例如SELECT customer_id, COUNT(*) FROM orders GROUP BY customer_id HAVING COUNT(*) > 100;二、分组查询操作分组查询是一种根据特定的列对数据进行分组的操作,常用于对数据进行分类汇总和分析。

实验三 数据库中的数据查询及视图操作实验报告

实验三  数据库中的数据查询及视图操作实验报告

实验三数据库中的数据查询及视图操作实验报告实验三数据库中的数据查询及视图操作实验报告一、实验目的本实验的主要目的是熟悉数据库中的数据查询和视图操作。

通过本实验,我们可以掌握使用SQL语句进行数据查询和创建视图的方法,进一步提高对数据库的操作能力。

二、实验环境本实验使用MySQL数据库管理系统,并在Windows操作系统下进行实验。

三、实验内容本实验主要包括以下内容:1. 数据查询:使用SELECT语句查询数据库中的数据,并进行排序、过滤和聚合操作。

2. 视图操作:创建和删除视图,以及对视图进行查询和更新操作。

四、实验步骤与结果1. 数据查询首先,我们需要连接到数据库,并选择要查询的表。

假设我们选择的表名为"students",包含以下字段:学号、姓名、性别、年龄、班级。

a. 查询所有学生的信息:```sqlSELECT * FROM students;```执行以上SQL语句后,我们可以得到所有学生的信息,包括学号、姓名、性别、年龄和班级。

b. 查询男生的信息:```sqlSELECT * FROM students WHERE 性别 = '男';```执行以上SQL语句后,我们可以得到所有性别为男的学生的信息。

c. 查询年龄小于20岁的学生的姓名和班级:```sqlSELECT 姓名, 班级 FROM students WHERE 年龄 < 20;```执行以上SQL语句后,我们可以得到年龄小于20岁的学生的姓名和班级。

d. 查询学生按照年龄降序排列的结果:```sqlSELECT * FROM students ORDER BY 年龄 DESC;```执行以上SQL语句后,我们可以得到按照年龄降序排列的学生信息。

e. 查询学生按照班级分组,并统计每个班级的人数:```sqlSELECT 班级, COUNT(*) AS 人数 FROM students GROUP BY 班级;```执行以上SQL语句后,我们可以得到每个班级的人数统计结果。

数据库的四种基本操作

数据库的四种基本操作

数据库的四种基本操作数据库是计算机科学中的重要概念,它是一种组织和管理数据的系统。

为了让数据能够更好地被使用,数据库提供了四种基本操作,包括插入、查询、更新和删除。

在本文中,我们将深入探讨这四种操作的原理、方法和应用。

一、插入插入操作是将数据添加到数据库中的过程。

在插入数据之前,我们需要先创建一个表格来存储数据。

表格是数据库中最基本的数据结构,它由行和列组成,每一行代表一个记录,每一列代表一个属性。

例如,我们可以创建一个名为“学生”的表格,其中包括学生的姓名、年龄、性别等属性。

在插入数据时,我们需要按照表格的结构格式输入数据,例如:INSERT INTO 学生 (姓名, 年龄, 性别) VALUES ('张三', 18, '男');这条语句的意思是将一个名为“张三”的学生记录插入到“学生”表格中,他的年龄为18岁,性别为男。

插入操作是数据库中最基础的操作之一,它可以用于向数据库中添加新的数据,例如注册新用户、录入新订单等。

在插入数据时,我们需要注意数据的完整性和正确性,避免出现数据冗余、重复或错误的情况。

二、查询查询操作是从数据库中检索数据的过程。

查询可以根据特定条件筛选数据,例如按照姓名、年龄、性别等属性进行查询。

在查询之前,我们需要了解数据库中的查询语句,其中最常用的是SELECT 语句。

SELECT语句的基本格式为:SELECT 列名 FROM 表名 WHERE 条件;例如,我们可以查询“学生”表格中所有年龄大于18岁的男性学生,语句如下:SELECT * FROM 学生 WHERE 年龄 > 18 AND 性别 = '男';其中“*”表示查询所有列,WHERE子句中的条件为年龄大于18岁且性别为男。

查询操作是数据库中最常用的操作之一,它可以帮助我们从大量数据中快速找到所需的信息。

在查询数据时,我们需要注意查询语句的正确性和优化性,避免查询结果过多或过少的情况。

sql课程设计项目

sql课程设计项目

sql课程设计项目一、教学目标本课程旨在通过学习SQL语言,使学生掌握数据库的基本操作,能够使用SQL 语言进行数据的查询、更新、删除和插入操作,培养学生解决实际问题的能力。

具体的教学目标如下:1.理解数据库的基本概念和原理。

2.掌握SQL语言的基本语法和操作。

3.了解数据库的设计和优化方法。

4.能够使用SQL语言进行数据的查询、更新、删除和插入操作。

5.能够设计和优化数据库的结构。

6.能够解决实际问题,应用SQL语言进行数据库操作。

情感态度价值观目标:1.培养学生的团队合作意识和沟通能力。

2.培养学生的创新思维和解决问题的能力。

3.培养学生的自主学习和持续学习的意识。

二、教学内容本课程的教学内容主要包括SQL语言的基本概念、语法和操作。

具体的教学大纲如下:1.数据库的基本概念和原理:介绍数据库的定义、特点和应用场景,理解数据库管理系统的作用和功能。

2.SQL语言的基本语法:学习SQL语言的基本语法结构,包括数据类型、运算符、条件表达式等。

3.数据的查询操作:学习使用SELECT语句进行数据的查询,掌握常用的查询条件和排序方法。

4.数据的更新操作:学习使用UPDATE语句进行数据的更新,掌握更新条件和更新规则。

5.数据的删除操作:学习使用DELETE语句进行数据的删除,掌握删除条件和删除规则。

6.数据的插入操作:学习使用INSERT语句进行数据的插入,掌握插入数据的方法和规则。

7.数据库的设计和优化:学习数据库的设计原则和方法,掌握数据库的优化技巧和策略。

三、教学方法本课程采用多种教学方法,以激发学生的学习兴趣和主动性:1.讲授法:通过讲解和演示,使学生掌握SQL语言的基本概念和语法。

2.案例分析法:通过分析和解决实际案例,培养学生的数据库设计和优化能力。

3.实验法:通过上机实验,使学生熟悉SQL语言的操作和应用。

4.小组讨论法:通过小组讨论和合作,培养学生的团队合作意识和沟通能力。

四、教学资源本课程的教学资源包括教材、参考书、多媒体资料和实验设备。

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

《数据的查询操作》
第八次作业1
1.检索年龄大于18岁的女学生的学号和姓名(注意:要给列起别名);
use学生课程数据库
select sno,sname
from student
where sage>18 and ssex='女'
2.检索所有男学生选修的课程号和课程名称(仅在结果中列出10%的数据行)。

use学生课程数据库
select top(10)percent o,cname
from student,sc,course
where student.sno=sc.sno and o=o and ssex='男'
3.查询年龄大于18,并不是信息管理也不是计算机科学的学生的姓名和性别(复合查询);
select sname,ssex
from student
where sage>18 and sdept not in('信息管理','计算机科学')
4..查询以“DB_”开头,和倒数第二个汉字为“导”字的课程信息(模糊查询);
select*
from course
where cname like'DB_%'or cname like'%导_'
5.查询student表和sc表的交叉连接;
select*
from student cross join sc
6.检索王同学不学的课程的课程号和课程名称;
select cno,cname
from course
where cno not in(select cno from sc where sno in(select sno
from student
where sname='王%'))
7.检索全部学生都选修的课程号和课程名称;
SELECT cno,cname
FROM course
WHERE NOT EXISTS
(SELECT*FROM student
WHERE NOT EXISTS
(SELECT*
FROM SC
WHERE SC.Sno=Student.Sno AND o=o))
8.检索所有课程的成绩均高于90分的学生的姓名和年龄;
select sname,sage
from student
where sno in
(select sno
from sc
group by sno
having MIN(grade)>90)
go
9.求刘老师所授的每门课程的平均成绩;
select cno,AVG(grade)
from sc
where cno in(select cno from course where cname in(select job from teacher
where ename like'刘%'))
Group by cno
10.求年龄大于所有女同学的男学生的姓名和年龄
select sname,sage
from student
where sage>all(select sage from student where ssex='女')and ssex='男'
11.求每个学生的总分,要求输出学号和总分数(要求依然保持学生原有的明细分数,并按学号分组汇总)
select sno,grade
from sc
order by sno
COMPUTE SUM(grade)by sno
12.查询各不同平均成绩所对应的学生人数(要求显示各组的单项人数)
select avgr,COUNT(*)
from (select sno,AVG(grade)from sc
group by sno)as sg(sno,avgr)
GROUP BY avgr
13.查询年龄小于18岁和大于20岁的学生的所有信息(要求用并运算实现union);select*
from student
where sage<18
union
select*
from student
where sage>20
14.查询即选修了‘1001’号课程有选修了‘1003’号课程的学生的学号(要求用用交运
算实现intersect);
select sno
from sc
where cno='1001'
intersect
select sno
from sc
where cno='1003'
15.查询选修了‘1002’号课程,但不是工业工程系的学生的学号(要求用差运算实现except)
select sno
from sc
where cno=1002
except
select sno
from student
where sdept!='工业工程'
16.创建一个公用表,该表由课程号、人数和最高分组成,用于存放各门课程的课程号、选修该课的人数及该门课的最高分数,查询该公用表,并按照课程号排序。

WITH gongyongbiao(cno,amount,maxgrade)
AS(SELECT o,COUNT(*),MAX(grade)
FROM course,sc
WHERE o IS NOT NULL
GROUP BY o)
SELECT cno,amount,maxgrade
FROM gongyongbiao
第八次作业2
1.在学生信息表中进行自联接查询,并在连接时使用内链接,返回籍贯是“河南”或者“北
京”的学生学号、姓名、班级编号及籍贯信息。

select student.sno,sname,class,jiguan
from student
where jiguan=‘河南’or jiguan=‘北京’
2.查询人数超过45人所在班级中的学生的学号、姓名和班级名称。

Select 学号,姓名,班级名称
From 学生信息a,班级信息b
Where a.班级编号=b.班级编号 and a.班级编号 in(select 班级编号 from 班级信息where 人数>45)
3.对于成绩大于等于90的数据进行查询,并返回考试成绩的学生的学号、姓名、性别、籍
贯和所在班级名称及年级信息。

(用EXISTS编写语句)
Select a.sno,a.sname,a.ssex,a.jiguan,b.class,b.grade
From 学生信息a inner join 班级信息b
On a.班级编号=b.班级编号
Where exists(select* from 成绩表 where 学号=a.学号 and grade>=90)
4.查询出任意一个大于平均成绩的学生的学号、姓名、班级编号、课程编号和成绩信息。

Select a.sno,a.sname,a.class,o,b.grade
From 学生信息a inner join 成绩表b
On a.学号=b.学号
Where grade>any(select avg(grade) from 成绩表)
5.查询学生姓名为“李文东”所在班级的学生信息,要求返回学生的学号、姓名、性别、
班级编号、班级名称和年级信息
Select a.sno,a.sname,a.ssex,b.banjibianhao,b.banjimingcheng,b.nianjixinxi From 学生信息a inner join 班级信息b on a.班级编号=b.班级编号
Where a.班级编号=(select 班级编号 from 学生信息 where sname=‘李文东’)
6. 查询出所有非计算机系的学生信息,并显示出这些学生的考试成绩,成绩按降序排列显示,要求返回学生的学号、姓名、班级编号、课程编号和成绩信息。

Select a.学号,a.姓名,a.班级编号,b.课程编号,b.成绩
From 学生信息a inner join 成绩表b
On a.学号=b.学号
Where a.学号 not in(select 学号 from 学生信息 where 班级编号 in
(select 班级编号 from 课程信息 where 开课系别=‘计算机系’))
Order by 成绩 desc

Select a.学号,a.姓名,a.班级编号,b.课程编号,b.成绩
From 学生信息a inner join 成绩表b
On a.学号=b.学号
Where a.班级编号 not in(
(select 班级编号 from 课程信息 where 开课系别=‘计算机系’)) Order by 成绩 desc。

相关文档
最新文档