每天刷点题,优快云就当是我的草稿纸了TT
因为要考试了,所以网上找了些类型题适合考试的写,如有雷同,纯属巧合。(毕竟时间优先权在我这,狗头)
题目如下
学生成绩管理系统
小题1
题目1
采用SQL语句执行方式创建一个学生表,其表结构为: Student_本人学号(StudentlD,StudentName,Sex)。其中,StudentID为主健,13位数字字符串。给出SQL语句运行结果界面。(5分)
代码块1
create table Student_2019091621000(
StudentID char(13) not null primary key check(StudentID ~$$\d{13}$$),
StudentName varchar(8) not null,
Sex varchar(8) not null check(Sex in ('男','女'))
);
截图1
我们输入数据库表查询语句后:
Select *
From Student_2019091621000;
得到:
小题2
题目2
采用SQL语句执行方式创建教师表,其表结构为: Teacher_本人学号(TeacherlD,TeacherName,Title),其中,TeacherID为主健,7位数字字符串。Title取值约束为“教授”、_“副教授”、“讲师”。给出SQL语句运行结果界面。(5分)
代码块2
create table Teacher_2019091621000(
TeacherID char(7) not null primary key check(TeacherID ~$$\d{7}$$),
TeacherName varchar(8) not null,
Title varchar(8) not null check(Title in ('教授','副教授','讲师'))
);
截图2
我们输入数据库表查询语句后:
Select *
From Teacher_2019091621000;
Refresh后:
得到:
小题3
写到这我就好累了/(ㄒoㄒ)/~~创建表是真的又臭又长,期末考要是也创这么多表我都能睡过去
果然到时候上机考试得打12分精神来写
题目3
采用SQL语句执行方式创建课程表,其表结构为:Course_本人学号(CourselD,CourseName,TeacherlD,Credit)。其中CourselD为主键,TeacherlD为外键,Credit取值约束为1-4。给出SQL语句运行结果界面及表对象结构界面。(10分)
代码块3
create table Course_2019091621000(
CourseID varchar(4) not null primary key,
CourseName varchar(16) not null,
TeacherID char(7) not null references Teacher_2019091621000(TeacherID),
Credit float not null check(Credit>=1 and Credit<=4)
% 这里貌似有点类型错,但是不管了凑活着用吧
);
credit是学分的意思(笑),给我这个英语弱渣一个备注。
截图3
我们输入数据库表查询语句后:
Select *
From Course_2019091621000;
Refresh后:
得到:
小题4
题目4
采用SQL语句执行方式创建成绩表,其表结构为:Grade_本人学号(StudentlD,CourselD,Score)。其中,StudentlD,CourselD为复合主键,同时也是外键,Score取值范围为0-100。给出SQL语句运行结果界面及表对象结构界面。(10分)
代码块4
create table Grade_2019091621000(
StudentID char(13) not null references Student_2019091621000(StudentID),
CourseID varchar(4) not null references Course_2019091621000(CourseID),
Score int not null check(Score>=0 and Score<=100),
constraint GradePK primary key(StudentID,CourseID)
);
int的原因是:电科每次成绩都在四舍五入…
截图4
我们输入数据库表查询语句后:
Select *
From Grade_2019091621000;
Refresh后:
得到:
小题5
题目5
根据下表样本数据,编写SQL插入语句程序,实现学生表数据添加,并给出该程序运行结果界面及表数据界面。(5分)
代码块5
INSERT INTO Student_2019091621000 VALUES('2018090015201','李同学','男');
INSERT INTO Student_2019091621000 VALUES('2018090015202','赵同学','女');
INSERT INTO Student_2019091621000 VALUES('2019091621000','张同学','男');
截图5
我们输入数据库表查询语句后:
Select *
From Student_2019091621000;
得到:
小题6
题目6
根据下表样本数据,编写SQL插入语句程序,实现教师表数据添加,并给出该程序运行结果界面及表数据界面。(5分)
CAL可不是讲师,我不敢…
代码块6
INSERT INTO Teacher_2019091621000 VALUES('3202211','张老师','教授');
INSERT INTO Teacher_2019091621000 VALUES('3202212','刘老师','副教授');
INSERT INTO Teacher_2019091621000 VALUES('1621000','陈老师','教授');
截图6
我们输入数据库表查询语句后:
Select *
From Teacher_2019091621000;
得到:
小题7
题目7
根据下表样本数据,编写SQL插入语句程序,实现课程表数据添加,并给出该程序运行结果结果及表数据界面。(10分)
代码块7
insert into Course_2019091621000 values
('C001','数据库原理','3202211',3),
('C002','软件工程基础','3202212',3),
('C003','张同学','3202212',2);
截图7
我们输入数据库表查询语句后:
Select *
From Course_2019091621000;
得到:
小题8
题目8
根据下表样本数据,编写SQL插入语句程序,实现成绩表数据添加,并给出该程序运行结果界面及表数据界面。(10分)
代码块8
insert into Grade_2019091621000 values
('2019091621000','C001',90),
('2019091621000','C002',80),
('2018090015201','C001',92),
('2018090015201','C002',45),
('2018090015202','C001',56),
('2018090015202','C002',35);
截图8
我们输入数据库表查询语句后:
Select *
From Grade_2019091621000;
得到:
小题9
题目9
查询本人的各门课程成绩数据,其数据列包括本人学号、本人姓名、课程名称、成绩。给出查询语句运行结果界面。(10分)
代码块9
select StudentID as 学号,StudentName as 学生姓名,CourseName as 课程名称,Score as 成绩
from (Grade_2019091621000 natural join Student_2019091621000 natural join Course_2019091621000)
where StudentID = '2019091621000';
截图9
小题10
题目10
编写一个视图(名称View_Grade_本人学号),统计各门课程的不及格人数。对该视图进行数据查询,其结果输出“课程编号”、“课程名称”、“任课教师”、“不及格人数”列表数据。分别给出视图创建运行界面、视图查询运行结果界面。(10分)
代码块10
create view View_Grade_2019091621000
as select C.CourseID as 课程编号,C.CourseName as 课程名称,T.TeacherName as 任课教师,count(*) as 不及格人数
from Course_2019091621000 as C,Teacher_2019091621000 as T,Grade_2019091621000 as G
where C.TeacherID = T.TeacherID and C.CourseID = G.CourseID and G.Score < 60
group by C.CourseID,T.TeacherName;
截图10
实在是懒,就这样吧= =
小题11
题目11
在PostgreSQL数据库中,采用SQL编程方式创建学生角色(Role_Student_本人学号)、教师角色(Role_Teacher_本人学号)、教务管理员角色(Role_TAdimn_本人学号)。这些角色具有登陆、连接、继承等系统权限。给出角色创建运行结果界面。(10分)
代码块11
CREATE ROLE Role_Student_2019091621000 WITH
LOGIN
INHERIT
CONNECTION LIMIT -1
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
NOREPLICATION;
CREATE ROLE Role_Teacher_2019091621000 WITH
LOGIN
INHERIT
CONNECTION LIMIT -1
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
NOREPLICATION;
CREATE ROLE Role_TAdmin_2019091621000 WITH
LOGIN
INHERIT
CONNECTION LIMIT -1
NOSUPERUSER
NOCREATEDB
NOCREATEROLE
NOREPLICATION;
截图11
小题12
题目12
在PostgreSQL数据库中,按照如下权限表编写SQL程序对学生角色(Role_Student_本人学号)、教师角色 (Role_Teacher_本人学号)、教务管理员角色(Role_TAdmin)赋予数据库对象操作权限,给出权限赋予运行结果界面。(10分)
代码块12
grant select, update on Student_2019091621000 to Role_Student_2019091621000;
grant select on Student_2019091621000 to Role_Teacher_2019091621000;
grant select on Student_2019091621000 to Role_TAdmin_2019091621000;
grant select on Teacher_2019091621000 to Role_Student_2019091621000;
grant select, update on Teacher_2019091621000 to Role_Teacher_2019091621000;
grant select on Teacher_2019091621000 to Role_TAdmin_2019091621000;
grant select on Course_2019091621000 to Role_Student_2019091621000;
grant select on Course_2019091621000 to Role_Teacher_2019091621000;
grant select,update,delete,insert on Course_2019091621000 to Role_TAdmin_2019091621000;
grant select on Grade_2019091621000 to Role_Student_2019091621000;
grant select,update,delete,insert on Grade_2019091621000 to Role_Teacher_2019091621000;
grant select on Grade_2019091621000 to Role_TAdmin_2019091621000;
截图12
先这样,去洗脸了= =
查询语句可以这么写:
select * from information_schema.table_privileges where grantee='role_teacher_2019091621000';