数据库题库

发布时间 2023-12-19 15:43:22作者: 何平安

sql:

/*
Navicat MySQL Data Transfer

Source Server : MySQL57
Source Server Version : 50717
Source Host : localhost:3306
Source Database : finaltest

Target Server Type : MYSQL
Target Server Version : 50717
File Encoding : 65001

Date: 2022-12-17 20:19:11
*/


DROP DATABASE IF EXISTS finaltest;
CREATE DATABASE finaltest;
USE finaltest;
SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for Course
-- ----------------------------
DROP TABLE IF EXISTS `Course`;
CREATE TABLE `Course` (
`Cno` char(2) NOT NULL,
`Cname` varchar(10) NOT NULL,
`Cpno` char(2) DEFAULT NULL,
`Credit` smallint(6) DEFAULT NULL,
PRIMARY KEY (`Cno`),
KEY `Cpno` (`Cpno`),
CONSTRAINT `course_ibfk_1` FOREIGN KEY (`Cpno`) REFERENCES `course` (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of Course
-- ----------------------------
INSERT INTO `Course` VALUES ('1', '数据库原理', '5', '4');
INSERT INTO `Course` VALUES ('2', '数学', null, '2');
INSERT INTO `Course` VALUES ('3', '信息系统', '1', '4');
INSERT INTO `Course` VALUES ('4', '操作系统', '6', '3');
INSERT INTO `Course` VALUES ('5', '数据结构', '7', '4');
INSERT INTO `Course` VALUES ('6', '数据处理', null, '2');
INSERT INTO `Course` VALUES ('7', 'PASCAL语言', '6', '4');

-- ----------------------------
-- Table structure for Level
-- ----------------------------
DROP TABLE IF EXISTS `Level`;
CREATE TABLE `Level` (
`Gradelevel` char(1) NOT NULL,
`Lowergrade` smallint(6) DEFAULT NULL,
`Highgrade` smallint(6) DEFAULT NULL,
PRIMARY KEY (`Gradelevel`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of Level
-- ----------------------------
INSERT INTO `Level` VALUES ('A', '90', '100');
INSERT INTO `Level` VALUES ('B', '80', '89');
INSERT INTO `Level` VALUES ('C', '70', '79');
INSERT INTO `Level` VALUES ('D', '60', '69');
INSERT INTO `Level` VALUES ('F', '0', '59');

-- ----------------------------
-- Table structure for SC
-- ----------------------------
DROP TABLE IF EXISTS `SC`;
CREATE TABLE `SC` (
`Sno` char(9) DEFAULT NULL,
`Cno` char(2) DEFAULT NULL,
`Grade` int(11) DEFAULT NULL,
KEY `Sno` (`Sno`),
KEY `Cno` (`Cno`),
CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`Sno`) REFERENCES `student` (`Sno`),
CONSTRAINT `sc_ibfk_2` FOREIGN KEY (`Cno`) REFERENCES `course` (`Cno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of SC
-- ----------------------------
INSERT INTO `SC` VALUES ('200215121', '1', '92');
INSERT INTO `SC` VALUES ('200215121', '2', '85');
INSERT INTO `SC` VALUES ('200215121', '3', '88');
INSERT INTO `SC` VALUES ('200215122', '2', '90');
INSERT INTO `SC` VALUES ('200215122', '3', '80');
INSERT INTO `SC` VALUES ('200215123', '1', '67');
INSERT INTO `SC` VALUES ('200215123', '2', '78');
INSERT INTO `SC` VALUES ('200215123', '3', '80');
INSERT INTO `SC` VALUES ('200215124', '3', '82');

-- ----------------------------
-- Table structure for Student
-- ----------------------------
DROP TABLE IF EXISTS `Student`;
CREATE TABLE `Student` (
`Sno` char(9) NOT NULL,
`Sname` varchar(10) NOT NULL,
`Ssex` char(2) DEFAULT NULL,
`Sage` smallint(6) DEFAULT NULL,
`Sdept` varchar(10) DEFAULT NULL,
`Address` varchar(20) DEFAULT NULL,
PRIMARY KEY (`Sno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of Student
-- ----------------------------
INSERT INTO `Student` VALUES ('200215121', '李勇', '男', '20', 'CS', '重庆市合川区XXX');
INSERT INTO `Student` VALUES ('200215122', '刘晨', '女', '19', 'CS', '重庆市南岸区XXX');
INSERT INTO `Student` VALUES ('200215123', '王敏', '女', '19', 'MA', '重庆市永川区XXX');
INSERT INTO `Student` VALUES ('200215124', '慕容拓', '男', '19', 'IS', '四川省泸州市江阳区XXX');
INSERT INTO `Student` VALUES ('200215125', '张立', '男', '19', 'IS', '四川省成都市双流区XXX');
INSERT INTO `Student` VALUES ('200215126', '李明', '男', '18', 'SE', '贵州省黔南布依族自治州荔波县XXX');
INSERT INTO `Student` VALUES ('200215128', '慕容欣欣', '女', '18', 'SE', '四川省成都市武侯区XXX');

 

 

一、简单查询(本大题共8小题,每小题5分,共40分)

用SQL语句完成下列查询,并给出各查询的SQL代码以及查询结果的截图。

  1. 查询所有课程的课程号、课程名和学分。(5分)

 

2.查询所有低于4学分的课程的课程名和学分。(5分)

 

3.查询年龄在19-22岁(包括19岁和22岁)之间的学生姓名、所在系和年龄。(5分)

 

4.查询姓'慕容'的学生的学号和姓名。(5分)

 

5.查询非'成都'地区的学生的姓名和家庭地址。(5分)

 

6.查询既不是'CS'系也不是'IS'系也不是'MA'系的学生姓名和所在系。(5分)

 

7.查询选修1号课程的学生最低分数。(5分)

 

8.计算1号课程的平均成绩。(5分)

 

 

二、复杂查询(本大题共4小题,共15分)

用SQL语句完成下列查询,并给出各查询的SQL代码以及查询结果的截图。

1.求各个课程号及相应的选课人数。(3分)

s

2.查询年龄比'CS'系中某一学生年龄小的学生的姓名及年龄。(4分)

 

3.查询每个学生的学号、姓名、选修的课程号、成绩及成绩等级。(4分)

 

4.查询平均成绩大于80的学生的姓名。(4分)

 

 

三、数据更新(本大题共5小问,每小问5分,共25分)

用SQL语句完成下列数据更新,并给出各SQL代码以及运行结果的截图。

1.将一条学生记录('202015130','苏武','男',20,'CS','四川省成都市新都区XXX')插入到Student表中。(5分)

 

2.将一条选课记录('202015121','4',82)插入到SC表中。(5分)

 

3.将学生'202015121'的年龄改为21岁。(5分)

 

4.将所有学生的年龄增加1岁。(5分)

 

5.删除学号为'202015130'的学生选课记录。(5分)

 

 

四、视图(本大题共3小问,共10分)

用SQL语句完成下列操作,并给出各SQL代码以及运行结果的截图。

1.建立'IS'系学生的视图IS_Student,该视图有学号,姓名,性别和年龄四个字段。(4分)

 

2.将学生的学号及它的平均成绩定义为一个视图S_G。(4分)

 

3.删除视图S_G。(2分)

 

 

五、授权与回收权限(本大题共3小问,共10分)

 

先运行如下sql语句创建1个用户user5(用户名为user5,主机名为localhost,密码为123456):

CREATE USER 'user5'@'localhost' IDENTIFIED BY '123456';

再完成如下授权与回收权限操作,并给出各SQL代码以及运行结果的截图。

1.授予user5对stuinfo数据库中student表的查询权限。(3分)

 

2.授予user5对stuinfo数据库中所有表的修改权限。(3分)

 

3.回收user5对stuinfo数据库中student表的查询权限。(4分)

 

 

 

 

 

 

二:

一、简单查询(本大题共8小题,每小题5分,共40分)

用SQL语句完成下列查询,并给出各查询的SQL代码以及查询结果的截图。

1.查询所有课程的课程号、课程名和学分。(5分)

 

2.查询所有低于4学分的课程的课程名和学分。(5分)

 

3.查询年龄在19-22岁(包括19岁和22岁)之间的学生姓名、所在系和年龄。(5分)

 

4.查询姓'慕容'的学生的学号和姓名。(5分)

 

5.查询非'成都'地区的学生的姓名和家庭地址。(5分)

 

6.查询既不是'CS'系也不是'IS'系也不是'MA'系的学生姓名和所在系。(5分)

 

7.查询选修1号课程的学生最低分数。(5分)

 

8.计算1号课程的平均成绩。(5分)

 

 

二、复杂查询(本大题共4小题,共15分)

用SQL语句完成下列查询,并给出各查询的SQL代码以及查询结果的截图。

1.求各个课程号及相应的选课人数。(3分)

 

2.查询年龄比'CS'系中某一学生年龄小的学生的姓名及年龄。(4分)

 

3.查询每个学生的学号、姓名、选修的课程号、成绩及成绩等级。(4分)

 

4.查询平均成绩大于80的学生的姓名。(4分)

 

 

三、数据更新(本大题共5小问,每小问5分,共25分)

用SQL语句完成下列数据更新,并给出各SQL代码以及运行结果的截图。

1.将一条学生记录('202015130','苏武','男',20,'CS','四川省成都市新都区XXX')插入到Student表中。(5分)

 

2.将一条选课记录('202015121','4',82)插入到SC表中。(5分)

 

3.将学生'202015121'的年龄改为21岁。(5分)

 

4.将所有学生的年龄增加1岁。(5分)

 

5.删除学号为'202015130'的学生选课记录。(5分)

 

 

四、视图(本大题共3小问,共10分)

用SQL语句完成下列操作,并给出各SQL代码以及运行结果的截图。

1.建立'IS'系学生的视图IS_Student,该视图有学号,姓名,性别和年龄四个字段。(4分)

 

2.将学生的学号及它的平均成绩定义为一个视图S_G。(4分)

 

3.删除视图S_G。(2分)

 

 

五、授权与回收权限(本大题共3小问,共10分)

 

先运行如下sql语句创建1个用户user5(用户名为user5,主机名为localhost,密码为123456):

CREATE USER 'user5'@'localhost' IDENTIFIED BY '123456';

再完成如下授权与回收权限操作,并给出各SQL代码以及运行结果的截图。

1.授予user5对stuinfo数据库中student表的查询权限。(3分)

 

2.授予user5对stuinfo数据库中所有表的修改权限。(3分)

 

3.回收user5对stuinfo数据库中student表的查询权限。(4分)