电子科技大学 数据库 练题1 学生成绩管理系统

每天刷点题,CSDN就当是我的草稿纸了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';
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ani0vo

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值