Strolling707

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\';

分类:

技术点:

相关文章: