首页数据库数据库题?SQL数据库的问题目

数据库题?SQL数据库的问题目

编程之家2023-10-1991次浏览

大家好,今天小编来为大家解答以下的问题,关于数据库题,SQL数据库的问题目这个很多人还不知道,现在让我们一起来看看吧!

数据库题?SQL数据库的问题目

SQL数据库的问题目

这是在一个student数据库上建立的查询,你可以把邮箱告诉我,我把数据库文件发给你,当然如果你想自己建的话也行,下面是三张表。

sno sname ssex sage sdept

200215121李勇男 20 CS

200215122刘晨女 19 CS

200215123王敏女 18 MA

200215125张立男 19 IS

数据库题?SQL数据库的问题目

cno cname cpno ccredit

1数据库 5 4

2数学 NULL 2

3信息系统 1 4

4操作系统 6 3

5数据结构 7 4

数据库题?SQL数据库的问题目

6数据处理 NULL 2

7 PASCAL语言 6 4

sno cno grade

200215121 1 92

200215121 2 85

200215121 3 88

200215122 2 90

200215122 3 80

--1.查询所有年龄在20岁以下的学生姓名及其年龄。

select sname,sage

from student

where sage<20

--2.查询考试成绩有不及格的学生的学号。

select sno

from sc

where grade<60

--3.查询年龄不在19~22岁之间的学生姓名、系别和年龄。

select sname,sdept,sage

from student

where sage not between 19 and 22

--4.查询既不是信息系,也不是计算机科学系的学生的姓名和性别。

select sname,ssex

from student

where sdept not in('IS','CS')

--5.查询所有姓刘学生的姓名、学号和性别

select sname,sno,ssex

from student

where sname like'刘%'

--6.在Course数据表中添加记录('8','DB_design','2',4),并查询以"DB_"开头,且倒数第3个字符为 i的课程的详细情况

select*

from course

where cname like'DB\_%i__%' escape'\'

--7.在SC数据表中添加记录('200215123','1',null),并查询所有有成绩的学生学号和课程号

select sno,cno

from sc

--8.查询全体学生情况,查询结果按所在系的系号降序排列,同一系中的学生按年龄升序

select*

from student

order by sdept desc,sage asc

--9.计算2号课程的学生平均成绩。

select AVG(grade)

from sc

where cno='2'

--10在SC数据表中添加记录('200215123','1',23),统计出不及格的同学学号和不及格的门数。

select student.sno,count(grade)

from sc,student

group by student.sno

having grade<60

--11.查询选修1号课程的学生最高分数。

select MAX(grade)

from sc

where cno='1'

--12.查询学生200215121选修课程的总学分数。

select SUM(grade)

from sc

where sno='200215121'

--13.求各个课程号及相应的选课人数

select cno,COUNT(sno)

from sc

group by cno

--14.查询选修了2门以上(包括2门)课程的学生学号

select sno

from sc

group by sno

having count(*)>=2

--15.查询成绩大于等于90分的学生的学号和姓名

select student.sno,sname

from student,sc

where grade>90

--16.查询选修了“数据库”课程的学生的学号和姓名

select student.sno,sname

from student inner join sc on student.sno=sc.sno

where cno=(select cno from course where cname='数据库')

--17.查询选修了3号课程且成绩高于此课程平均成绩的学号和成绩

select student.sno,grade

from student inner join sc on student.sno=sc.sno

where cno='3'

and grade>(select AVG(grade) from sc)

--18.查询没有选修1号课程的学生姓名。

select sname

from student,sc

where cno!='1'

--1.建立计算机系选修了2号课程的学生视图V1

create view v1

as

select sno,sname,ssex,sage,sdept

from student,course

where sdept='cs' and cno='2'

--2.建立信息系选修了1号课程且成绩在90分以上的学生的视图V2

create view v2

as

select student.sno,sname,ssex,sage,sdept

from student,course,sc

where course.cno='2' and grade>90

--3.将每门课程的课程号和平均成绩定义为一个视图V3

create view v3(cno,avg_grade)

as

select cno,avg(grade)

from sc

group by cno

--三、创建和执行下列存储过程:

--o创建语句格式:

--n CREATE Proc[edure]存储过程名

--[{@参数名数据类型}[=default][output]]

--As

--Sql语句[…n]

--o执行语句格式:

--n [exec[ute]]存储过程名[实参[,output][,…n]

--1.查询计算机系学生的考试成绩,列出学生的姓名、课程名和成绩。

select sname,cno,grade

from student,sc

where sdept='cs'

--2.查询某个指定系学生的考试成绩,列出学生的姓名、所在系、课程名和成绩。

select sname,sdept,cname,grade

from student,sc,course

where sdept='%'

--3.查询某个学生某门课程的考试成绩,列出学生的姓名、课程名和成绩。

select sname,cno,grade

from student,sc

where sname='%' and cname='%'

--4.查询某个学生某门课程的考试成绩,若没有指定课程,则默认课程为“数据库基础”。

select sname,cno,grade

from student,sc

where sname='%' and cname='%'

--5.统计指定课程的平均成绩,并将统计的结果用输出参数返回。

--6.创建带删除数据的存储过程,要求删除考试成绩不及格学生的修课记录。

--7.创建带修改数据的存储过程,要求将指定的课程的学分增加2分。

数据库的题目

、等级查询

题目:员工信息表中有员工ID、姓名、上级员工ID字段,现要求用一条语句,查询出全部员工的ID、姓名及级别——最高为1级,其下依次为2、3、4等,如下图所示:

员工信息表为Oracle数据库hr用户下的employees表,员工ID的字段名为employee_id,姓名为first_name||''|| last_name,上级员工ID为manager_id。在创建Oracle实例时,hr用户及该表自动生成。

通过对员工信息表的分析,发现如下线索:

1、本级员工的manager_id即为上一级员工的employee_id;

2、其中最高级员工的上级员工为空,其他级别都不为空。

如果一张数据库表中存在等级数据,则应使用START WITH… CONNECT BY [PRIOR]…关键字,进行等级查询,其中:

1、START WITH关键字标识数据表中最高等级的特征;

2、CONNECT BY关键字标识上下级行的关系;

3、PRIOR关键字标识此行是上一级行(原文是In a hierarchical query, one expression in condition must be qualified with the PRIOR operator to refer to the parent row.);

4、使用LEVEL伪列显示层级关系。

综上,查询语句为:

SELECT EMPLOYEE_ID,

FIRST_NAME||''|| LAST_NAME AS NAME,

LEVELFROM EMPLOYEESSTART WITH MANAGER_ID IS NULLCONNECT BY PRIOR EMPLOYEE_ID= MANAGER_ID;

二、排序

题目:员工信息表中有员工ID、姓名、部门ID、工资字段,现要求用一条语句,查询出每个员工在整个公司以及本部门工资的排名(升序或降序排列均可),如下图所示:

对于排序,我原来只知道利用ROWNUM伪列:

SELECT E.*,

ROWNUM

FROM(SELECT*

FROM EMPLOYEES

ORDER BY SALARY DESC) E

然后再用这个结果集和其他表关联,针对本题,这种方法可以查出每个员工在整个公司以及本部门工资的排名,但在我看来有如下两个问题:

1、一张事实表关联两次,效率低下;

2、无法查询出每个员工在整个公司以及本部门工资的排名,除非用循环,但又不是一条语句了。

数据库表中对数值字段进行排名,应使用RANK函数,该函数的作用就是计算一个值在一组值中的排名,返回值为数值型,形式为RANK() OVER(PARTITION BY… ORDER BY…),其中:

1、PARTITION BY关键字为用于排序的分组,也就是说如果查询全部数据中的排名,则该关键字可省略;

2、ORDER BY关键字即为按哪个字段进行排序,空或ASC为升序,DESC为降序,与标准SQL没区别;

3、如果两行数据用于排序的字段值完全相同,则二者的RANK返回值(序号)也相同,序号不连续(英文是Identical salary values receive the same rank and cause nonconsecutive ranks),还有类似的DENSE_RANK()函数,相同值的序号相同,序号连续;ROW_NUMBER()函数,每个值的序号唯一,相同值有可能按照ROWNUM的次序编号(这个不确定,官方文档没说,我推测的-_-),这三个函数的使用方法相同。

SQL数据库题目

1、创建数据库

create database学生成绩数据库

on primary

(name='学生成绩数据库_mdf',

filename='e:\学生成绩数据库.mdb',

size=1,

maxsize=10,

filegrowth=10%)

log on

(name='学生成绩数据库_ldf',

filename='e:\学生成绩数据库.ldf',

size=1,

maxsize=10,

filegrowth=10%)

2、创建课程表

create table课程表

(课程号 char(6) primary key,

课程名称 char(20) not null,

任课教师 char(8))

3、创建学生表

create table学生表

(学号 char(6) primary key,

姓名 char(8) not null,

性别 char(2) constraint ck_性别 check(性别 in('男','女')),

民族 char(20) not null default'汉')

4、创建成绩表

create table成绩表

(学号 char(6) not null foreign key(学号) references学生表(学号),

课程号 char(6) not null foreign key(课程号) references课程表(课程号),

分数 int constraint ck_分数 check(分数 between 0 and 150))

5、添加信息

insert课程表(课程号,课程名)

values('100001','大学语文')

insert课程表(课程号,课程名)

values('100002','大学英语')

6.写出创建成绩表视图(学号,姓名,课程号,课程名称,成绩)的代码

create view成绩表视图

as

select学生表.学号,姓名,课程表.课程号,课程名称,成绩

from学生表,课程表,成绩表

where学生表.学号=成绩表.学号 and成绩表.课程号=课程表.课程号

7.写出计算大学语文课程成绩最高分、最低分、平均分的代码

select max(分数)'最高分数',min(分数)'最低分数',avg(分数)'平均分数'

from成绩表

where学号 in(select学号

from课程表

where课程名称='大学语文')

8、检索姓李的女同学的信息:姓名、性别、民族

select姓名,性别,民族

from学生表

where姓名 like'李%' and性别='女'

好了,文章到这里就结束啦,如果本次分享的数据库题和SQL数据库的问题目问题对您有所帮助,还望关注下本站哦!

硅云虚拟主机?虚拟主机有什么好处哪里购买云服务器论坛,哪个云服务器比较好