数据库中SQL查询语句习题含的答案

合集下载

SQL查询(图书数据库-题目)

SQL查询(图书数据库-题目)

SQL查询(图书数据库-题⽬)SQL查询设有⼀图书馆数据库,包括三个表:图书表、读者表、借阅表。

三个表的结构如下图所⽰。

要求:完成以下习题。

表1图书表结构表2读者表结构表3借阅表结构(1)创建图书馆数据库1.⽤SQL语句创建图书馆数据库。

答:CREATE DATABASE 图书馆(2)创建图书馆数据库的三个表。

(在SQL Server 2008平台环境下实现)2.创建图书表3.创建读者表4.创建借阅表(3)针对以上三个表,⽤SQL语⾔完成以下各项查询:5.查询全体图书的信息,其中单价打8折,并且将该列设置别名为’打折价’。

6.显⽰所有借阅者的读者号,并去掉重复⾏。

7.查询所有单价不在20到30之间的图书信息。

8.查询机械⼯业出版社、科学出版社、⼈民邮电出版社的图书信息9.查询既不是机械⼯业出版社、也不是科学出版社出版的图书信息10.查找姓名的第⼆个字符是’建’并且只有两三个字符的读者的读者号、姓名。

11.查找姓名不是以’王’、’张’或’李’开头的所有读者的读者号、姓名。

12.查询⽆归还⽇期的借阅信息。

13.查询机械⼯业出版社或科学出版社出版的图书名,出版社,单价。

14.求读者的总⼈数15.求借阅了图书的读者的总⼈数16.求机械⼯业出版社图书的平均价格、最⾼价、最低价。

17.查询借阅图书本数超过2本的读者号、总本数。

并按借阅本数值从⼤到⼩排序。

(4)针对以上三个表,⽤SQL语⾔完成以下各项多表连接查询、⼦查询、组合查询18.查询读者的读者号、姓名、借阅的图书名、借出⽇期、归还⽇期。

19.查询借阅了机械⼯业出版社出版,并且书名中包含’数据库’三个字的图书的读者,显⽰读者号、姓名、书名、出版社,借出⽇期、归还⽇期。

20.查询⾄少借阅过1本机械⼯业出版社出版的书的读者的读者号、姓名、书名,借阅本数,并按借阅本数多少降序排列。

21.查询与’王平’的办公电话相同的读者的姓名。

22.查询办公电话为’88320701’的所有读者的借阅情况,要求包括借阅了书籍的读者和没有借阅的读者,显⽰他们的读者号、姓名、书名、借阅⽇期。

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案

(完整版)sql语句练习题及答案⼀在数据库 school 中建⽴student , sc, course 表。

学⽣表、课程表、选课表属于数据库School ,其各⾃的数据结构如下:学⽣Student (Sno,Sname,Ssex,Sage,Sdept)课程表course(Cno,Cname,Cpno,Ccredit)学⽣选课SC(Sno,Cno,Grade)⼆设定主码1 Student表的主码:sno2 Course表的主码:cno3 Sc表的主码:sno,cno1写出使⽤ Create Table 语句创建表 student , sc, course 的SQL语句23 删除student表中的元组4在数据库school中删除关系student5在student表添加属性sbirthdate 类型datetimeDelete1 删除所有JSJ 系的男⽣delete from Student where Sdept=’JSJ’ and Ssex=’男’;2 删除“数据库原理”的课的选课纪录delete from SC where Cno in (select Cno fromCourse where Cname=’数据库原理’);Update1 修改0001 学⽣的系科为: JSJ2 把陈⼩明的年龄加1岁,性别改为⼥。

2 修改李⽂庆的1001课程的成绩为93 分3 把“数据库原理”课的成绩减去1分Select 查询语句⼀单表1查询年龄在19⾄21岁之间的⼥⽣的学号,姓名,年龄,按年龄从⼤到⼩排列。

2查询姓名中第2个字为“明”字的学⽣学号、性别。

3查询 1001课程没有成绩的学⽣学号、课程号4查询JSJ 、SX、WL 系的年龄⼤于25岁的学⽣学号,姓名,结果按系排列5按10分制查询学⽣的sno,cno,10分制成绩(1-10分为1 ,11-20分为2 ,30-39分为3,。

90-100为10)6查询 student 表中的学⽣共分布在那⼏个系中。

SQL语句练习及答案

SQL语句练习及答案

sql语句练习题1数据库有如下四个表格:student(sno,sname,sage,ssex,sdpt) 学生表系表(dptno,dname)course(cno,cname, gradet, tno) 课程表sc(sno,cno,score) 成绩表teacher(tno,tname) 教师表要求:完成以下操作1.查询姓"欧阳"且全名为三个汉字的学生的姓名。

select sname from student where sname like “欧阳__‟;2.查询名字中第2个字为"阳"字的学生的姓名和学号。

select sname,sno from student where sname like '_阳%';3.查询所有不姓刘的学生姓名。

select sname,sno,ssexfrom studentwhere sname not like “刘%”;4.查询db_design课程的课程号和学分。

select cno,ccredit from coursewhere cname like 'db_design'5.查询以"db_"开头,且倒数第3个字符为i的课程的详细情况。

select * from course where cname like 'db%i_ _';6.某些学生选修课程后没有参加考试,所以有选课记录,但没有考试成绩。

查询缺少成绩的学生的学号和相应的课程号。

select sno,cno from sc where grade is null;7.查所有有成绩的学生学号和课程号。

select sno,cno from sc where grade is not null;8.查询计算机系年龄在20岁以下的学生姓名。

select sname from student where sdept= 'cs' and sage<20;9.查询选修了3号课程的学生的学号及其成绩,查询结果按分数降序排列。

数据库SQL语句练习题含答案

数据库SQL语句练习题含答案

SQL语句练习练习5. 1. 2: 基于不断滚动的电影数据库的实例:Movie( 电影名title,拍摄年代year ,长度length, inColor ,制片厂名studioName, 制片人证书号producerC# )StarsIn(电影名movieTitle,拍摄年份movieYear ,影星名starName) MovieStar (姓名name,地址address,性别gender ,生日birthdate) MovieExec( 姓名name,地址address ,证书号cert # ,净资产netWorth ) Studio(姓名name, 地址address,总裁证书号presC# )请写出下列SQL 查询语句:* ( a) 找出米高梅制片公司(MGM studios)的地址。

SELECT address AS Studio_AddressFROM Studio WHERE name = 'MGM';( b) 找出桑德拉·布洛克( Sandra Bullock ) 的出生日期( birthdate) 。

SELECT birthdate AS Star_BirthdateFROM MovieStar WHERE name = 'Sandra Bullock';* ( c) 找出在1980 年拍摄过电影的所有影星, 或者拍摄过电影名中含有“Love”的电影的所有影星。

SELECT starName FROM StarsInWHERE movieYear = 1980 OR movieTitle LIKE '%Love%';( d) 找出净资产至少1 000 万美元的所有行政长官。

SELECT name AS Exec_NameFROM MovieExec WHERE netWorth >= 10000000;( e) 找出所有的男影星或者是住址中含有Malibu 的影星。

关系数据库操作语言SQL(三)_真题(含答案与解析)-交互

关系数据库操作语言SQL(三)_真题(含答案与解析)-交互

关系数据库操作语言SQL(三)(总分100, 做题时间90分钟)一、选择题1.以下叙述正确的是______。

• A.字符串数据由英文字母、数字和各种符号组成• B.字符串数据由汉字、英文字母和数字组成• C.字符串数据由汉字、英文字母和各种符号组成• D.字符串数据由汉字、英文字母、数字和各种符号组成SSS_SIMPLE_SINA B C D该问题分值: 2.5答案:D[解析] 字符串数据由汉字、英文字母、数字和各种符号组成,因此本题答案为D。

2.SQL Server支持的准确型数据类型不包括______。

•**•**•****SSS_SIMPLE_SINA B C D该问题分值: 2.5答案:D[解析] 准确型数值是指在计算机中能够精确存储的数,SQL Server支持的准确型数据类型包括:Bigint、Int、Smallint、Tinyint、Bit、numeric(p,q)或decimal(p,q)。

近似型是用于表示浮点型数据的近似数据类型,包括float 和real。

所以本题的答案为D。

3.SQL Server支持的普通编码字符串的数据类型不包括______。

•**(n)•**(n)•****SSS_SIMPLE_SINA B C D该问题分值: 2.5答案:D[解析] SQL Server支持的普通编码字符串的数据类型包括char(n)、varchar(n)和text。

所以本题的答案为D。

4.设在SQL Server 2000中,某关系表需要存储职工的工资信息,工资的范围为2000~10000,设用整型类型存储。

下列数据类型中最合适的是______。

•**•**•****SSS_SIMPLE_SINA B C D该问题分值: 2.5答案:B[解析] int数据类型所表示的数值范围从-231到231-1,也就是说,你可以用int数据类型来表达-2,147,483,648到2,147,483,647(即大约正负二十亿)之间的整数。

3-SQL语句练习题参考答案

3-SQL语句练习题参考答案

标准SQL语言一、选择题1、下面关于SQL标准的叙述中,不正确的是(B )。

A.SQL语言是集数据定义、数据操纵、数据控制功能为一体的语言。

B.SQL语言是一种高度过程化的语言。

C.SQL标准规定数据库是按三级模式结构构建。

D.SQL语言是关系型数据库的标准语言。

E.SQL语言是面向集合的语言。

2、SQL语言中,修改基本表结构的语句是( B )。

A.UPDATE B.ALTER C.DROP D.CREATE3、SQL语言中,删除基本表结构的语句是( C )。

A.DELETE B.ALTER C.DROP D.CREATE4、下面关于“视图”的叙述中,不正确的是( C )。

A.视图是一种“虚表”,它的数据被存放在基本表中。

B.视图提供了逻辑数据独立性。

C.不能通过视图来更新数据库中的数据。

D.视图能提供对数据的安全保护。

5、下面关于SELECT语句的叙述中,不正确的是(C)。

A.SELECT产生的结果是一个集合。

B.HA VING子句必须与GROUP BY子句一起使用。

C.可以省略FROM子句。

D.可以省略WHERE子句。

二、填空题1、在使用INSERT语句向一个表中插入元组时,“值列表”中值的个数、(顺序)、类型必须与“列名表”保持一致。

2、在向一个表中插入元组时,对于未指定默认值且(不能取空值)的字段必须赋值。

3、向表中插入元组时,主键的值不能取(NULL )值。

4、在使用DELETE语句时,如果不指定(where 条件)就会将整个表的数据删除。

5、视图是从一个或几个基本表或(视图)导出的表,它与基本表不同,是一个虚表。

三、判断题1、SQL语言是面向集合操作的语言。

√2、可以通过视图来查询数据,但不能通过视图来更新数据库中的数据。

×3、在SQL Server数据库系统中,向表中插入元组时,系统自动为具有标识属性的列赋值。

√4、在SQL Server数据库系统中,向表中插入元组时,对取值类型为timestamp(时间戳)的列不能赋值,系统自动赋值。

SQL复习题(附部分答案)

SQL复习题(附部分答案)

SQL复习题(附部分答案)⼀、单选题1.根据关系数据基于的数据模型——关系模型的特征判断下列正确的⼀项:(___)A.只存在⼀对多的实体关系,以图形⽅式来表⽰。

B.以⼆维表格结构来保存数据,在关系表中不允许有重复⾏存在。

C.能体现⼀对多、多对多的关系,但不能体现⼀对⼀的关系。

D.关系模型数据库是数据库发展的最初阶段。

答案[B]2、在“连接”组中有两种连接认证⽅式,其中在(___)⽅式下,需要客户端应⽤程序连接时提供登录时需要的⽤户标识和密码。

A、Windows⾝份验证B、SQL Server ⾝份验证C、以超级⽤户⾝份登录时D、其他⽅式登录时答案[B]3、关系数据库中,主键是(___),当运⽤Transact-SQL语句创建主键时,可以是(__)。

⑴ A、为标识表中唯⼀的实体 B、创建唯⼀的索引,允许空值C、只允许以表中第⼀字段建⽴D、允许有多个主键的⑵ A、create table table1(column1 char(13) not null primary key,column2 int not on primary key;B、alter table table1 with nocheck addconstraint [PK_table1] primary key nonclustered ( column1) on primary;C、alter table table1 column1 primary key ;答案[ A C]4、视图是⼀种常⽤的数据对象,可以简化数据库操作,当使⽤多个数据表来建⽴视图时,不允许在该语句中包括(___)等关键字。

A、ORDER BY,COMPUTEB、ORDER BY,COMPUTE,COMPUTR BYC、ORDER BY,COMPUTE BY,GROUP BYD、GROUP BY,COMPUTE BY答案[B ]5、在Transact-SQL语法中,SELECT语句的完整语法较复杂,但⾄少包括的部分(_1_),使⽤关键字(_2_)可以把重复⾏屏蔽,将多个查询结果返回⼀个结果集合的运算符是(_3__),如果在SELECT语句中使⽤聚合函数时,可以在后⾯使⽤⑴ A、SELECT,INTO B、SELECT,FROMC、SELECT,GROUPD、仅SELECT⑵ A、DISTINCT B、UNION C、ALL D、TOP⑶ A、JOIN B、UNION C、INTO D、LIKE⑷ A、GROUP BY B、COMPUTE BY C、HAVING D、COMPUTE 答案[B A B A ]6、SQL Server 2008是⼀个()的数据库系统。

实验5 sql语句练习——图书馆数据库答案

实验5  sql语句练习——图书馆数据库答案

实验5sql语句练习——图书馆数据库实验5 sql语句练习——图书馆数据库实验目的(1)了解SQL Server数据库的逻辑结构和物理结构;(2)了解表的结构特点;(3)了解SQL Server的基本数据类型;(4)了解空值概念;(5)学会在企业管理器中创建数据库和表;(6)学会使用T-SQL语句创建数据库和表。

(7)学会使用T-SQL语句更新数据。

(7)学会使用T-SQL语句创建多种查询。

实验准备首先要明确,能够创建数据库的用户必须是系统管理员,或是被授权使用CREATE DATABASE语句的用户。

其次创建数据库必须要确定数据库名、数据库大小(最初的大小、最大的大小、是否允许增长及增长方式)和存储数据库的文件。

然后,确定数据库包含哪些表,以及所包含的各表的结构,还要了解SQL Server的常用数据类型,以创建数据库的表。

此外还要了解两种常用的创建数据库、表的方法,即在企业管理器中创建和使用T-SQL的CREATE DA TABASE语句。

实验内容假设有5本书设有一图书馆数据库,其中包括3个表,即图书表、读者表和借阅表。

三个表的结构如图:列名说明数据类型约束说明书号图书唯一的编号定长字符串,长度为10 主键书名图书的名称定长字符串,长度为50 空值作者图书的编著者名定长字符串,长度为30 空值出版社图书的出版社定长字符串,长度为30 空值单价出版社确定的图书的单价浮点型,Float 空值读者表结构假设有10位读者列名说明数据类型约束说明读者号读者唯一的编号定长字符串,长度为10 主键姓名读者姓名定长字符串,长度为8 非空值性别读者性别定长字符串,长度为2 非空值办公电话读者办公电话定长字符串,长度为8 空值部门读者所在部门定长字符串,长度为30 空值列名说明数据类型约束说明读者号读者的唯一编号定长字符串,长度为10 外码,引用读者表的主键书号图书的唯一编号定长字符串,长度为20 外码,引用图书表的主键借出日期借出图书的日期定长字符串,长度为8 非空值归还日期归还图书的日期定长字符串,长度为8 空值主键为:(读者号,图书号)(1)用Sql语句创建图书馆数据库Create database Lab05(2)用Sql语句创建上述3个表create table book(bookId char(10)primary key,bookName varchar(50),bookWriter varchar(30),bookPublish varchar(30),bookPrice float)create table reader(readerId char(10) primary key,readerName varchar(8)not null,readerSex char(2)not null,readerOfficeTel char(8),readerDepartment varchar(30))create table 借阅表(readerId char(10),bookId char(10),checkOutTime char(8),checkInTime char(8),primary key(readerId,bookId),foreign key (readerId) references reader(readerId),foreign key (bookId) references book(bookId),)(3)基于图书馆数据库的3个表,用sql语言完成一下操作:1)为图书表增加一列“ISBN”,数据类型为CHAR(10)alter table book add ISBN char(10)2)为刚添加的ISBN列增加缺省值约束,约束名为ISBNDEF,缺省值为‘7111085949’ALTER TABLE book ADD CONSTRAINT ISBNDEF DEFAULT ('7111085949') FOR ISBN 3)删除图书表中ISBN列增加的缺省值约束alter table book drop ISBNDEF4)删除图书表中新增的ISBN列ALTER TABLE book DROP COLUMN ISBN5)查询全体图书的图书号、书名、作者、出版社和单价select bookId,bookName,bookWriter,bookPublish,bookPricefrom book6)查询全体图书的信息,其中单价打8折,并设置该列的别名为‘打折价’select bookId,bookName,bookWriter,bookPublish,(bookPrice*0.8) as打折价from book7)显示所有借阅者的读者号,并去掉重复行select distinct readerIdfrom 借阅表8)查询所有单价在20—30元之间的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPrice between 20 and 309)查询机械工业出版社、科学出版社、人民邮电出版社的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish in('机械工业出版社' , '科学出版社','人民邮电出版社') 10)查询既不是机械工业出版社、人民邮电出版社、也不是科学出版社出版的图书信息select bookId,bookName,bookWriter,bookPublish,bookPrice,ISBNfrom bookwhere bookPublish not in('机械工业出版社' , '科学出版社','人民邮电出版社') 11)查询姓名的第二个字符是’建’,并且只有2个字的读者的读者号及姓名select readerId,readerNamefrom readerwhere readerName like '_建'12)查询姓名不是以‘王’、‘张’或‘李’开头的所有读者的读者号及姓名【方式一】查询出来的结果有问题!select readerId,readerNamefrom readerwhere readerName not in ('王%','张%','李%')【方式二】select readerId,readerNamefrom readerwhere readerName not in(select readerNamefrom readerwhere readerName like'王%'or readerName like'张%'or readerName like'李%' )13)查询无归还日期的借阅信息select book.bookId,book.bookName,reader.readerId,reader.readerName,借阅表.checkOutTime as 借书时间,借阅表.checkInTime as 还书时间from 借阅表,book,readerwhere 借阅表.bookId = book.bookIdand 借阅表.readerId = reader.readerIdand 借阅表.checkInTime is null14)查询机械工业出版社图书的平均价格、最高价、最低价select avg(bookPrice)as 平均价格,max(bookPrice) as 最高价,min(bookPrice) as 最低价from bookwhere bookPublish = '机械工业出版社图书'15)查询读者的基本信息及借阅情况select reader.readerId,reader.readerName ,借阅表.bookId,book.bookName,book.bookPublishfrom reader , 借阅表,bookwhere reader.readerId = 借阅表.readerIdand book.bookId = 借阅表.bookIdand 借阅表.readerId ='1000000007'16)查询至少借阅过1本机械工业出版社出版的图书的读者的读者号、姓名、书名及借阅本数,并按借阅本书多少降序排列select r.Rno,Rname,count(borrow.Bno) 借阅册数from borrow,b,rwhere b.bno=borrow.bno and press='机械工业出版社' and borrow.rno=r.rnogroup by r.rno,Rnameorder by count(borrow.Bno) desc17)查询与‘王小平’的办公电话相同的读者的姓名/* 使用“自连接方式”求解*/select b.readerName,b.readerId,a.readerOfficeTelfrom reader a, reader bwhere a.readerName like '王小平'and a.readerOfficeTel = b.readerOfficeTel/*18)查询所有单价小于平均单价的图书的书号、书名及出版社select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(select avg(bookPrice) as averagePricefrom book)19)查询‘科学出版社’的图书单价比‘机械工业出版社’最高单价还高的图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPublish like '科学出版社' and bookPrice >(select max(bookPrice)from bookwhere bookPublish = '机械工业出版社')20)查询‘科学出版社’的图书中单价比‘机械工业出版社’最低单价高的图书书名及单价select bookId,bookName,bookPublish,bookPricefrom bookwhere bookPrice <(select max(bookPrice)from bookwhere bookPublish = '机械工业出版社')and bookPublish like '科学出版社'21)创建机械工业出版社图书的视图CREATE VIEW 机械工业出版社ViewASSELECT bookId,bookName,bookPriceFROM bookWHERE bookPublish = '机械工业出版社'22)创建一个借阅统计视图,名为CountView,包含读者的读者号和总借阅本数CREATE VIEW CountViewASSELECT readerId as 读者号,count(*) as 总借阅本数FROM 借阅表GROUP BY readerId23)创建一个借阅统计视图,名为CountView10,包含借阅总本数打于2的读者号和总借阅本数CREATE VIEW 借阅统计视图ViewASSELECT readerId as 读者号,count(*) as 总借阅本数FROM 借阅表GROUP BY readerIdHA VING COUNT(*) >2。

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

查询问题:设教学数据库Education 有三个关系: 学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT );学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME )(1)检索计算机系的全体学生的学号,姓名和性别;(2)检索学习课程号为C2的学生学号与姓名; (3)检索选修课程名为“DS ”的学生学号与姓名; (4)检索选修课程号为C2或C4的学生学号; (5)检索至少选修课程号为C2和C4的学生学号; (6)检索不学C2课的学生姓名和年龄; (7)检索学习全部课程的学生姓名;(8)查询所学课程包含学生S3所学课程的学生学号。

(1)检索计算机系的全体学生的学号,姓名和性别; SELECT Sno ,Sname ,Sex FROM SWHERE Sdept =’CS ’;(2)检索学习课程号为C2的学生学号与姓名;(1)首先在C 表中找出“DS ”课程的课程号Cno ; (2)然后在SC 表中找出Cno 等于第一步给出的Cno 集合中的某个元素Cno ;(3)最后在S 关系中选出Sno 等于第二步中Sno 集合中某个元素的元组,取出Sno 和Sname 送入结果表列。

SELECT Sno ,Sname FROM SWHERE Sno IN (SELECT Sno FROM SCWHERE Cno IN (SELECT Cno FROM CWHERE Cname=‘DS ’)); (4)检索选修课程号为C2或C4的学生学号; SELECT Sno FROM SCWHERE Cno=‘C2’ OR Cno=‘C4’;(5)检索至少选修课程号为C2和C4的学生学号; SELECT SnoFROM SC X ,SC YWHERE X.Sno=Y.Sno AND o=‘C2’ AND o=‘C4’ ;(6)检索不学C2课的学生姓名和年龄; 在表S 中找学生,要求这个学生学了全部课程。

换言之,在S 表中找学生,在C 中不存在一门课程,这个学生没有学。

SELECT Sname FROM SWHERE NOT EXISTS (SELECT * FROM CWHERE NOT EXISTS (SELECT * FROM SCWHERE SC.Sno=S.Sno AND o=o ));(8)查询所学课程包含学生S3所学课程的学生学号。

分析:不存在这样的课程Y ,学生S3选了Y ,而其他学生没有选。

SELECT DISTINCT Sno FROM SC AS X WHERE NOT EXISTS (SELECT *FROM SC AS YWHERE Y.Sno=‘S3’ AND NOT EXISTS (SELECT *FROM SC AS Z WHERE Z.Sno=X.Sno AND o=o )); 设教学数据库Education 有三个关系:学生关系S (SNO ,SNAME ,AGE ,SEX ,SDEPT ); 学习关系SC (SNO ,CNO ,GRADE );课程关系C (CNO ,CNAME ,CDEPT ,TNAME ) 查询问题:1:查所有年龄在20岁以下的学生姓名及年龄。

2:查考试成绩有不及格的学生的学号3:查所年龄在20至23岁之间的学生姓名、系别及年龄。

4:查计算机系、数学系、信息系的学生姓名、性别。

5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别6:查所有姓“刘”的学生的姓名、学号和性别。

7:查姓“上官”且全名为3个汉字的学生姓名。

8:查所有不姓“张”的学生的姓名。

9:查DB_Design 课程的课程号。

10:查缺考的学生的学号和课程号。

11:查年龄为空值的学生的学号和姓名。

12:查计算机系20岁以下的学生的学号和姓名。

13:查计算机系、数学系、信息系的学生姓名、性别。

14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。

15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

16:查询学生总人数。

17:查询选修了课程的学生人数。

18:计算选修了C1课程的学生平均成绩。

19:查询学习C3课程的学生最高分数。

20:查询各个课程号与相应的选课人数。

21:查询计算机系选修了3门以上课程的学生的学号。

22:求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。

23:查询每个学生及其选修课程的情况。

24:查询选修了C2课程且成绩在90分以上的所有学生。

25:查询每个学生选修的课程名及其成绩。

26:统计每一年龄选修课程的学生人数。

27:查询选修了C2课程的学生姓名。

28:查询与“张三”在同一个系学习的学生学号、姓名和系别。

29:查询选修课程名为“数据库”的学生学号和姓名。

30:查询与“张三”在同一个系学习的学生学号、姓名和系别。

31:查询选修课程名为“数据库”的学生学号和姓名。

32:查询选修了C2课程的学生姓名。

33:查询所有未选修C2课程的学生姓名。

34:查询与“张三”在同一个系学习的学生学号、姓名和系别。

35:查询选修了全部课程的学生姓名。

36:查询所学课程包含学生S3所学课程的学生学号(1)比较例1:查所有年龄在20岁以下的学生姓名及年龄。

SELECT Sname,SageFROM SWHERE Sage<20; (NOT age>=20)例2:查考试成绩有不及格的学生的学号SELECT DISTINCT SnoFROM SCWHERE grade<60;(2)确定范围例3:查所年龄在20至23岁之间的学生姓名、系别及年龄。

SELECT Sname,Sdept,SageFROM SWHERE Sage BETWEEN 20 AND 23;(3)确定集合例4:查计算机系、数学系、信息系的学生姓名、性别。

SELECT Sname,SsexFROM SWHERE Sdept IN (’CS’, ‘IS’,‘MATH’);例5:查既不是计算机系、数学系、又不是信息系的学生姓名、性别SELECT Sname,SsexFROM SWHERE Sdept NOT IN (’CS’, ‘IS’,‘MATH’);(4)字符匹配例6:查所有姓“刘”的学生的姓名、学号和性别。

SELECT Sname,Sno,SsexFROM SWHERE Sname LIKE ‘刘%’;例7:查姓“上官”且全名为3个汉字的学生姓名。

SELECT SnameFROM SWHERE Sname LIKE ‘上官_ _’;例8:查所有不姓“张”的学生的姓名。

SELECT Sname,Sno,SsexFROM SWHERE Sname NOT LIKE ‘张%’;例9:查DB_Design课程的课程号。

SELECT CnoFROM CWHERE Cname LIKE ‘DB\_Design’ ESCAPE‘\’;(5)涉及空值的查询例10:查缺考的学生的学号和课程号。

SELECT Sno,CnoFROM SCWHERE Grade IS NULL;(不能用=代替) { 有成绩的 WHERE Grade IS NOT NULLL;} 例11:查年龄为空值的学生的学号和姓名。

SELECT Sno,SnameFROM SWHERE Sage IS NULL;(6)多重条件查询例12:查计算机系20岁以下的学生的学号和姓名。

SELECT Sno,SnameFROM SWHERE Sdept=‘CS’ AND Sage<20;例13:查计算机系、数学系、信息系的学生姓名、性别。

SELECT Sname,SsexFROM SWHERE Sdept =’CS’ OR Sdept =‘IS’ OR Sdept =’MATH’);3、对查询结果排序例14:查询选修了C3课程的学生的学号和成绩,其结果按分数的降序排列。

SELECT Sno,GradeFROM SCWHERE Cno=‘C3’ORDER BY Grade DESC;例15:查询全体学生的情况,查询结果按所在系升序排列,对同一系中的学生按年龄降序排列。

SELECT *FROM SORDER BY Sdep,Sage DESC;4.聚合函数的使用例16:查询学生总人数。

SELECT COUNT(*)FROM S例17:查询选修了课程的学生人数。

SELECT COUNT(DISTINCT Sno)FROM SC例18:计算选修了C1课程的学生平均成绩。

SELECT AVG(Grade)FROM SCWHERE Cno=‘C1’;例19:查询学习C3课程的学生最高分数。

SELECT MAX(Grade)FROM SCWHERE Cno=‘C3’;5、对查询结果分组例20:查询各个课程号与相应的选课人数。

SELECT Cno,COUNT(Sno)FROM SCGROUP BY Cno;该SELECT语句对SC表按Cno的取值进行分组,所有具有相同Cno值的元组为一组,然后对每一组作用聚合函数COUNT以求得该组的学生人数。

如果分组后还要求按一定的条件对这些组进行筛选,最终只输出满足指定条件组,则可以使用HAVING短语指定筛选条件。

例21:查询计算机系选修了3门以上课程的学生的学号。

SELECT SnoFROM SCWHERE Sdept=‘CS’GROUP BY SnoHAVING COUNT(*)>3;WHERE子句与HAVING短语的根本区别在于作用对象不同。

WHERE子句作用于基本表或视图,从中选择满足条件的元组。

HAVING短语作用于组,从中选择满足条件的组。

例22:求基本表S中男同学的每一年龄组(超过50人)有多少人?要求查询结果按人数升序排列,人数相同按年龄降序排列。

SELECT Sage,COUNT(Sno)FROM SWHERE Ssex='M'GROUP BY SageHAVING COUNT(*)> 50ORDER BY 2,Sage DESC;二、多表查询1、联接查询例23:查询每个学生及其选修课程的情况。

SELECTS.Sno,Sname,Sage,Ssex,Sdept,Cno,GradeFROM S, SCWHERE S.Sno=SC.Sno;例24:查询选修了C2课程且成绩在90分以上的所有学生。

SELECT S.Sno,SnameFROM S,SCWHERE S.Sno=SC.SnoAND o=‘C2’AND SC.Grade > 90;例25:查询每个学生选修的课程名及其成绩。

相关文档
最新文档