本文中共用到了四张表:学生表、课程表、教师表、成绩表
student(s_id,s_name,s_age,s_sex)
s_id : 学?编号、s_name: 学?姓名、s_age: 出?年?、s_sex: 学?性别
course(c_id,c_name,t_id)?
c_id: 课程编号、c_name: 课程名称、t_id: 教师编号
teacher(t_id,t_name)
t_id: 教师编号、t_name: 教师姓名
sc(s_id,c_id,score)
s_id: 学生编号、c_id: 课程编号、score: 分数
本文中我创建了库名为MySQL50的数据库
CREATE DATABASE IF NOT EXISTS MySQL50;
避免创建表时创建错位置,所以先使用该数据库
USE MySQL50;
CREATE TABLE student(
s_id INT PRIMARY KEY AUTO_INCREMENT,
s_name VARCHAR(10),
s_age DATETIME,
s_sex VARCHAR(10)
);
insert into student(s_name,s_age,s_sex) values
( '赵雷' , '1990-01-01' , '男'),
( '钱电' , '1990-12-21' , '男'),
( '孙风' , '1990-04-10' , '男'),
( '李云' , '1990-04-06' , '男'),
( '周梅' , '1991-12-01' , '女'),
( '吴兰' , '1992-03-01' , '女'),
( '郑竹' , '1989-07-01' , '女'),
( '王菊' , '1990-01-20' , '女');
CREATE TABLE course(
c_id INT PRIMARY KEY AUTO_INCREMENT,
c_name VARCHAR(10),
t_id INT(10)
);
INSERT INTO course(c_name,t_id) VALUES
('数学' , '01'),
('语文' , '02'),
('英语' , '03');
CREATE TABLE teacher(
t_id INT PRIMARY KEY AUTO_INCREMENT,
t_name VARCHAR(10)
);
INSERT INTO teacher(t_name) VALUES
('张三'),
('李四'),
('王五');
CREATE TABLE sc(
s_id INT(10),
c_id INT(10),
score INT(10)
);
INSERT INTO sc(s_id,c_id,score) VALUES
('01' , '01' , 80),
('01' , '02' , 90),
('01' , '03' , 99),
('02' , '01' , 70),
('02' , '02' , 60),
('02' , '03' , 80),
('03' , '01' , 80),
('03' , '02' , 80),
('03' , '03' , 80),
('04' , '01' , 50),
('04' , '02' , 30),
('04' , '03' , 20),
('05' , '01' , 76),
('05' , '02' , 87),
('06' , '01' , 31),
('06' , '03' , 34),
('07' , '02' , 89),
('07' , '03' , 98);
SELECT a1.s_id,a1.s_name,a1.s_sex,b1.s1 AS "课程1成绩",b1.s2 AS "课程2成绩" FROM student a1, (
SELECT a.s_id AS s_id,a.score AS s1,b.score AS s2 FROM sc a,sc b
WHERE a.c_id=1 AND b.c_id=2 AND a.s_id=b.s_id
)b1
WHERE s1>s2 AND a1.s_id=b1.s_id;
select s_id,avg(score) AS "平均分" from sc group by s_id having avg(score)>60;
SELECT s_id,COUNT(*) AS "课程总数",SUM(score) AS "总分"FROM sc GROUP BY s_id;
SELECT COUNT(*)AS "人数" FROM teacher WHERE t_name LIKE "李%";
select * from student where s_id in(
select s_id from sc where c_id=(
select c_id from course where t_id=(
select t_id from teacher where t_name="张三")
) );
SELECT c.s_name AS "姓名",c.s_id AS "ID" FROM student AS c,
(SELECT a.s_id AS s_id FROM (SELECT * FROM sc WHERE c_id=1) a ,(SELECT * FROM sc WHERE c_id=2) b
WHERE a.s_id=b.s_id)d
WHERE c.s_id=d.s_id;
SELECT c.s_name AS "姓名",c.s_id AS "ID"FROM student AS c,
(SELECT DISTINCT(a.s_id) AS s_id FROM (SELECT * FROM sc WHERE c_id=1)a,(SELECT * FROM sc WHERE s_id NOT IN (SELECT s_id FROM sc WHERE c_id=2))b WHERE a.s_id =b.s_id)d
WHERE c.`s_id`=d.s_id;
SELECT a.s_name AS "姓名",b.s_id AS "ID" FROM student AS a,sc AS b
WHERE a.s_id=b.s_id GROUP BY a.s_id HAVING COUNT(*)<(SELECT COUNT(DISTINCT c_name)AS a FROM course);
SELECT a.s_name AS "姓名",a.s_id AS "ID" FROM student AS a,
(SELECT DISTINCT(s_id) FROM sc WHERE c_id IN(SELECT c_id FROM sc WHERE s_id=1))b WHERE a.s_id=b.s_id;
SELECT s_id,COUNT(*) FROM sc WHERE c_id IN(SELECT c_id FROM sc WHERE s_id=1) GROUP BY s_id HAVING COUNT(*)=(SELECT COUNT(*) FROM sc WHERE s_id=1);
SELECT DISTINCT s_id FROM sc WHERE s_id NOT IN( SELECT s_id FROM sc WHERE c_id=(SELECT c_id FROM course WHERE t_id=(SELECT t_id FROM teacher WHERE t_name="张三") ) );
SELECT s_id,COUNT(*) FROM sc WHERE sc<60 GROUP BY s_id HAVING COUNT(*)>=2;
SELECT s_id,score FROM sc WHERE score<60 AND c_id=1 ORDER BY score DESC;
SELECT a.*,b.avg FROM sc AS a ,(SELECT s_id,AVG(score) AS AVG FROM sc GROUP BY s_id )b WHERE a.s_id =b.s_id ORDER BY b.avg DESC;
select c_id,max(score) as "最高分",min(score) as "最低分",avg(score) as "平均分" from sc group by c_id;
未完待续!
看代码看到for(;;),然后觉得为什么不写成while(1)呢,所以就做了下面的测试。 ...
在HTML编辑器发布过程中,会出现一些自动生成的HTML标签,或者在留言板程序应用...
合并有序链表 1. 题目描述 2. 题目链接 3. 题目剖析 3.1剖析图示 3.2 图示详解 4...
想了解更多内容,请访问: 51CTO和华为官方战略合作共建的鸿蒙技术社区 https://...
海思驱动开发之寄存器操作 1.查看海思数据手册 2. 配置GPIO为输入输出 步骤1:配...
在这篇文章中,我们假定读者了解 VS 基本的调试知识,如: F5 开始使用调试器运...
前言 本文整理了一些uniapp全局变量的实现方式,细节知识来自于uView官网中对uni...
前言 在之前的博客里,笔者详细阐述了Prometheus数据的插入过程。但我们最常见的...
本文实例为大家分享了JS代码实现页面切换效果的具体代码,供大家参考,具体内容...
动态域名解析,或 DNSR ,通常用于解析 IP 地址经常变化的域名。电信网络提供了...