数据库系统设计——实验一

polarDB云数据库创建和数据操作

目的和意义

熟悉阿里巴巴的polarDB云数据库产品的使用,通过对比,思考云数据库的先进性。学会基本的DDL和DML使用方法,学会主键的定义和外键的识别,学会数据库访问工具的使用,掌握数据库的基本操作,学会数据库的创建。

实验内容

在阿里云注册一个实名账号,和登录polarDB云数据,创建数据库用户,给用户赋权,登录数据库服务器,创建数据库,创建表,定义主键和外键,修改表的Schema;往表中添加数据,查询表中的数据,修改表中数据,删除表中数据。

阿里云平台中DMS数据库实验室的进入

具体任务

建表

写出教务管理数据库中如下8张表的DDL语句, 要求标识出每张表的主键,包含的外键,明确每个字段的域定义。然后在数据库中创建出这8张表来。

建表内容




其中学号的构成为:yyyyddsscnn。
其中yyyy为入学年级,dd为所在学院编号,ss为专业代码,c为班号,nn为序号。



建表语句

/*
 author                : haonan

 Date: 18/11/2020 20:25:49
*/

SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;

-- ----------------------------
-- Table structure for course
-- ----------------------------
DROP TABLE IF EXISTS `course`;
CREATE TABLE `course`  (
  `cno` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '课程编号',
  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '课程名称',
  `spno` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业代码(外键)',
  `ctno` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '课程类型编号(外键)',
  `hours` smallint NULL DEFAULT NULL COMMENT '实验时数',
  `experiment` smallint NULL DEFAULT NULL COMMENT ' 授课学时数',
  `credit` smallint NULL DEFAULT NULL COMMENT '课程学分',
  `semester` smallint NULL DEFAULT NULL COMMENT ' 开课学期',
  `duty_tno` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ' 课程责任老师的工号',
  `dno` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ' 负责开课的学院编号',
  PRIMARY KEY (`cno`) USING BTREE,
  INDEX `ctno`(`ctno`) USING BTREE,
  INDEX `spno`(`spno`) USING BTREE,
  CONSTRAINT `ctno` FOREIGN KEY (`ctno`) REFERENCES `coursetype` (`ctno`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `spno` FOREIGN KEY (`spno`) REFERENCES `speciality` (`spno`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for coursetype
-- ----------------------------
DROP TABLE IF EXISTS `coursetype`;
CREATE TABLE `coursetype`  (
  `ctno` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '类型编号',
  `ctname` varchar(16) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '类型名称',
  PRIMARY KEY (`ctno`) USING BTREE,
  INDEX `ctno`(`ctno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for department
-- ----------------------------
DROP TABLE IF EXISTS `department`;
CREATE TABLE `department`  (
  `dno` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学院编号',
  `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学院名称',
  `dean` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '院长(外键:引用教师表的主键)',
  `addr` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '院系办公地址',
  `phone` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '联系电话',
  PRIMARY KEY (`dno`) USING BTREE,
  INDEX `dean`(`dean`) USING BTREE,
  CONSTRAINT `dean` FOREIGN KEY (`dean`) REFERENCES `teacher` (`tno`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for enroll
-- ----------------------------
DROP TABLE IF EXISTS `enroll`;
CREATE TABLE `enroll`  (
  `sno` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学生学号',
  `cno` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '课程编号',
  `year_semeste` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学年学期',
  `tno` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '教师编号(外键)',
  `classno` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '上课的班级号',
  `score` float NULL DEFAULT NULL COMMENT '学生成绩',
  PRIMARY KEY (`sno`, `cno`, `year_semeste`) USING BTREE,
  INDEX `e_tno`(`tno`) USING BTREE,
  CONSTRAINT `e_tno` FOREIGN KEY (`tno`) REFERENCES `teacher` (`tno`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for speciality
-- ----------------------------
DROP TABLE IF EXISTS `speciality`;
CREATE TABLE `speciality`  (
  `spno` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT ' 专业代码',
  `spname` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '专业名称',
  `dno` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '所属院系编号',
  PRIMARY KEY (`spno`) USING BTREE,
  INDEX `spno`(`spno`) USING BTREE
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student`  (
  `sno` char(11) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT ' 学生学号',
  `sname` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学生姓名',
  `sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ' 学生性别',
  `nation` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ' 民族',
  `birthday` date NULL DEFAULT NULL COMMENT ' 学生出生日期',
  `classno` char(7) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '行政班级号',
  `dno` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ' 学生所在院系编号',
  `spno` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '专业代码(外键)',
  `entime` char(4) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学生入校年纪',
  `home` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ' 学生家庭住址',
  `tel` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '学生联系电话',
  PRIMARY KEY (`sno`) USING BTREE,
  INDEX `st_spno`(`spno`) USING BTREE,
  CONSTRAINT `st_spno` FOREIGN KEY (`spno`) REFERENCES `speciality` (`spno`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for teach
-- ----------------------------
DROP TABLE IF EXISTS `teach`;
CREATE TABLE `teach`  (
  `cno` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '课程编号(外键)',
  `year_semester` char(10) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '学年学期',
  `tno` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '教师编号(外键)',
  `classno` char(1) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '上课的班级',
  PRIMARY KEY (`cno`, `year_semester`, `tno`, `classno`) USING BTREE,
  INDEX `t_tno`(`tno`) USING BTREE,
  CONSTRAINT `t_cno` FOREIGN KEY (`cno`) REFERENCES `course` (`cno`) ON DELETE RESTRICT ON UPDATE RESTRICT,
  CONSTRAINT `t_tno` FOREIGN KEY (`tno`) REFERENCES `teacher` (`tno`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

-- ----------------------------
-- Table structure for teacher
-- ----------------------------
DROP TABLE IF EXISTS `teacher`;
CREATE TABLE `teacher`  (
  `tno` char(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '教师工号',
  `name` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NOT NULL COMMENT '教师姓名',
  `sex` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '教师性别',
  `birthday` date NULL DEFAULT NULL COMMENT '教师出生日期',
  `rank` varchar(8) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '教师职称',
  `salary` int NULL DEFAULT NULL COMMENT '月工资',
  `dno` char(2) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '教师所在学院编号',
  `home` varchar(40) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '教师家庭住址',
  `zipcode` char(3) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ' 邮政编码',
  `tel` varchar(12) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT ' 联系电话',
  `email` varchar(32) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL COMMENT '电子邮件',
  PRIMARY KEY (`tno`) USING BTREE,
  INDEX `dno`(`dno`) USING BTREE,
  CONSTRAINT `dno` FOREIGN KEY (`dno`) REFERENCES `department` (`dno`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

SET FOREIGN_KEY_CHECKS = 1;

插入数据

插入数据内容








插入数据语句

  • department
INSERT INTO `department`(`dno`, `name`, `dean`, `addr`, `phone`) VALUES ('24', '信息科学与工程学院', '2011120', '软件楼', '8305424');
INSERT INTO `department`(`dno`, `name`, `dean`, `addr`, `phone`) VALUES ('27', '数学院', '2007004', '数学楼', '8304551');
INSERT INTO `department`(`dno`, `name`, `dean`, `addr`, `phone`) VALUES ('28', '工商管理学院', '2009007', 'MBA楼', '8304530');
INSERT INTO `department`(`dno`, `name`, `dean`, `addr`, `phone`) VALUES ('29', '会计学院', '1995008', '逸夫楼', '8304578');
INSERT INTO `department`(`dno`, `name`, `dean`, `addr`, `phone`) VALUES ('31', '政治理论学院', '20011024', '红叶楼', '8304517');
INSERT INTO `department`(`dno`, `name`, `dean`, `addr`, `phone`) VALUES ('32', '机械学院', '20001021', '宇航楼', '8304534');
INSERT INTO `department`(`dno`, `name`, `dean`, `addr`, `phone`) VALUES ('33', '工业设计学院', '19971004', '设计大楼', '8305204');
  • teacher
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('1995008', '陈浪', '男', '1979-03-30', '教授', 7880, '29', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('1997030', '刘小明', '女', '1979-03-30', '教授', 9700, '24', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('19971004', '赵子龙', '男', '1979-03-30', '教授', 9650, '33', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('20001021', '张国荣', '男', '1973-04-12', '教授', 8950, '32', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('2000121', '李平', '男', '1973-04-12', '助教', 7500, '24', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('2001009', '周曼玲', '女', '1972-09-09', '副教授', 8600, '24', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('20011024', '刘亚平', '女', '1972-09-09', '教授', 10800, '31', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('20041024', '朱喜', '男', '1985-01-09', '副教授', 8500, '24', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('2004124', '刘东妮', '女', '1985-01-09', '助教', 7200, '24', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('2007004', '张中华', '男', '1972-09-09', '教授', 9850, '27', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('20081003', '马千里', '男', '1979-03-30', '副教授', 8850, '24', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('2009007', '马力', '女', '1973-04-12', '教授', 8650, '28', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('20111104', '王林林', '女', '1962-12-11', '助教', 7900, '24', NULL, NULL, NULL, NULL);
INSERT INTO `teacher`(`tno`, `name`, `sex`, `birthday`, `rank`, `salary`, `dno`, `home`, `zipcode`, `tel`, `email`) VALUES ('2011120', '万世平', '男', '1962-12-11', '教授', 9900, '24', NULL, NULL, NULL, NULL);
  • student
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401101', '李毅', '男', '汉', '1985-01-02', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401102', '厉超', '男', '苗', '1984-03-08', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401103', '梁冰龙', '男', '壮', '1984-07-09', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401104', '罗煦', '女', '维吾尔', '1985-10-12', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401105', '马晓睿', '男', '汉', '1983-11-01', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401106', '聂立业', '男', '壮', '1984-06-03', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401107', '王实', '男', '汉', '1984-02-11', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401108', '伍卉', '女', '汉', '1985-01-03', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401109', '伍琼', '男', '汉', '1985-12-11', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401110', '曾文超', '男', '汉', '1984-07-05', '软件1班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401201', '黄文杰', '男', '汉', '1984-07-05', '软件2班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182401202', '龙淼', '男', '汉', '1985-12-11', '软件2班', '24', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182709101', '何晓明', '男', '汉', '1984-08-13', '营销1班', '27', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182709102', '刘寅', '男', '汉', '1984-05-07', '营销1班', '27', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182911101', '邢晓静', '女', '汉', '1984-08-13', '电算1班', '28', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182911102', '李明伟', '女', '汉', '1985-03-09', '电算1班', '28', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182911103', '童熙', '女', '汉', '1985-10-16', '电算1班', '28', NULL, NULL, NULL, NULL);
INSERT INTO `student`(`sno`, `sname`, `sex`, `nation`, `birthday`, `classno`, `dno`, `spno`, `entime`, `home`, `tel`) VALUES ('20182911104', '朱俊华', '男', '汉', '1985-12-03', '电算1班', '28', NULL, NULL, NULL, NULL);
  • course
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('C24020005', '面向对象程序设计', NULL, '2', 32, 24, 2, 5, '20111104', '24');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('C31010001', '毛z东思想概论', NULL, '1', 32, NULL, 2, 6, NULL, '31');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('C31010002', '邓x平理论', NULL, '1', 62, NULL, 2, 1, NULL, '31');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('H24030006', '数据结构', NULL, '2', 64, 24, 4, 4, '2004124', '24');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('H24030007', '计算机组成原理', NULL, '2', 64, NULL, 4, 5, '2011120', '24');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('H24030008', '数据库系统', NULL, '3', 48, 24, 3, 5, '2001009', '24');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('H24030009', '操作系统', NULL, '3', 48, 24, 3, 4, '2000121', '24');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('H24030010', '计算机网络', NULL, '3', 48, 16, 3, 6, '1997030', '24');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('X24040019', '数据挖掘', '2', '4', 32, NULL, 2, 7, NULL, '24');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('X24040022', '网络安全概论', '2', '4', 32, NULL, 2, 7, NULL, '24');
INSERT INTO `course`(`cno`, `name`, `spno`, `ctno`, `hours`, `experiment`, `credit`, `semester`, `duty_tno`, `dno`) VALUES ('X27020012', '高等数学', NULL, '1', 64, NULL, 4, 2, '2007004', '27');
  • teach
INSERT INTO `teach`(`cno`, `year_semester`, `tno`, `classno`) VALUES ('C31010001', '2019-01-01', '20011024', 'A');
INSERT INTO `teach`(`cno`, `year_semester`, `tno`, `classno`) VALUES ('C31010001', '2019-01-01', '20011024', 'B');
INSERT INTO `teach`(`cno`, `year_semester`, `tno`, `classno`) VALUES ('C24020005', '2019-02-01', '2009007', 'A');
  • enroll
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401101', 'C31010001', '2019-01-01', '20011024', 'A', 88);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401101', 'H24030006', '2019-01-01', '2004124', 'A', 89);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401101', 'H24030008', '2020-01-01', '2001009', 'A', 83);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401102', 'H24030006', '2019-01-01', '2004124', 'A', 98);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401102', 'H24030008', '2020-01-01', '2001009', 'A', 66);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401102', 'X27030019', '2019-02-01', '2007004', 'B', 90);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401103', 'H24030006', '2019-01-01', '2004124', 'A', 86);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401103', 'H24030008', '2020-01-01', '2001009', 'A', 55);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401104', 'H24030006', '2019-01-01', '2004124', 'B', 76);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401104', 'H24030008', '2020-01-01', '2001009', 'B', 87);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182401202', 'C31010001', '2019-01-01', '20011024', 'A', 88);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182709101', 'C31010001', '2019-01-01', '20011024', 'A', 90);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182709102', 'C24020005', '2019-02-01', '2009007', 'A', 83);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182911101', 'C24020005', '2019-02-01', '2009007', 'A', 66);
INSERT INTO `enroll`(`sno`, `cno`, `year_semeste`, `tno`, `classno`, `score`) VALUES ('20182911101', 'C31010001', '2019-01-01', '20011024', 'B', 87);
  • speciality
INSERT INTO `speciality`(`spno`, `spname`, `dno`) VALUES ('1', '软件工程', '24');
INSERT INTO `speciality`(`spno`, `spname`, `dno`) VALUES ('11', '电算会计', '29');
INSERT INTO `speciality`(`spno`, `spname`, `dno`) VALUES ('2', '人工智能', '24');
INSERT INTO `speciality`(`spno`, `spname`, `dno`) VALUES ('3', '物联网', '24');
INSERT INTO `speciality`(`spno`, `spname`, `dno`) VALUES ('4', '网络安全', '24');
INSERT INTO `speciality`(`spno`, `spname`, `dno`) VALUES ('8', '工商管理', '28');
INSERT INTO `speciality`(`spno`, `spname`, `dno`) VALUES ('9', '市场营销', '28');
  • coursetype
INSERT INTO `coursetype`(`ctno`, `ctname`) VALUES ('1', '公共课');
INSERT INTO `coursetype`(`ctno`, `ctname`) VALUES ('2', '专业基础课');
INSERT INTO `coursetype`(`ctno`, `ctname`) VALUES ('3', '专业课');
INSERT INTO `coursetype`(`ctno`, `ctname`) VALUES ('4', '选修课');

SQL语句练习

对于如下业务需求,写出获取所须数据的SQL语句:

  1. 输出信息科学与工程学院(学院编号“24”)2018级学生“李毅”的课程选修成绩单,输出项包括课程名称,学分,成绩三项;
SELECT 
c.`name`,
c.credit,
e.score 
FROM
	course c,
	enroll e
WHERE
c.dno = '24' AND c.ctno = (SELECT coursetype.ctno FROM coursetype WHERE coursetype.ctname = '选修课') AND e.sno = (SELECT student.sno FROM student WHERE student.sname = '李毅' AND student.sno LIKE '2018%');


2. 找出学生李毅(学号为 ‘20182401101’)的电话;

SELECT
	tel 
FROM
	student 
WHERE
	sname = '李毅';


3. 输出信息科学与工程学院(学院编号为’24’)的学生清单,输出项包括姓名,学号,班级三列,按照班级和学号排序;

SELECT
	sname,
	sno,
	classno 
FROM
	student 
WHERE
	dno='24';

  1.  输出所有学院的清单,包括学院编号,名称,地址,电话,院长姓名;
SELECT
	department.dno,
	department.`name`,
	department.addr,
	department.phone,
	teacher.`name` 
FROM
	department
	LEFT JOIN teacher ON teacher.tno = department.dean;


5.  在2020-1学期选修了周曼玲老师(工号为”2001009”)开设的“数据库系统”课程的学生名单,输出项为五项:教学班,姓名、学号、性别,行政班。要求先按照教学班,再按行政班排序;(注:一个老师在某个学期开的某门课,完全有可能有多个教学班);

SELECT
	enroll.classno,
	student.sname,
	student.sno,
	student.sex,
	student.classno 
FROM
	enroll,
	student 
WHERE
	student.sno = ANY (
	SELECT
		enroll.sno 
	FROM
		enroll 
	WHERE
		year_semeste LIKE '2020-01%' 
	AND tno = '2001009');


6.  对于在2020-1学期选修了“数据库系统”课程的各行政班,求其平均分,并按照平均分从高到低排序;

SELECT DISTINCT
	enroll.classno,
	AVG( enroll.score ) AS AVG_SCORE 
FROM
	enroll 
WHERE
	enroll.cno = ( SELECT course.cno FROM course WHERE course.`name` = '数据库系统' ) 
GROUP BY
	enroll.classno 
ORDER BY
	AVG_SCORE;

  1. 对于信息科学与工程学院(学院编号“24”)在2020-1学期开设的每门课程,输出其选修人数,输出项包括课程名称,选修人数;

SELECT
	course.`name`,
	COUNT( DISTINCT enroll.sno ) AS COUNT 
FROM
	course,
	enroll 
WHERE
	course.dno = '24' 
	AND course.cno = ANY ( SELECT enroll.cno FROM enroll WHERE enroll.year_semeste LIKE '2020-01%' ) 
GROUP BY
	course.`name`;


8.  在2020-1学期,对于开设的“数据库系统”这门课程,在信息科学与工程学院(学院编号“24”)的2018级学生中,有哪些学生没有选修该课程,输出姓名,学号,行政班三项信息;

SELECT
	sname,
	sno,
	classno 
FROM
	student s 
WHERE
	s.dno = '24' AND
	NOT EXISTS (
	SELECT
		* 
	FROM
		enroll e 
	WHERE
		e.year_semeste LIKE '2020-01%' 
		AND s.sno = e.sno 
	AND e.cno = ( SELECT c.cno FROM course c WHERE c.`name` = '数据库系统' ));


9. 对于在2020-1学期开设的每门课程,输出其最高分、最低分,平均分;

SELECT
	MAX( score ) AS MAX,
	MIN( score ) AS MIN,
	AVG( score ) AS AVG 
FROM
	enroll 
WHERE
	year_semeste LIKE '2020-01%';

  1.  对于在2020-1学期开设的“数据库系统”课程,求选修了该课,但是没有及格的学生名单,输出姓名,学号,行政班,课程成绩四项信息;
SELECT
	sname,
	sno,
	classno 
FROM
	student s 
WHERE
	EXISTS (
	SELECT
		* 
	FROM
		enroll e 
	WHERE
		e.year_semeste LIKE '2020-01%' 
		AND e.score < '60' 
		AND s.sno = e.sno 
	AND e.cno = ( SELECT c.cno FROM course c WHERE c.`name` = '数据库系统' ));


11.  对于信息科学与工程学院(学院编号“24”)的每个教师,统计出其在2019年度的教学工作量;(提示:课程表中,每门课有课时量hours字段)

SELECT
	teacher.`name`,
	SUM( course.hours ) AS SUM 
FROM
	teacher,
	course 
WHERE
	course.cno = ANY (
	SELECT
		enroll.cno 
	FROM
		enroll 
	WHERE
		enroll.year_semeste LIKE '2019%' 
	AND enroll.tno = ANY ( SELECT teacher.tno FROM teacher WHERE teacher.dno = '24' )) 
GROUP BY
	teacher.`name`;


12.  对于信息科学与工程学院(学院编号“24”)的每个教师,统计在2019年度教学工作量未达到要求(小于150学时)的教师,输出教师姓名,工号,教学工作量三项;

SELECT
	teacher.`name`,
	teacher.tno,
	SUM( course.hours ) AS SUM 
FROM
	teacher,
	course 
WHERE
	course.cno = ANY (
	SELECT
		enroll.cno 
	FROM
		enroll 
	WHERE
		enroll.year_semeste LIKE '2019%' 
	AND enroll.tno = ANY ( SELECT teacher.tno FROM teacher WHERE teacher.dno = '24' )) 
GROUP BY
	teacher.`name`
HAVING SUM( course.hours ) < '150';


13.  统计各个学院在2019年度的教学工作量;

SELECT
	department.`name`,
	SUM( course.hours ) 
FROM
	department,
	course 
WHERE
	department.dno = ALL (
	SELECT
		course.dno 
	FROM
		course 
	WHERE
	course.cno = ALL ( SELECT enroll.cno FROM enroll WHERE enroll.year_semeste LIKE '2019%' )) 
GROUP BY
	department.`name`;


14.  对于2016级学生,即将毕业,求出输出所得总学分不足172的学生,输出项为所属学院名称,学号,姓名,已得学分数这四项;

SELECT
	department.`name`,
	student.sno,
	student.sname,
	SUM( course.credit ) AS SUM 
FROM
	department,
	student,
	course 
WHERE
	department.dno = student.dno 
	AND course.cno = ALL (
	SELECT
		enroll.cno 
	FROM
		enroll 
	WHERE
	enroll.sno = ALL ( SELECT student.sno FROM student WHERE student.sno LIKE '2016%' )) 
GROUP BY
	student.sno 
HAVING
	SUM( course.credit ) < '172';

posted @ 2020-11-21 00:31  Strolling707  阅读(1170)  评论(0)    收藏  举报