设为首页 加入收藏

TOP

SQL学生、课程、选课,查询选择所有/3门以上课程的学生的语句
2014-11-24 02:54:57 来源: 作者: 【 】 浏览:4
Tags:SQL 学生 课程 选课 查询 选择 所有 以上 语句

SQL学生、课程、选课,查询选择所有/3门以上课程的学生的语句
1、学生s、课程c、选课sc,创建表,插入数据
Sql代码 www.2cto.com
/*
SQLyog Trial v10.3
MySQL - 5.5.20 : Database - mytest
*********************************************************************
*/
CREATE DATABASE `mytest`;
USE `mytest`;
/*Table structure for table `c` */
DROP TABLE IF EXISTS `c`;
CREATE TABLE `c` (
`cid` char(10) NOT NULL,
`cname` char(20) DEFAULT NULL,
PRIMARY KEY (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
/*Data for the table `c` */
insert into `c`(`cid`,`cname`) values ('001','b1'),('002','b2'),('003','b3'),('004','b4'),('005','b5');
/*Table structure for table `s` */
DROP TABLE IF EXISTS `s`;
CREATE TABLE `s` (
`sid` char(10) NOT NULL,
`sname` char(20) DEFAULT NULL,
PRIMARY KEY (`sid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
/*Data for the table `s` */
insert into `s`(`sid`,`sname`) values ('001','a'),('002','b'),('003','c'),('004','d'),('005','e'),('006','f');
/*Table structure for table `sc` */
DROP TABLE IF EXISTS `sc`;
CREATE TABLE `sc` (
`sid` char(10) NOT NULL,
`cid` char(10) NOT NULL,
KEY `sid` (`sid`),
KEY `cid` (`cid`),
CONSTRAINT `sc_ibfk_1` FOREIGN KEY (`sid`) REFERENCES `s` (`sid`),
CONSTRAINT `sc_ibfk_2` FOREIGN KEY (`cid`) REFERENCES `c` (`cid`)
) ENGINE=InnoDB DEFAULT CHARSET=gb2312;
/*Data for the table `sc` */
insert into `sc`(`sid`,`cid`) values ('001','001'),('001','002'),('001','003'),('001','004'),('001','005'),('002','002'),('002','003'),('002','005'),('003','001'),('003','002'),('003','004'),('003','005');
2、查询选择所有课程的学生
Sql代码
#查询选择了所有课程的学生(一)
SELECT s.sid,s.sname
FROM s,
(SELECT sc.sid FROM sc GROUP BY sid HAVING COUNT(*)=(SELECT COUNT(*) FROM c))
AS tmp
WHERE s.sid=tmp.sid;
#查询选择了所有课程的学生(二)
SELECT s.`sid`,s.`sname` FROM s WHERE s.`sid` IN (
SELECT sc.`cid` FROM sc GROUP BY sc.sid HAVING COUNT(cid) = (SELECT COUNT(*) FROM c)
);
3、查询选择3门以上课程的学生
Sql代码
#查询选择了超过3门以上课程的学生(一)
SELECT s.sid,s.sname
FROM s,
(SELECT sc.sid FROM sc GROUP BY sid HAVING COUNT(*)>3)
AS tmp
WHERE s.sid=tmp.sid;
#查询选择了超过3门以上课程的学生(二)
SELECT s.`sid`,s.`sname` FROM s WHERE s.`sid` IN (
SELECT sc.`sid` FROM sc GROUP BY sc.sid HAVING COUNT(cid) >3
);
】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇SQL触发器(学生,课程表,选修表) 下一篇学生信息管理系统之数据库语句解析

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容:

·如何理解智能指针? (2025-12-24 12:48:26)
·c++是否应避免使用普 (2025-12-24 12:48:23)
·如何通俗易懂学会 C+ (2025-12-24 12:48:21)
·在 C 语言函数中,如 (2025-12-24 12:19:41)
·C盘里面的AppData文 (2025-12-24 12:19:38)