数据库(作业讲解和复习)

--第一题 查询Student表中的所有记录的Sname、Ssex和Class列。
select Sname,Ssex,Class from student

--第二题 查询教师所有的单位即不重复的Depart列。
select distinct Depart from Teacher

--第三题 查询Student表的所有记录。
select * from student

--第四题 查询Score表中成绩在60到80之间的所有记录。
select * from Score where Degree between 60 and 80

--第五题 查询Score表中成绩为85,86或88的记录。
select * from Score where Degree in (‘85‘,‘86‘,‘88‘)

--第六题 查询Student表中“95031”班或性别为“女”的同学记录。
select * from student where Class=‘95031‘ or Ssex=‘女‘

--第七题 以Class降序查询Student表的所有记录。
select * from student order by Class desc

--第八题 以Cno升序、Degree降序查询Score表的所有记录。
select * from Score order by Cno asc,Degree desc

--第九题 查询“95031”班的学生人数。
select count(*) from student where Class=‘95031‘ --*可以换成主键值

--第十题 查询Score表中的最高分的学生学号和课程号。(子查询或者排序)
select SNO,CNO from Score where Degree=(select MAX(Degree) from Score)

--第十一题 查询每门课的平均成绩。
select Cno,AVG(Degree) as 平均分 from Score group by Cno

select Cname from Course where Cno in (select Cno a from Score group by Cno) 
union
select Cno,AVG(Degree) from Score group by Cno

--第十二题 查询Score表中至少有5名学生选修的并以3开头的课程的平均分数。
select AVG(Degree ) from Score where Cno like ‘3%‘ group by Cno having COUNT(Cno)>4

--第十三题 查询分数大于70,小于90的Sno列。
select sno from Score where Degree between 70 and 90

--第十四题 查询所有学生的Sname、Cno和Degree列。
select Sname,Cno,Degree from student join Score on student.Sno=Score.Sno

--第十五题 查询所有学生的Sno、Cname和Degree列。
select Sno,Cname,degree from Score join Course on Course.Cno=Score.Cno

--第十六题 查询所有学生的Sname、Cname和Degree列。
select student.Sname,Cname,degree from student join Score on student.Sno=Score.Sno join Course on Course.Cno=Score.Cno

--第十七题 查询“95033”班学生的平均分。
select AVG(Degree) from Score where Sno in (select Sno from student where Class=‘95033‘)

select AVG(Degree) from Score,student where student.Sno=Score.Sno and Class=‘95033‘

--第十八题 假设使用如下命令建立了一个grade表:
create table grade(low int,upp int,rank char(1))
insert into grade values(90,100,‘A‘)
insert into grade values(80,89,‘B‘)
insert into grade values(70,79,‘C‘)
insert into grade values(60,69,‘D‘)
insert into grade values(0,59,‘E‘)
--现查询所有同学的Sno、Cno和rank列。

select Sno,Cno,Degree,[RANK] from grade join Score on Score.Degree between low and upp

select Sno,Cno,Degree,[RANK] from Score,grade where Degree between low and upp

--第十九题 查询选修“3-105”课程的成绩高于“109”号同学成绩的所有同学的记录。
select * from student,Score where Score.Cno=‘3-105‘ and student.Sno=Score.Sno and Score.Degree>(select Degree from Score where Cno=‘3-105‘ and Sno=‘109‘)

--第二十题 查询score中选学多门课程的同学中分数为非最高分成绩的记录。
select * from Score a where Degree <(select MAX(degree) from Score b where a.Cno=b.Cno) and Sno in(select Sno from Score group by Sno having count(*)>1)

--第二十一题 查询成绩高于学号为“109”、课程号为“3-105”的成绩的所有记录。
select * from student,Score where student.Sno=Score.Sno and Score.Degree>(select Degree from Score where Cno=‘3-105‘ and Sno=‘109‘)

--第二十二题 查询和学号为107的同学同年出生的所有学生的Sno、Sname和Sbirthday列。
select Sno,Sname,Sbirthday from student where year(student.Sbirthday)=(select year(Sbirthday) from student where Sno=‘107‘)

--第二十三题 查询“张旭“教师任课的学生成绩。
--select Degree from Score,Teacher,Course where Teacher.Tname=‘张旭‘ and Teacher.Tno=Course.Tno and Course.Cno=Score.Cno

select Sno,Cno,Degree from Score where Cno in (select Cno from Course where Tno in (select Tno from Teacher where Tname=‘张旭‘))

--第二十四题 查询选修某课程的同学人数多于5人的教师姓名。
select Tname from Teacher where Tno in (select Tno from Course where Cno in (select Cno from Score group by Cno having COUNT(*)>5) )

--第二十五题 查询95033班和95031班全体学生的记录。
select * from student where Class=‘95033‘ or Class=‘95031‘

--第二十六题 查询存在有85分以上成绩的课程Cno.
select distinct cno from Score where Degree>85

--第二十七题 查询出“计算机系“教师所教课程的成绩表。
select sno,Cno ,Degree from Score where Cno in (select Cno from Course where Tno in (select tno from Teacher where Depart=‘计算机系‘))

--第二十八题 查询“计算机系”与“电子工程系“不同职称的教师的Tname和Prof。使用相关子查询
select Tname,Prof from Teacher a where Prof not in(select Prof from Teacher b where a.Depart!=b.Depart)

--第二十九题 查询选修编号为“3-105“课程且成绩至少高于选修编号为“3-245”课程的同学的Cno、Sno和Degree,并按Degree从高到低次序排序。
select Cno,Sno,Degree from Score a where (select Degree from Score b where Cno=‘3-105‘ and b.Sno=a.Sno)>=(select Degree from Score c where Cno=‘3-245‘ and c.Sno=a.Sno) order by Degree desc

select * from Score where Cno=‘3-105‘ and Degree >any(select Degree from Score where Cno=‘3-245‘)

--第三十题 查询选修编号为“3-105”课程且成绩高于选修编号为“3-245”课程的同学的Cno、Sno和Degree.
select Cno,Sno,Degree from Score a where (select Degree from Score b where Cno=‘3-105‘ and b.Sno=a.Sno)>(select Degree from Score c where Cno=‘3-245‘ and c.Sno=a.Sno)

--第三十一题 查询所有教师和同学的name、sex和birthday.
select distinct Sname as name,Ssex as sex,Sbirthday as birthday from student
union
select distinct Tname as name,Tsex as sex,Tbirthady as birthday from Teacher

--第三十二题 查询所有“女”教师和“女”同学的name、sex和birthday.
select distinct Sname as name,Ssex as sex,Sbirthday as birthday from student where Ssex=‘女‘
union
select distinct Tname as name,Tsex as sex,Tbirthady as birthday from Teacher where Tsex=‘女‘

--第三十三题 查询成绩比该课程平均成绩低的同学的成绩表。
select Sno,Cno,Degree from Score a where a.Degree<(select AVG(Degree) from Score b where a.Cno=b.Cno)

--第三十四题 查询所有任课教师的Tname和Depart.
select Tname,Depart from Teacher where Tname in (select distinct Tname from Teacher,Course,Score where Teacher.Tno=Course.Tno and Course.Cno=Score.Cno)

select Tname,Depart from Teacher where tno in (select tno from course where Cno in (select distinct Cno from Score))

--第三十五题 查询所有未讲课的教师的Tname和Depart. 
select Tname,Depart from Teacher where Tname not in (select distinct Tname from Teacher,Course,Score where Teacher.Tno=Course.Tno and Course.Cno=Score.Cno)
--第三十六题 查询至少有2名男生的班号。
select Class FROM student where Ssex=‘男‘ group by Class having COUNT(*)>1

--第三十七题 查询Student表中不姓“王”的同学记录。
select * from student where Sname not like (‘王%‘)

--第三十八题 查询Student表中每个学生的姓名和年龄。
select Sname,YEAR(GETDATE())-year(Sbirthday) from student

--第三十九题 查询Student表中最大和最小的Sbirthday日期值。
select MAX(Sbirthday) as 最大,MIN(Sbirthday) as 最小 from student

--第四十题 以班号和年龄从大到小的顺序查询Student表中的全部记录。
select * from student order by Class desc,Sbirthday asc

--第四十一题 查询“男”教师及其所上的课程。
select Tname,Cname from Teacher,Course where Tsex=‘男‘ and Teacher.Tno=Course.Tno

--第四十二题 查询最高分同学的Sno、Cno和Degree列。
select Sno,Cno,Degree from Score where degree=(select MAX(Degree)from Score)

select top 1* from Score order by Degree desc

--第四十三题 查询和“李军”同性别的所有同学的Sname.
select Sname from student where Ssex=(select Ssex from student where Sname=‘李军‘) and Sname not in (‘李军‘)

--第四十四题 查询和“李军”同性别并同班的同学Sname.
select Sname from student where Ssex=(select Ssex from student where Sname=‘李军‘) and Sname not in (‘李军‘) and Class=(select Class from student where Sname=‘李军‘)

--第四十五题 查询所有选修“计算机导论”课程的“男”同学的成绩表。
select Sno,Degree from Score where Sno in (select Sno from student where Ssex=‘男‘) and Cno in (select Cno from Course where Cname=‘计算机导论‘)

复习

1、数据库操作
create database 数据库名称
drop database 数据库名称
use 数据库名称
go 两条SQL语句之间的间隔

2、表操作
create table 表名(列名 类型 其他,列名 类型,其他)
primary key 主键
identity 自增长列
not null 非空
unique 唯一
references 外键 references 主表名(主表主键列)
外键一般是从表的列关联到主表的主键上
drop table 表名 删除表

3、数据操作

增加 
insert into 表名 values (每一列的值)

insert into 表名 (列名) values (列的值)

修改

update 表名 set 列名=值,列名=值 where 筛选条件

删除

delete from 表名 where 筛选条件

查询
1、简单查询
select * from 表名

select 列名 from 表名

select 列名 as 别名 from 表名

2、
条件查询

select * from 表名 where 条件1

select * from 表名 where 条件1 or 条件2

select * from 表名 where 条件1 and 条件2

3、范围查询 between and

select * from 表名 where 列名 between 值 and 值2

4、离散查询

select * from 表名 where 列名 in (数据列表)

5、模糊查询 like
select * from 表名 where 列名 like ‘%_‘

6、排序查询 desc 降序

select * from 表名 order by 列名

7、分组查询

select * from 表名 group by 列名 having 条件

8、分页查询 top n 去前n个值
select top n 表名

9、去重查询

select distinct 列名 from 表米

10、聚合函数(统计函数)
select count(*) from 表名

select sun(列名) from 表名

AVG max min

二、高级查询

1、连接查询
列的扩展 join on

联合查询 行的扩展 union

2、子查询
(1)无关子查询
子查询和父查询没有一定的关系,子查询可以单独执行

(2)相关子查询
子查询执行的时候必须使用父查询的内容作为条件

时间: 2024-10-19 19:02:07

数据库(作业讲解和复习)的相关文章

SQL Server数据库(作业讲解和复习)

--第一题 查询Student表中的所有记录的Sname.Ssex和Class列.select Sname,Ssex,Class from student --第二题 查询教师所有的单位即不重复的Depart列.select distinct Depart from Teacher --第三题 查询Student表的所有记录.select * from student --第四题 查询Score表中成绩在60到80之间的所有记录.select * from Score where Degree

python-haproxy作业讲解视频总结

刚看完瞎驴的haproxy配置文件的作业讲解视频: 总结: 1.用户输入的字符串数据类型转换其他数据类型 1.1 eval('用户输入的数据') 1.2 json.loads('用户输入的数据') 2.动态菜单实现 msg=''' 1:选项1 2:选项2 ''' meum_dic={ '1':相应函数名,不带括号, '2':相应函数名,不带括号 } 3.提高代码利用率 3.1 函数多重地方重复调用的代码,整理集合到公共的函数,避免重复造轮子 这次作业要是先看了瞎驴的视频,代码就不至于那么的冗余.

9.23作业讲解

作业讲解: 1.两个列表之间移动数据 <select id="x" size="12" style="width:200px"> <option>黑椒牛排七分熟</option> <option>菠萝三文鱼</option> <option>薄荷蔬菜沙拉</option> <option>西红柿酱汁意面</option> <optio

数据库作业14——综合练习(二) 反馈情况

数据库作业14--综合练习(二) 反馈情况 一.作业要求复述 1.创建数据库CPXS,保存于E盘根目录下以自己学号+姓第一个字母(阿拉伯数字+大写字母)方式创建的文件夹中,初始大小5MB,最大20MB,以10%方式增长,日志文件存于同一文件夹,初始大小2MB,最大5MB,以1MB方式增长: 2.创建表CP,CPBH为主键,8位数字,CPMC,长度12个字符,JG为精确到小数点后2位,KCL为整数,除了KCL,其他都不能为空: 3.使用INSERT输入数据,具体数据如下: '10001100',

数据库作业

第四章作业 1. 什么是数据库安全性? 答:数据库的安全性是指保护数据库以防止不合法的使用所造成的数据泄露.更改或破坏. 2. 试述实现数据库安全性控制的常用方法和技术. 答:实现数据库安全性控制的常用方法和技术有:  (1)用户标识和鉴别:该方法由系统提供一定的方式让用户标识自己的名字或身份.每次用户要求进入系统时,由系统进行核对,通过鉴定后才提供系统的使用权.  (2)存取控制:通过用户权限定义和合法权检查确保只有合法权限的用户访问数据库,所有未被授权的人员无法存取数据.例如 C2 级中的自

数据库作业[定时执行任务]的创建 (转帖)

--每月执行的作业exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month'--每周执行的作业exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week'--每日执行的作业exec p_createjob @jobname='a',@sql='select * from syscolumns'--每

数据库作业[定时执行任务]的创建

--每月执行的作业 exec p_createjob @jobname='mm',@sql='select * from syscolumns',@freqtype='month' --每周执行的作业 exec p_createjob @jobname='ww',@sql='select * from syscolumns',@freqtype='week' --每日执行的作业 exec p_createjob @jobname='a',@sql='select * from syscolumn

数据库MySQL常用命令复习

-- 查看数据库 show databases; -- 创建数据库 create database '数据库名'; -- 删除数据库 drop database '数据库名'; -- 选库 use '库名'; -- 查看当前所在库 select database(); -- 查看所有表 show tables; -- 删除表 drop table 表名; -- 查看表结构 desc 表名; -- 查看建表语句 show create table '表名'; -- 清空表数据 truncate t

数据库的一些知识点复习

1.     一些知识点 在计算机的系统属性中的环境变量PATH中可以加入mysql.exe的路径(D:\program files\wamp\bin\mysql\mysql5.5.20\bin),使得在任意目录下都可以使用mysql.举例来说:在cmd中输入mysql系统可以识别: 数据库由许多表组成,可以使用键作为表格之间的引用. 2.     一些命令及其使用 a)         创建数据库:create database suyd; b)        查看系统中存在的数据库:show