sql语句练习

字段函数

sum()    //合并相加字段值

count()  //合并统计字段条数

avg()    //获取字段值平均数

max()  //获取最大值

min()  //获取最小值

distinct() //聚合字段值,

round()  //四舍五入;

 

DROP TABLE IF EXISTS `Course`;
CREATE TABLE `Course` (
`c_id` varchar(20) COLLATE utf8mb4_bin NOT NULL,
`c_name` varchar(20) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
`t_id` varchar(20) COLLATE utf8mb4_bin NOT NULL,
PRIMARY KEY (`c_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Records of Course
-- ----------------------------
INSERT INTO `Course` VALUES ('01', '语文', '02');
INSERT INTO `Course` VALUES ('02', '数学', '01');
INSERT INTO `Course` VALUES ('03', '英语', '03');

-- ----------------------------
-- Table structure for Score
-- ----------------------------
DROP TABLE IF EXISTS `Score`;
CREATE TABLE `Score` (
`s_id` varchar(20) COLLATE utf8mb4_bin NOT NULL,
`c_id` varchar(20) COLLATE utf8mb4_bin NOT NULL,
`s_score` int(3) DEFAULT NULL,
PRIMARY KEY (`s_id`,`c_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Records of Score
-- ----------------------------
INSERT INTO `Score` VALUES ('01', '01', '80');
INSERT INTO `Score` VALUES ('01', '02', '90');
INSERT INTO `Score` VALUES ('01', '03', '99');
INSERT INTO `Score` VALUES ('02', '01', '70');
INSERT INTO `Score` VALUES ('02', '02', '60');
INSERT INTO `Score` VALUES ('02', '03', '80');
INSERT INTO `Score` VALUES ('03', '01', '80');
INSERT INTO `Score` VALUES ('03', '02', '80');
INSERT INTO `Score` VALUES ('03', '03', '80');
INSERT INTO `Score` VALUES ('04', '01', '50');
INSERT INTO `Score` VALUES ('04', '02', '30');
INSERT INTO `Score` VALUES ('04', '03', '20');
INSERT INTO `Score` VALUES ('05', '01', '76');
INSERT INTO `Score` VALUES ('05', '02', '87');
INSERT INTO `Score` VALUES ('06', '01', '31');
INSERT INTO `Score` VALUES ('06', '03', '34');
INSERT INTO `Score` VALUES ('07', '02', '89');
INSERT INTO `Score` VALUES ('07', '03', '98');

-- ----------------------------
-- Table structure for Student
-- ----------------------------
DROP TABLE IF EXISTS `Student`;
CREATE TABLE `Student` (
`s_id` varchar(20) COLLATE utf8mb4_bin NOT NULL,
`s_name` varchar(20) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
`s_birth` varchar(20) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
`s_sex` varchar(10) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
PRIMARY KEY (`s_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Records of Student
-- ----------------------------
INSERT INTO `Student` VALUES ('01', '赵雷', '1990-01-01', '');
INSERT INTO `Student` VALUES ('02', '钱电', '1990-12-21', '');
INSERT INTO `Student` VALUES ('03', '孙风', '1990-05-20', '');
INSERT INTO `Student` VALUES ('04', '李云', '1990-08-06', '');
INSERT INTO `Student` VALUES ('05', '周梅', '1991-12-01', '');
INSERT INTO `Student` VALUES ('06', '吴兰', '1992-03-01', '');
INSERT INTO `Student` VALUES ('07', '郑竹', '1989-07-01', '');
INSERT INTO `Student` VALUES ('08', '王菊', '1990-01-20', '');

-- ----------------------------
-- Table structure for Teacher
-- ----------------------------
DROP TABLE IF EXISTS `Teacher`;
CREATE TABLE `Teacher` (
`t_id` varchar(20) COLLATE utf8mb4_bin NOT NULL,
`t_name` varchar(20) COLLATE utf8mb4_bin NOT NULL DEFAULT '',
PRIMARY KEY (`t_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;

-- ----------------------------
-- Records of Teacher
-- ----------------------------
INSERT INTO `Teacher` VALUES ('01', '张三');
INSERT INTO `Teacher` VALUES ('02', '李四');
INSERT INTO `Teacher` VALUES ('03', '王五');

 

( 一)、查询"01"课程比"02"课程成绩高的学生的信息及课程分数

SELECT
    a.*, b.s_score AS '01课程',
    c.s_score '02课程'
FROM
    Student a,
    Score b,
    Score c
WHERE
    a.s_id = b.s_id
AND a.s_id = c.s_id
AND b.c_id = '01'
AND c.c_id = '02'
AND b.s_score > c.s_score;

 

(二)、查询 平均成绩大于等于60分的同学 的 学生编号和学生姓名和平均成绩

SELECT
    a.s_id,a.s_name,avg(b.s_score) avgscore
FROM
    student a
LEFT JOIN score b ON a.s_id = b.s_id
GROUP BY b.s_id
HAVING AVG(b.s_score)>= 60

//
条件筛选
//group by b.s_id HAVING AVG(b.s_score)>=60    //group by聚合  //having聚合里面的条件 

 

(三)、查询每个学生最高的一门课程分数

//字段用子查询,字段列只能输出一列,否则会出错
SELECT
a.*, ( SELECT max(s_score) FROM score b where a.s_id = b.s_id GROUP BY s_id LIMIT 1 ) num FROM student a

 

(四)、横向和纵向合并两个表的结果集方法

//1.横向
SELECT
    *
FROM
    course
UNION ALL
SELECT
    *
FROM
    course

//2.纵向
SELECT * FROM Course a,Course b

 

连表修改数据

Update Course join (
select b.c_id,avg(b.order_number) as num from Course b group by b.t_id
) c set Course.order_number = c.num where Course.c_id = c.c_id
posted @ 2020-07-16 11:02  快乐的在一起  阅读(152)  评论(0编辑  收藏  举报