mysql查询语句综合实例
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
查询综合实例
假设学生选课数据库有三个表即学生表S、课程表C
和学生选课表SC,它们的结构如下所示,请根据所
给的每种功能写出相应的查询语句。
S(S# ,SN ,SEX ,AGE ,DEPT)
C(C# ,CN)
SC(S# ,C# ,GRADE)
其中:S#为学号,SN为姓名,SEX为性别,AGE为年龄,DEPT 为系别,C#为课程号,CN为课程名,GRADE为课程成绩。
1、查询所有姓王的学生的姓名和性别。
2、统计学生选课数据库中开出的课程总数。
3、查询每个学生选修每门课程的有关课程数据(姓名、课程名和成绩等)。
4、从学生选课库中查询出被2名以上(含2名)学生选修的所有课程信息。。
5、从学生选课库中查询出最多选修了1门课(含未选任何课程)的全
部学生信息。
6、查询所有与“张鲁”同一性别的学生姓名、年龄和性别(假设库中只
有一个学生的姓名为“张鲁”)。
7、从学生选课库中查询出每门课程被选修的学生人数,并按所选人数
的降序排列出课程号和选课人数。
答案:
1.建表脚本:
/*==============================================================*/ /* DBMS name: MySQL 5.0 */
/* Created on: 2013-11-04 15:14:23 */
/*==============================================================*/ drop table if exists course;
drop table if exists sc;
drop index Index_2 on student;
drop table if exists student;
/*==============================================================*/ /* Table: course */
/*==============================================================*/ create table course
(
couid int not null auto_increment,
cno varchar(10) not null,
cname varchar(30) not null,
primary key (couid)
);
/*==============================================================*/ /* Table: sc */
/*==============================================================*/ create table sc
(
sid int not null auto_increment,
stuid int,
couid int,
grade varchar(10) not null,
primary key (sid)
);
/*==============================================================*/ /* Table: student */
/*==============================================================*/ create table student
(
stuid int not null auto_increment,
stuno varchar(10) not null,
stuname varchar(10) not null,
sex varchar(10) not null,
age int,
dept varchar(20),
primary key (stuid)
);
/*==============================================================*/ /* Index: Index_2 */
/*==============================================================*/ create unique index Index_2 on student
(
stuname
);
alter table sc add constraint FK_c_sc foreign key (couid)
references course (couid) on delete restrict on update restrict; alter table sc add constraint FK_s_sc foreign key (stuid)
references student (stuid) on delete restrict on update restrict;手工填表:
Mysql>create database demo;
Mysql>use demo;
1、查询所有姓王的学生的姓名和性别
select stuname, sex from student where stuname like ‘王%';
2、统计学生选课数据库中开出的课程总数
select count(*) total from course;
3、查询每个学生选修每门课程的有关数据
(姓名、课程名和成绩等)
select s.stuname, ame, sc.grade from student as s, course c, sc where s.stuid=sc.stuid and c.couid=sc.couid
4、从学生选课库中查询出被3名以上
(含3名)学生选修的所有课程的信息
select * from course c where exists (select sc.couid from sc where c.couid=sc.couid group by sc.couid having count(*)>=3);
查选课人数超过3人的课程平均成绩
select sc.couid,avg(sc.grade) from sc group by sc.couid having count(*)>=3;查所有课程的平均成绩
select sc.couid,avg(sc.grade) from sc group by sc.couid;
5、从学生选课库中查询出最多选修了1门课
(含未选任何课程)的全部学生信息
select * from student s where stuid in (select sc.stuid from sc group by sc.stuid having count(*)=1) or not exists (select * from sc where s.stuid=sc.stuid);
6、查询所有与“张鲁”同一性别的学生姓名、年龄和性别(假设库中只有一个学生的姓名为“张鲁”)
select * from student s where sex = (select sex from student where stuname="张鲁");
7、从学生选课库中查询出每门课程被选修的学生人数,并按所选人数