sql数据库习题总集

本文详细介绍了SQL数据库的各种查询技巧,包括基础查询、综合查询、期中考试题目及综合练习,涵盖视图创建、索引、T-SQL编程等。内容涉及条件查询、聚合函数、视图应用、索引管理和存储过程等,是学习和巩固SQL知识的实用资料。
摘要由CSDN通过智能技术生成

基础查询

1.显示所有年龄不到20岁的所有男生信息

Use jxgl
go
Select *
From s
Where sex=’男’ and datediff(yy,birth,getdate())<20

2.查询书名中含有“数据库”的图书信息

Select *
From c
Where cname like ‘%数据库%’

3.查询书名中含有“DB_“的图书信息

Select *
From c
Where cname like ‘%DB@_%’escape ‘@’

4.查询姓名以“张”或“李”开头的所有同学的信息

Select *
From s
Where sname like ‘[张李]%’

5.查询姓名不是以“张”或“王”开头的所有同学的信息

Select *
From s
Where sname not like ‘[张李]%’

6.查询图书定价在20至50元的图书信息

Select *
Into aa
From book
Where price between 20 and 50

7.查询既不是“清华大学出版社”,也不是“高等教育出版社的”的图书信息

Select *
From book
Where bpc not in (‘清华大学出版社’,‘高等教育出版社’)

8.查询BOOK表中的图书号、书名、图书价格及六折后的价格,并将六折后价格设置别名为“折后价”,将查询结果生成一个新表

use jxgl
go
select bno 图书号,bname 书名,price 图书价格,0.6*price 折后价
Into NEWBOOK
from book

9.查询清华大学出版社所有的图书信息,并按照定价降序排列;

use jxgl
go
select bno 图书号,bname 书名,price 图书价格,0.6*price 折后价
from book

10.查询出版社为“清华大学出版社”和“高等教育出版社”的所有价格大于30的图书信息,并按照定价升序排序;

use jxgl
go
select *
from book
where bpc in ('清华大学出版社','高等教育出版社') and price>30
order by price asc

11.查询BOOK表中清华大学出版社的图书信息,要求显示定价排前10的图书信息
use jxgl
go
select top 10
from book
where bpc in (‘清华大学出版社’)
order by price asc
12.查询所有先修课为空值的课程编号,课程名及学分

use jxgl
go
select cno,cname,credit
from c
where tperiod is null

13.查询已开设的课程的课程号,并去掉重复行;

use jxgl
go
select distinct cno
from c

14.查询开设过的课程总门数;

use jxgl
go
select count(*)
from c

15.查询每个同学选修课程的信息,输出学号,总分数,平均分,最高分和最低分

```bash
use jxgl
go
select count(*)
from c
use jxgl
go
select sno 学号,sum(grade) 总分,avg(grade) 平均分,max(grade) 最高分 ,min(grade) 最低分
from sc
group by sno

16.将全部选修成绩大于等于60分的课程,按照课程号分组求出该课程的平均分,显示平均分大于70分的课程的课程号和平均分。

use jxgl
go
select cno 课程号,avg(grade) 平均分
from sc
where grade>=60
group by cno
having avg(grade)>70

综合查询

(1)查询灾害信息工程系的学生数据并保存到ZHXX表中;

Use jxgl
Go
Select sno,sname,sex,birth,homadd,dname
Into ZHXX
From s,dept
Where s.dno=dept.dno and dname=’灾害信息工程系’

(2)查询选修了课程号为“2008583”的所有学生的学号、姓名、所在系名称;

Use jxgl
Select s.sno,sname,dname
From s,sc,dept
Where s.sno=sc.sno and s.dno=dept.dno and cno=’2008583’
Group by s.ano,sname,dname

(3)查询各系的女生人数,并分别对列重命名为“系名”和“女生人数”;

Use jxgl
Go
Select dname 系名,count(distinct sno) 女生人数
From s,dept
Where dept.dno=s.dno and sex=’女’
Group by dname

(4)查询每门课程的课程号、课程名、最高分、最低分和平均分;

Use jxgl
Go
Select c.cno 课程号,cname 课程名,max(grade) 最高分,min(grade) 最低分,avg(grade) 平均分
From c,sc
Where c.cno=sc.cno
Group by c.cno,cname

(5)查询每门课程成绩都在90分以上学生的学号、姓名和所在系名称;

Use jxgl
Go
Select s.sno,sname,dname
From s,sc,dept
Where s.sno=sc.sno and s.dno=dept.dno
Group by s.sno,sname,dname
Having min(grade)>90

(6)查询选修“2008583”课程的学生中,成绩比全校该门课程平均成绩高的学生人数;

Use jxgl
Go
Select count(distinct sno)
From sc
Where grade>
(select avg(grade)
From sc
Where cno=’2008583’ and cno=’2008583’)

(7)查询各系的学生人数、开设课程门数,要求输出系名、学生人数和课程门数;

Use jxgl
Go
Select dname 系名,count(distinct s.sno) 学生人数,count(distinct cno)课程门数
From s,sc,dept
Where s.sno=sc.sno and s.dno=dept.dno
Group by dname

(8)查询比“机械工业出版社”出版的所有图书的定价都高的书号、书名和出版社;

Use jxgl
Go
Select bno 书号,bname 书名,bpc 出版社
From book 
Where price>
(select max(price)
From book 
Where bpc=’机械工业出版社’
And bpc<>’机械工业出版社’)

(9)查询没有使用“数据库系统概论”作为教材的课程名称;
!=也是不是

Select cname 课程名
From c,book
Where bname not in (‘数据库系统概论’) and c.bno=book.bno

(10)查询所有没有选修课程的学生学号和姓名;

Use jxgl
Go
Select sno学号,sname 姓名
From s
Where not exists
(select *
From sc
Where sc.sno=s.sno)

(11)查询选修了课程“2008583”或者选修了课程“2008585”的学生学号及姓名;

Use jxgl
Go
Select s.sno,sname
From s,sc
Where cno=’2008583’and s.sno=sc.sno
Union
Select s.sno,sname
From s,sc
Where cno=’2008585’and s.sno=sc.sno

(12)查询与“数据库系统概论”出版社相同且作者相同的图书信息;

Select se.bno,se.bname,se.price
From book f,book se
Where f.bname=’数据库系统概论’  and f.bpc=se.bpc and f.author=se.author and se.bname<>f.bname

```bash
或者


Select *
From book
Where bpc=(select bpc
From book
Where bname=’数据库系统概论’) and author=(select author
From book
Where bname=’数据库系统概论’) and bname<>’数据库系统概论’

(13)查询选修了课程“2008583”但没有选修课程“2008585”的学生学号及姓名。

Select s.sno,sname
From s,sc
Where cno=’2008583’ and s.sno=sc.sno
Except
Select s.sno,sname
From s,sc
Where cno=’2008585’and s.sno=sc.sno

期中考试

一、根据以下要求,完成相应的SQL语句。
(1)创建一个SPJ库,该数据库的主数据文件的逻辑名称是spj_data,操作系统文件是spj.mdf,初始大小是10MB,最大是30MB,以10%的速度增加;该数据库的日志文件的逻辑名称是spj_log,实际文件名是spj.ldf,初始大小是3MB,最大是10MB,以1MB的速度增加,文件存储在D盘data文件夹上。(10分)

create database spj
on(name=spj_data,filename='D:\data\spj.mdf',size=10mb,maxsize=30mb,filegrowth=10%) 
log on (name=spj_log,filename='D:\data\spj.ldf',size=3mb,maxsize=10mb,filegrowth=1mb)

(2)创建一张零件表P,包括以下字段:Pno(零件号) char(2)不为空,主键;Pname(零件名)varchar(10)不为空;color(颜色)varchar(10) 可为空;weight(重量) int 不为空,取值范围0-500。(10分)

create table P 
(pno char(2) not null primary key,
pname varchar(10) not null,
color varchar(10),
weight int not null check(weight>=0 and weight<=500))

(3)查询供应量在400以上的零件名称。(5分)

select distinct pname from p,SPJ where P.Pno
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值