/*
Navicat MySQL Data Transfer
Source Server : MyDB
Source Server Version : 50720
Source Host : localhost:3306
Source Database : student
Target Server Type : MYSQL
Target Server Version : 50720
File Encoding : 65001
Date: 2018-11-01 16:08:27
*/
SET FOREIGN_KEY_CHECKS=0;
-- ----------------------------
-- Table structure for courses
-- ----------------------------
DROP TABLE IF EXISTS `courses`;
CREATE TABLE `courses` (
`courseno` varchar(20) NOT NULL,
`coursenm` varchar(100) NOT NULL,
PRIMARY KEY (`courseno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='课程表';
-- ----------------------------
-- Records of courses
-- ----------------------------
INSERT INTO `courses` VALUES ('C001', '大学语文');
INSERT INTO `courses` VALUES ('C002', '新视野英语');
INSERT INTO `courses` VALUES ('C003', '离散数学');
INSERT INTO `courses` VALUES ('C004', '概率论与数理统计');
INSERT INTO `courses` VALUES ('C005', '线性代数');
INSERT INTO `courses` VALUES ('C006', '高等数学(一)');
INSERT INTO `courses` VALUES ('C007', '高等数学(二)');
-- ----------------------------
-- Table structure for score
-- ----------------------------
DROP TABLE IF EXISTS `score`;
CREATE TABLE `score` (
`stuid` varchar(16) NOT NULL,
`courseno` varchar(20) NOT NULL,
`scores` float DEFAULT NULL,
PRIMARY KEY (`stuid`,`courseno`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of score
-- ----------------------------
INSERT INTO `score` VALUES ('1001', 'C001', '67');
INSERT INTO `score` VALUES ('1001', 'C002', '87');
INSERT INTO `score` VALUES ('1001', 'C003', '83');
INSERT INTO `score` VALUES ('1001', 'C004', '88');
INSERT INTO `score` VALUES ('1001', 'C005', '77');
INSERT INTO `score` VALUES ('1002', 'C001', '68');
INSERT INTO `score` VALUES ('1002', 'C002', '88');
INSERT INTO `score` VALUES ('1002', 'C003', '84');
INSERT INTO `score` VALUES ('1002', 'C004', '89');
INSERT INTO `score` VALUES ('1002', 'C005', '78');
INSERT INTO `score` VALUES ('1003', 'C001', '69');
INSERT INTO `score` VALUES ('1003', 'C002', '89');
INSERT INTO `score` VALUES ('1003', 'C003', '85');
INSERT INTO `score` VALUES ('1003', 'C004', '90');
INSERT INTO `score` VALUES ('1003', 'C005', '79');
INSERT INTO `score` VALUES ('1004', 'C001', '70');
INSERT INTO `score` VALUES ('1004', 'C002', '90');
INSERT INTO `score` VALUES ('1004', 'C003', '86');
INSERT INTO `score` VALUES ('1004', 'C004', '91');
INSERT INTO `score` VALUES ('1005', 'C001', '71');
INSERT INTO `score` VALUES ('1005', 'C002', '91');
INSERT INTO `score` VALUES ('1005', 'C003', '87');
INSERT INTO `score` VALUES ('1005', 'C004', '92');
INSERT INTO `score` VALUES ('1006', 'C001', '72');
INSERT INTO `score` VALUES ('1006', 'C002', '92');
INSERT INTO `score` VALUES ('1006', 'C003', '88');
INSERT INTO `score` VALUES ('1006', 'C004', '93');
-- ----------------------------
-- Table structure for student
-- ----------------------------
DROP TABLE IF EXISTS `student`;
CREATE TABLE `student` (
`stuid` varchar(16) NOT NULL COMMENT '学号',
`stunm` varchar(20) NOT NULL COMMENT '学生姓名',
PRIMARY KEY (`stuid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- ----------------------------
-- Records of student
-- ----------------------------
INSERT INTO `student` VALUES ('1001', '张三');
INSERT INTO `student` VALUES ('1002', '李四');
INSERT INTO `student` VALUES ('1003', '赵二');
INSERT INTO `student` VALUES ('1004', '王五');
INSERT INTO `student` VALUES ('1005', '刘青');
INSERT INTO `student` VALUES ('1006', '周明');
SELECT
st.stuid ID,
st.stunm 姓名,
cs.coursenm 课程名,
sc.scores 成绩
FROM
student st,
score sc,
courses cs
WHERE
st.stuid = sc.stuid
AND sc.courseno = cs.courseno
查询结果
SELECT
st.stuid 编号,
st.stunm 姓名,
Max(
CASE c.coursenm
WHEN '大学语文' THEN
s.scores
ELSE
0
END
) '大学语文',
max(
CASE c.coursenm
WHEN '新视野英语' THEN
IFNULL(s.scores, 0)
ELSE
0
END
) '新视野英语',
Max(
CASE c.coursenm
WHEN '离散数学' THEN
IFNULL(s.scores, 0)
ELSE
0
END
) '离散数学',
MAX(
CASE c.coursenm
WHEN '概率论与数理统计' THEN
IFNULL(s.scores, 0)
ELSE
0
END
) '概率论与数理统计',
MAX(
CASE c.coursenm
WHEN '线性代数' THEN
IFNULL(s.scores, 0)
ELSE
0
END
) '线性代数',
MAX(
CASE c.coursenm
WHEN '高等数学(一)' THEN
IFNULL(s.scores, 0)
ELSE
0
END
) '高等数学(一)',
MAX(
CASE c.coursenm
WHEN '高等数学(二)' THEN
IFNULL(s.scores, 0)
ELSE
0
END
) '高等数学(二)'
FROM
student st
LEFT JOIN score s ON st.stuid = s.stuid
LEFT JOIN courses c ON c.courseno = s.courseno
GROUP BY
st.stuid
查询结果