数据表介绍
–1.学生表
Student(SId,Sname,Sage,Ssex)
–SId 学生编号,Sname 学生姓名,Sage 出生年月,Ssex 学生性别–2.课程表
Course(CId,Cname,TId)
–CId 课程编号,Cname 课程名称,TId 教师编号–3.教师表
Teacher(TId,Tname)
–TId 教师编号,Tname 教师姓名–4.成绩表
SC(SId,CId,score)
–SId 学生编号,CId 课程编号,score 分数
学生表 Student
create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10));
insert into Student values(‘01’ , ‘赵雷’ , ‘1990-01-01’ , ‘男’);
insert into Student values(‘02’ , ‘钱电’ , ‘1990-12-21’ , ‘男’);
insert into Student values(‘03’ , ‘孙风’ , ‘1990-12-20’ , ‘男’);
insert into Student values(‘04’ , ‘李云’ , ‘1990-12-06’ , ‘男’);
insert into Student values(‘05’ , ‘周梅’ , ‘1991-12-01’ , ‘女’);
insert into Student values(‘06’ , ‘吴兰’ , ‘1992-01-01’ , ‘女’);
insert into Student values(‘07’ , ‘郑竹’ , ‘1989-01-01’ , ‘女’);
insert into Student values(‘09’ , ‘张三’ , ‘2017-12-20’ , ‘女’);
insert into Student values(‘10’ , ‘李四’ , ‘2017-12-25’ , ‘女’);
insert into Student values(‘11’ , ‘李四’ , ‘2012-06-06’ , ‘女’);
insert into Student values(‘12’ , ‘赵六’ , ‘2013-06-13’ , ‘女’);
insert into Student values(‘13’ , ‘孙七’ , ‘2014-06-01’ , ‘女’);
mysql> create table Student(SId varchar(10),Sname varchar(10),Sage datetime,Ssex varchar(10));
Query OK, 0 rows affected (0.03 sec)
mysql> insert into Student values('01' , '赵雷' , '1990-01-01' , '男');
Query OK, 1 row affected (0.01 sec)
mysql> insert into Student values('02' , '钱电' , '1990-12-21' , '男');
Query OK, 1 row affected (0.00 sec)
mysql> insert into Student values('03' , '孙风' , '1990-12-20' , '男');
Query OK, 1 row affected (0.00 sec)
mysql> insert into Student values('04' , '李云' , '1990-12-06' , '男');
Query OK, 1 row affected (0.00 sec)
mysql> insert into Student values('05' , '周梅' , '1991-12-01' , '女');
Query OK, 1 row affected (0.01 sec)
mysql> insert into Student values('06' , '吴兰' , '1992-01-01' , '女');
Query OK, 1 row affected (0.00 sec
mysql> insert into Student values('07' , '郑竹' , '1989-01-01' , '女');
Query OK, 1 row affected (0.00 sec)
mysql> insert into Student values('09' , '张三' , '2017-12-20' , '女');
Query OK, 1 row affected (0.01 sec)
mysql> insert into Student values('10' , '李四' , '2017-12-25' , '女');
Query OK, 1 row affected (0.01 sec)
mysql> insert into Student values('11' , '李四' , '2012-06-06' , '女');
Query OK, 1 row affected (0.01 sec)
mysql> insert into Student values('12' , '赵六' , '2013-06-13' , '女');
Query OK, 1 row affected (0.01 sec)
mysql> insert into Student values('13' , '孙七' , '2014-06-01' , '女');
Query OK, 1 row affected (0.01 sec)
mysql> select * from Student;
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 03 | 孙风 | 1990-12-20 00:00:00 | 男 |
| 04 | 李云 | 1990-12-06 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-01-01 00:00:00 | 女 |
| 07 | 郑竹 | 1989-01-01 00:00:00 | 女 |
| 09 | 张三 | 2017-12-20 00:00:00 | 女 |
| 10 | 李四 | 2017-12-25 00:00:00 | 女 |
| 11 | 李四 | 2012-06-06 00:00:00 | 女 |
| 12 | 赵六 | 2013-06-13 00:00:00 | 女 |
| 13 | 孙七 | 2014-06-01 00:00:00 | 女 |
+------+-------+---------------------+------+
12 rows in set (0.00 sec)
mysql>
科目表 Course
create table Course(CId varchar(10),Cname nvarchar(10),TId varchar(10));
insert into Course values(‘01’ , ‘语文’ , ‘02’);
insert into Course values(‘02’ , ‘数学’ , ‘01’);
insert into Course values(‘03’ , ‘英语’ , ‘03’);
mysql> create table Course(CId varchar(10),Cname nvarchar(10),TId varchar(10));
Query OK, 0 rows affected, 1 warning (0.02 sec)
mysql> insert into Course values('01' , '语文' , '02');
Query OK, 1 row affected (0.01 sec)
mysql> insert into Course values('02' , '数学' , '01');
Query OK, 1 row affected (0.01 sec)
mysql> insert into Course values('03' , '英语' , '03');
Query OK, 1 row affected (0.00 sec)
mysql> select * from Course;
+------+-------+------+
| CId | Cname | TId |
+------+-------+------+
| 01 | 语文 | 02 |
| 02 | 数学 | 01 |
| 03 | 英语 | 03 |
+------+-------+------+
3 rows in set (0.00 sec)
mysql>
教师表 Teacher
create table Teacher(TId varchar(10),Tname varchar(10));
insert into Teacher values(‘01’ , ‘张三’);
insert into Teacher values(‘02’ , ‘李四’);
insert into Teacher values(‘03’ , ‘王五’);
mysql> create table Teacher(TId varchar(10),Tname varchar(10));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into Teacher values('01' , '张三');
Query OK, 1 row affected (0.00 sec)
mysql> insert into Teacher values('02' , '李四');
Query OK, 1 row affected (0.00 sec)
mysql> insert into Teacher values('03' , '王五');
Query OK, 1 row affected (0.01 sec)
mysql> select * from Teacher;
+------+-------+
| TId | Tname |
+------+-------+
| 01 | 张三 |
| 02 | 李四 |
| 03 | 王五 |
+------+-------+
3 rows in set (0.00 sec)
mysql>
成绩表 SC
create table SC(SId varchar(10),CId varchar(10),score decimal(18,1));
insert into SC values(‘01’ , ‘01’ , 80);
insert into SC values(‘01’ , ‘02’ , 90);
insert into SC values(‘01’ , ‘03’ , 99);
insert into SC values(‘02’ , ‘01’ , 70);
insert into SC values(‘02’ , ‘02’ , 60);
insert into SC values(‘02’ , ‘03’ , 80);
insert into SC values(‘03’ , ‘01’ , 80);
insert into SC values(‘03’ , ‘02’ , 80);
insert into SC values(‘03’ , ‘03’ , 80);
insert into SC values(‘04’ , ‘01’ , 50);
insert into SC values(‘04’ , ‘02’ , 30);
insert into SC values(‘04’ , ‘03’ , 20);
insert into SC values(‘05’ , ‘01’ , 76);
insert into SC values(‘05’ , ‘02’ , 87);
insert into SC values(‘06’ , ‘01’ , 31);
insert into SC values(‘06’ , ‘03’ , 34);
insert into SC values(‘07’ , ‘02’ , 89);
insert into SC values(‘07’ , ‘03’ , 98);
mysql> create table SC(SId varchar(10),CId varchar(10),score decimal(18,1));
Query OK, 0 rows affected (0.02 sec)
mysql> insert into SC values('01' , '01' , 80);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('01' , '02' , 90);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('01' , '03' , 99);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('02' , '01' , 70);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('02' , '02' , 60);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('02' , '03' , 80);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('03' , '01' , 80);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('03' , '02' , 80);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('03' , '03' , 80);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('04' , '01' , 50);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('04' , '02' , 30);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('04' , '03' , 20);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('05' , '01' , 76);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('05' , '02' , 87);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('06' , '01' , 31);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('06' , '03' , 34);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('07' , '02' , 89);
Query OK, 1 row affected (0.00 sec)
mysql> insert into SC values('07' , '03' , 98);
Query OK, 1 row affected (0.01 sec)
mysql> select * from SC;
+------+------+-------+
| SId | CId | score |
+------+------+-------+
| 01 | 01 | 80.0 |
| 01 | 02 | 90.0 |
| 01 | 03 | 99.0 |
| 02 | 01 | 70.0 |
| 02 | 02 | 60.0 |
| 02 | 03 | 80.0 |
| 03 | 01 | 80.0 |
| 03 | 02 | 80.0 |
| 03 | 03 | 80.0 |
| 04 | 01 | 50.0 |
| 04 | 02 | 30.0 |
| 04 | 03 | 20.0 |
| 05 | 01 | 76.0 |
| 05 | 02 | 87.0 |
| 06 | 01 | 31.0 |
| 06 | 03 | 34.0 |
| 07 | 02 | 89.0 |
| 07 | 03 | 98.0 |
+------+------+-------+
18 rows in set (0.00 sec)
mysql>
mysql> select * from Student RIGHT JOIN (
-> select t1.SId, class1, class2 from
-> (select SId, score as class1 from sc where sc.CId = '01')as t1,
-> (select SId, score as class2 from sc where sc.CId = '02')as t2
-> where t1.SId = t2.SId AND t1.class1 > t2.class2
-> )r
-> on Student.SId = r.SId;
+------+-------+---------------------+------+------+--------+--------+
| SId | Sname | Sage | Ssex | SId | class1 | class2 |
+------+-------+---------------------+------+------+--------+--------+
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 | 02 | 70.0 | 60.0 |
| 04 | 李云 | 1990-12-06 00:00:00 | 男 | 04 | 50.0 | 30.0 |
+------+-------+---------------------+------+------+--------+--------+
2 rows in set (0.01 sec)
mysql> select * from (
-> select t1.SId, class1, class2
-> from
-> (SELECT SId, score as class1 FROM sc WHERE sc.CId = '01') AS t1,
-> (SELECT SId, score as class2 FROM sc WHERE sc.CId = '02') AS t2
-> where t1.SId = t2.SId and t1.class1 > t2.class2
-> ) r
-> LEFT JOIN Student
-> ON Student.SId = r.SId;
+------+--------+--------+------+-------+---------------------+------+
| SId | class1 | class2 | SId | Sname | Sage | Ssex |
+------+--------+--------+------+-------+---------------------+------+
| 02 | 70.0 | 60.0 | 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 04 | 50.0 | 30.0 | 04 | 李云 | 1990-12-06 00:00:00 | 男 |
+------+--------+--------+------+-------+---------------------+------+
2 rows in set (0.00 sec)
mysql>
mysql> select * from
-> (select * from sc where sc.CId = '01') as t1,
-> (select * from sc where sc.CId = '02') as t2
-> where t1.SId = t2.SId;
+------+------+-------+------+------+-------+
| SId | CId | score | SId | CId | score |
+------+------+-------+------+------+-------+
| 01 | 01 | 80.0 | 01 | 02 | 90.0 |
| 02 | 01 | 70.0 | 02 | 02 | 60.0 |
| 03 | 01 | 80.0 | 03 | 02 | 80.0 |
| 04 | 01 | 50.0 | 04 | 02 | 30.0 |
| 05 | 01 | 76.0 | 05 | 02 | 87.0 |
+------+------+-------+------+------+-------+
5 rows in set (0.00 sec)
mysql>
mysql> select * from
-> (select * from sc where sc.CId = '02') as t2
-> right join
-> (select * from sc where sc.CId = '01') as t1
-> on t1.SId = t2.SId;
+------+------+-------+------+------+-------+
| SId | CId | score | SId | CId | score |
+------+------+-------+------+------+-------+
| 01 | 02 | 90.0 | 01 | 01 | 80.0 |
| 02 | 02 | 60.0 | 02 | 01 | 70.0 |
| 03 | 02 | 80.0 | 03 | 01 | 80.0 |
| 04 | 02 | 30.0 | 04 | 01 | 50.0 |
| 05 | 02 | 87.0 | 05 | 01 | 76.0 |
| NULL | NULL | NULL | 06 | 01 | 31.0 |
+------+------+-------+------+------+-------+
6 rows in set (0.00 sec)
mysql>
mysql> select * from sc
-> where sc.SId not in (
-> select SId from sc
-> where sc.CId = '01'
-> )
-> AND sc.CId= '02';
+------+------+-------+
| SId | CId | score |
+------+------+-------+
| 07 | 02 | 89.0 |
+------+------+-------+
1 row in set (0.00 sec)
mysql>
mysql> select student.SId,sname,ss from student,(
-> select SId, AVG(score) as ss from sc
-> GROUP BY SId
-> HAVING AVG(score)> 60
-> )r
-> where student.sid = r.sid;
+------+-------+----------+
| SId | sname | ss |
+------+-------+----------+
| 01 | 赵雷 | 89.66667 |
| 02 | 钱电 | 70.00000 |
| 03 | 孙风 | 80.00000 |
| 05 | 周梅 | 81.50000 |
| 07 | 郑竹 | 93.50000 |
+------+-------+----------+
5 rows in set (0.00 sec)
mysql> select Student.SId, Student.Sname, r.ss from Student right join(
-> select SId, AVG(score) AS ss from sc
-> GROUP BY SId
-> HAVING AVG(score)> 60
-> )r on Student.SId = r.SId;
+------+-------+----------+
| SId | Sname | ss |
+------+-------+----------+
| 01 | 赵雷 | 89.66667 |
| 02 | 钱电 | 70.00000 |
| 03 | 孙风 | 80.00000 |
| 05 | 周梅 | 81.50000 |
| 07 | 郑竹 | 93.50000 |
+------+-------+----------+
5 rows in set (0.00 sec)
mysql> select s.SId,ss,Sname from(
-> select SId, AVG(score) as ss from sc
-> GROUP BY SId
-> HAVING AVG(score)> 60
-> )r left join
-> (select Student.SId, Student.Sname from
-> Student)s on s.SId = r.SId;
+------+----------+-------+
| SId | ss | Sname |
+------+----------+-------+
| 01 | 89.66667 | 赵雷 |
| 02 | 70.00000 | 钱电 |
| 03 | 80.00000 | 孙风 |
| 05 | 81.50000 | 周梅 |
| 07 | 93.50000 | 郑竹 |
+------+----------+-------+
5 rows in set (0.00 sec)
mysql>
mysql> select s.sid, s.sname,r.coursenumber,r.scoresum
-> from (
-> (select student.sid,student.sname
-> from student
-> )s
-> left join
-> (select
-> sc.sid, sum(sc.score) as scoresum, count(sc.cid) as coursenumber
-> from sc
-> group by sc.sid
-> )r
-> on s.sid = r.sid
-> );
+------+-------+--------------+----------+
| sid | sname | coursenumber | scoresum |
+------+-------+--------------+----------+
| 01 | 赵雷 | 3 | 269.0 |
| 02 | 钱电 | 3 | 210.0 |
| 03 | 孙风 | 3 | 240.0 |
| 04 | 李云 | 3 | 100.0 |
| 05 | 周梅 | 2 | 163.0 |
| 06 | 吴兰 | 2 | 65.0 |
| 07 | 郑竹 | 2 | 187.0 |
| 09 | 张三 | NULL | NULL |
| 10 | 李四 | NULL | NULL |
| 11 | 李四 | NULL | NULL |
| 12 | 赵六 | NULL | NULL |
| 13 | 孙七 | NULL | NULL |
+------+-------+--------------+----------+
12 rows in set (0.00 sec)
mysql>
mysql> select * from student
-> where exists (select sc.sid from sc where student.sid = sc.sid);
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 03 | 孙风 | 1990-12-20 00:00:00 | 男 |
| 04 | 李云 | 1990-12-06 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-01-01 00:00:00 | 女 |
| 07 | 郑竹 | 1989-01-01 00:00:00 | 女 |
+------+-------+---------------------+------+
7 rows in set (0.00 sec)
mysql> select * from student
-> where student.sid in (select sc.sid from sc);
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 03 | 孙风 | 1990-12-20 00:00:00 | 男 |
| 04 | 李云 | 1990-12-06 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-01-01 00:00:00 | 女 |
| 07 | 郑竹 | 1989-01-01 00:00:00 | 女 |
+------+-------+---------------------+------+
7 rows in set (0.00 sec)
mysql>
mysql> select count(*)
-> from teacher
-> where tname like '李%';
+----------+
| count(*) |
+----------+
| 1 |
+----------+
1 row in set (0.00 sec)
mysql>
mysql> select student.* from student,teacher,course,sc
-> where
-> student.sid = sc.sid
-> and course.cid=sc.cid
-> and course.tid = teacher.tid
-> and tname = '张三';
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 03 | 孙风 | 1990-12-20 00:00:00 | 男 |
| 04 | 李云 | 1990-12-06 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 07 | 郑竹 | 1989-01-01 00:00:00 | 女 |
+------+-------+---------------------+------+
6 rows in set (0.00 sec)
mysql>
mysql> select * from student
-> where student.sid not in (
-> select sc.sid from sc
-> group by sc.sid
-> having count(sc.cid)= (select count(cid) from course)
-> );
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-01-01 00:00:00 | 女 |
| 07 | 郑竹 | 1989-01-01 00:00:00 | 女 |
| 09 | 张三 | 2017-12-20 00:00:00 | 女 |
| 10 | 李四 | 2017-12-25 00:00:00 | 女 |
| 11 | 李四 | 2012-06-06 00:00:00 | 女 |
| 12 | 赵六 | 2013-06-13 00:00:00 | 女 |
| 13 | 孙七 | 2014-06-01 00:00:00 | 女 |
+------+-------+---------------------+------+
8 rows in set (0.00 sec)
mysql>
mysql> select * from student
-> where student.sid in (
-> select sc.sid from sc
-> where sc.cid in(
-> select sc.cid from sc
-> where sc.sid = '01'
-> )
-> );
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 03 | 孙风 | 1990-12-20 00:00:00 | 男 |
| 04 | 李云 | 1990-12-06 00:00:00 | 男 |
| 05 | 周梅 | 1991-12-01 00:00:00 | 女 |
| 06 | 吴兰 | 1992-01-01 00:00:00 | 女 |
| 07 | 郑竹 | 1989-01-01 00:00:00 | 女 |
+------+-------+---------------------+------+
7 rows in set (0.00 sec)
mysql>
mysql> select * from student
-> where student.sid not in(
-> select sc.sid from sc where sc.cid in(
-> select course.cid from course where course.tid in(
-> select teacher.tid from teacher where tname = "张三"
-> )
-> )
-> );
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 06 | 吴兰 | 1992-01-01 00:00:00 | 女 |
| 09 | 张三 | 2017-12-20 00:00:00 | 女 |
| 10 | 李四 | 2017-12-25 00:00:00 | 女 |
| 11 | 李四 | 2012-06-06 00:00:00 | 女 |
| 12 | 赵六 | 2013-06-13 00:00:00 | 女 |
| 13 | 孙七 | 2014-06-01 00:00:00 | 女 |
+------+-------+---------------------+------+
6 rows in set (0.00 sec)
mysql> select * from student
-> where student.sid not in(
-> select sc.sid from sc,course,teacher
-> where
-> sc.cid = course.cid
-> and course.tid = teacher.tid
-> and teacher.tname= "张三"
-> );
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 06 | 吴兰 | 1992-01-01 00:00:00 | 女 |
| 09 | 张三 | 2017-12-20 00:00:00 | 女 |
| 10 | 李四 | 2017-12-25 00:00:00 | 女 |
| 11 | 李四 | 2012-06-06 00:00:00 | 女 |
| 12 | 赵六 | 2013-06-13 00:00:00 | 女 |
| 13 | 孙七 | 2014-06-01 00:00:00 | 女 |
+------+-------+---------------------+------+
6 rows in set (0.00 sec)
mysql>
mysql> select student.SId, student.Sname,b.avg
-> from student RIGHT JOIN
-> (select sid, AVG(score) as avg from sc
-> where sid in (
-> select sid from sc
-> where score<60
-> GROUP BY sid
-> HAVING count(score)>1)
-> GROUP BY sid) b on student.sid=b.sid;
+------+-------+----------+
| SId | Sname | avg |
+------+-------+----------+
| 04 | 李云 | 33.33333 |
| 06 | 吴兰 | 32.50000 |
+------+-------+----------+
2 rows in set (0.00 sec)
mysql>
mysql> select student.*, sc.score from student, sc
-> where student.sid = sc.sid
-> and sc.score < 60
-> and cid = "01"
-> ORDER BY sc.score DESC;
+------+-------+---------------------+------+-------+
| SId | Sname | Sage | Ssex | score |
+------+-------+---------------------+------+-------+
| 04 | 李云 | 1990-12-06 00:00:00 | 男 | 50.0 |
| 06 | 吴兰 | 1992-01-01 00:00:00 | 女 | 31.0 |
+------+-------+---------------------+------+-------+
2 rows in set (0.00 sec)
mysql>
mysql> select * from sc
-> left join (
-> select sid,avg(score) as avscore from sc
-> group by sid
-> )r
-> on sc.sid = r.sid
-> order by avscore desc;
+------+------+-------+------+----------+
| SId | CId | score | sid | avscore |
+------+------+-------+------+----------+
| 07 | 02 | 89.0 | 07 | 93.50000 |
| 07 | 03 | 98.0 | 07 | 93.50000 |
| 01 | 01 | 80.0 | 01 | 89.66667 |
| 01 | 02 | 90.0 | 01 | 89.66667 |
| 01 | 03 | 99.0 | 01 | 89.66667 |
| 05 | 01 | 76.0 | 05 | 81.50000 |
| 05 | 02 | 87.0 | 05 | 81.50000 |
| 03 | 01 | 80.0 | 03 | 80.00000 |
| 03 | 02 | 80.0 | 03 | 80.00000 |
| 03 | 03 | 80.0 | 03 | 80.00000 |
| 02 | 01 | 70.0 | 02 | 70.00000 |
| 02 | 02 | 60.0 | 02 | 70.00000 |
| 02 | 03 | 80.0 | 02 | 70.00000 |
| 04 | 01 | 50.0 | 04 | 33.33333 |
| 04 | 02 | 30.0 | 04 | 33.33333 |
| 04 | 03 | 20.0 | 04 | 33.33333 |
| 06 | 01 | 31.0 | 06 | 32.50000 |
| 06 | 03 | 34.0 | 06 | 32.50000 |
+------+------+-------+------+----------+
18 rows in set (0.00 sec)
mysql>
以如下形式显示:课程 ID,课程 name,最高分,最低分,平均分,及格率,中等率,优良率,优秀率
及格为>=60,中等为:70-80,优良为:80-90,优秀为:>=90
要求输出课程号和选修人数,查询结果按人数降序排列,若人数相同,按课程号升序排列
mysql> select * from sc
-> where (
-> select count(*) from sc as a
-> where sc.cid = a.cid and sc.score<a.score
-> )< 3
-> order by cid asc, sc.score desc;
+------+------+-------+
| SId | CId | score |
+------+------+-------+
| 01 | 01 | 80.0 |
| 03 | 01 | 80.0 |
| 05 | 01 | 76.0 |
| 01 | 02 | 90.0 |
| 07 | 02 | 89.0 |
| 05 | 02 | 87.0 |
| 01 | 03 | 99.0 |
| 07 | 03 | 98.0 |
| 02 | 03 | 80.0 |
| 03 | 03 | 80.0 |
+------+------+-------+
10 rows in set (0.00 sec)
mysql>
mysql> select cid, count(sid) from sc
-> group by cid;
+------+------------+
| cid | count(sid) |
+------+------------+
| 01 | 6 |
| 02 | 6 |
| 03 | 6 |
+------+------------+
3 rows in set (0.00 sec)
mysql>
嵌套查询
mysql> select student.sid, student.sname from student
-> where student.sid in
-> (select sc.sid from sc
-> group by sc.sid
-> having count(sc.cid)=2
-> );
+------+-------+
| sid | sname |
+------+-------+
| 05 | 周梅 |
| 06 | 吴兰 |
| 07 | 郑竹 |
+------+-------+
3 rows in set (0.00 sec)
mysql> select ssex, count(*) from student
-> group by ssex;
+------+----------+
| ssex | count(*) |
+------+----------+
| 男 | 4 |
| 女 | 8 |
+------+----------+
2 rows in set (0.00 sec)
mysql>
mysql> select sname, count(*) from student
-> group by sname
-> having count(*)>1;
+-------+----------+
| sname | count(*) |
+-------+----------+
| 李四 | 2 |
+-------+----------+
1 row in set (0.00 sec)
mysql> select * from student
-> where sname in (
-> select sname from student
-> group by sname
-> having count(*)>1
-> );
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 10 | 李四 | 2017-12-25 00:00:00 | 女 |
| 11 | 李四 | 2012-06-06 00:00:00 | 女 |
+------+-------+---------------------+------+
2 rows in set (0.00 sec)
mysql>
mysql> select *
-> from student
-> where YEAR(student.Sage)=1990;
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 02 | 钱电 | 1990-12-21 00:00:00 | 男 |
| 03 | 孙风 | 1990-12-20 00:00:00 | 男 |
| 04 | 李云 | 1990-12-06 00:00:00 | 男 |
+------+-------+---------------------+------+
4 rows in set (0.00 sec)
mysql>
mysql> select student.sname, sc.score from student, sc, course
-> where student.sid = sc.sid
-> and course.cid = sc.cid
-> and course.cname = "数学"
-> and sc.score < 60;
+-------+-------+
| sname | score |
+-------+-------+
| 李云 | 30.0 |
+-------+-------+
1 row in set (0.00 sec)
mysql>
mysql> select student.sname, cid, score from student
-> left join sc
-> on student.sid = sc.sid;
+-------+------+-------+
| sname | cid | score |
+-------+------+-------+
| 赵雷 | 03 | 99.0 |
| 赵雷 | 02 | 90.0 |
| 赵雷 | 01 | 80.0 |
| 钱电 | 03 | 80.0 |
| 钱电 | 02 | 60.0 |
| 钱电 | 01 | 70.0 |
| 孙风 | 03 | 80.0 |
| 孙风 | 02 | 80.0 |
| 孙风 | 01 | 80.0 |
| 李云 | 03 | 20.0 |
| 李云 | 02 | 30.0 |
| 李云 | 01 | 50.0 |
| 周梅 | 02 | 87.0 |
| 周梅 | 01 | 76.0 |
| 吴兰 | 03 | 34.0 |
| 吴兰 | 01 | 31.0 |
| 郑竹 | 03 | 98.0 |
| 郑竹 | 02 | 89.0 |
| 张三 | NULL | NULL |
| 李四 | NULL | NULL |
| 李四 | NULL | NULL |
| 赵六 | NULL | NULL |
| 孙七 | NULL | NULL |
+-------+------+-------+
23 rows in set (0.00 sec)
mysql>
mysql> select student.sname, course.cname,sc.score from student,course,sc
-> where sc.score>70
-> and student.sid = sc.sid
-> and sc.cid = course.cid;
+-------+-------+-------+
| sname | cname | score |
+-------+-------+-------+
| 赵雷 | 英语 | 99.0 |
| 赵雷 | 数学 | 90.0 |
| 赵雷 | 语文 | 80.0 |
| 钱电 | 英语 | 80.0 |
| 孙风 | 英语 | 80.0 |
| 孙风 | 数学 | 80.0 |
| 孙风 | 语文 | 80.0 |
| 周梅 | 数学 | 87.0 |
| 周梅 | 语文 | 76.0 |
| 郑竹 | 英语 | 98.0 |
| 郑竹 | 数学 | 89.0 |
+-------+-------+-------+
11 rows in set (0.00 sec)
mysql>
mysql> select cid from sc
-> where score< 60
-> group by cid;
+------+
| cid |
+------+
| 01 |
| 02 |
| 03 |
+------+
3 rows in set (0.00 sec)
mysql> select DISTINCT sc.CId
-> from sc
-> where sc.score <60;
+------+
| CId |
+------+
| 01 |
| 02 |
| 03 |
+------+
3 rows in set (0.00 sec)
mysql>
mysql> select student.sid,student.sname
-> from student,sc
-> where cid="01"
-> and score>=80
-> and student.sid = sc.sid;
+------+-------+
| sid | sname |
+------+-------+
| 01 | 赵雷 |
| 03 | 孙风 |
+------+-------+
2 rows in set (0.00 sec)
mysql>
mysql> select sc.CId,count(*) as 学生人数
-> from sc
-> GROUP BY sc.CId;
+------+----------+
| CId | 学生人数 |
+------+----------+
| 01 | 6 |
| 02 | 6 |
| 03 | 6 |
+------+----------+
3 rows in set (0.00 sec)
mysql>
mysql> select student.*, sc.score, sc.cid from student, teacher, course,sc
-> where teacher.tid = course.tid
-> and sc.sid = student.sid
-> and sc.cid = course.cid
-> and teacher.tname = "张三"
-> and sc.score = (
-> select Max(sc.score)
-> from sc,student, teacher, course
-> where teacher.tid = course.tid
-> and sc.sid = student.sid
-> and sc.cid = course.cid
-> and teacher.tname = "张三"
-> );
+------+-------+---------------------+------+-------+------+
| SId | Sname | Sage | Ssex | score | cid |
+------+-------+---------------------+------+-------+------+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 | 90.0 | 02 |
| 07 | 郑竹 | 1989-01-01 00:00:00 | 女 | 90.0 | 02 |
+------+-------+---------------------+------+-------+------+
2 rows in set (0.00 sec)
mysql>
mysql> select sc.cid, count(sid) as cc from sc
-> group by cid
-> having cc >5;
+------+----+
| cid | cc |
+------+----+
| 01 | 6 |
| 02 | 6 |
| 03 | 6 |
+------+----+
3 rows in set (0.00 sec)
mysql>
mysql> select sid, count(cid) as cc from sc
-> group by sid
-> having cc>=2;
+------+----+
| sid | cc |
+------+----+
| 01 | 3 |
| 02 | 3 |
| 03 | 3 |
| 04 | 3 |
| 05 | 2 |
| 06 | 2 |
| 07 | 2 |
+------+----+
7 rows in set (0.00 sec)
mysql>
mysql> select *
-> from student
-> where MONTH(student.Sage)=MONTH(CURDATE());
+------+-------+---------------------+------+
| SId | Sname | Sage | Ssex |
+------+-------+---------------------+------+
| 01 | 赵雷 | 1990-01-01 00:00:00 | 男 |
| 06 | 吴兰 | 1992-01-01 00:00:00 | 女 |
| 07 | 郑竹 | 1989-01-01 00:00:00 | 女 |
+------+-------+---------------------+------+
3 rows in set (0.00 sec)