mysql查询语句综合实例

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 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、从学生选课库中查询出每门课程被选修的学生人数,并按所选人数

相关文档
最新文档