参考答案-数据库原理测试一

测试一参考答案


1.建表与插入数据

create database School;

use School;

create table Classes (
    cid int primary key,
    cname varchar(30),
    cteacher varchar(10)
);

create table Student (
    sid int primary key,
    sname varchar(10),
    ssex char(2),
    sage smallint,
    sclass int,
    foreign key (sclass)
        references Classes (cid)
);

insert into Classes values( 1,'2010级软件工程1班','张老师');
insert into Classes values( 2,'2010级软件工程2班','张老师');
insert into Classes values( 3,'2010级计算机科学与技术1班','王老师');
insert into Classes values( 4,'2010级计算机科学与技术2班','王老师');

insert Into Student(sid,sname,sage,ssex,sclass) values(1,'张三',19,'男',3);
insert Into Student(sid,sname,sage,ssex,sclass) values(2,'李四',20,'男',4);
insert Into Student(sid,sname,sage,ssex,sclass) values(3,'王五',18,'女',3);
insert Into Student(sid,sname,sage,ssex,sclass) values(4,'赵六',19,'女',2);
insert Into Student(sid,sname,sage,ssex,sclass) values(5,'钱七',18,'男',1);
insert Into Student(sid,sname,sage,ssex,sclass) values(6,'张八',19,'女',1);
insert Into Student(sid,sname,sage,ssex,sclass) values(7,'王九',21,'男',1);
insert Into Student(sid,sname,sage,ssex,sclass) values(8,'赵十',20,'女',4);

2.SQL查询

/* (1)查看School数据库有哪些表*/
show tables;

/*(2)查看Student表的结构*/
desc student;

/*(3)查询所有班级的信息*/
select * 
from classes;

/*(4)查询3号班级的学生学号、姓名和年龄*/
select sid,sname,sage
from student
where sid=3;

/*(5)查询2010级软件工程1班学生的学号,姓名和出生年*/
select sid,sname,year(now())-sage
from student,classes
where student.sclass=cid
  and cname = '2010级软件工程1班';

/*(6)查询每个班级的学生数,结果显示班级号、班级人数*/
select sclass 班级号,count(*) 班级人数
from student
group by sclass;

/*(7)查询每个班级的学生平均年龄,结果显示班级号、平均年龄*/
select sclass 班级号, avg(sage) 平均年龄
from student
group by sclass;

/*(8)查询每个教师所带学生数,结果显示教师名、带学生数*/
select cteacher 教师名,count(*) 带学生数
from student,classes
where student.sclass = classes.cid
group by cteacher;

/*(9)查询教师带学生人数大于2人的教师名和带学生数*/
select cteacher 教师名,count(*) 带学生数
from student,classes
where student.sclass = classes.cid
group by cteacher
having count(*)>2;

/*(10)查询每个班级的学生数,结果显示班级号和班级人数,按人数降序排序*/
select sclass 班级号,count(*) 班级人数
from student
group by sclass
order by 班级人数 desc;

3.数据更新






posted @ 2013-04-23 20:09  涛涌四海  阅读(105)  评论(0编辑  收藏  举报