日期:2014-05-16 浏览次数:20604 次
drop database if exists SS; create database SS; use SS; create table Student ( Sno char(9) primary key, Sname char(20) unique, Ssex char(2), Sage smallint, Sdept char(20) ); create table Course ( Cno char(4) primary key, Cname char(40), Cpno char(4) references Course(Cno), Ccredit smallint ); create table SC ( Sno char(9) references Student(Sno), Cno char(4) references Course(Cno), Grade smallint, primary key(Sno,Cno) );
-------------------------------------------------------------
例一):查询全体学生的姓名及其出生年月
问题分析:
要查询的数据是:Sname, 出生年份(表中没有此列,不过可以用计算求得)
从哪些表可以得到要查询的数据:Sname 是Student的属性,Sage也是Student的属性,所以说本体要查询
的结果在Student中就可以得到,其中出生年月用现在的年份减去年龄即可
查询语句: select Sname,20012 - Sage
from Student;
---------------------------------------------
例二):查询选修了课程的学生的学号
问题分析:
要查询的数据:Sno
分析:选修了课程,换句话说就是课程号Cno不为空的那些元祖对应的Sno,
SC表中已经含有了Cno信息同时包含了学号,同时要注意去掉重复的数据
因为多个Cno可以对应于一个Sno1
从哪些表可以得到要查询的数据:Sno 和Cno是SC的属性列,所以在SC中即可获得所需信息
查询语句:select distinct Sno
from SC;
---------------------------------------------
例三):查询院系在CS,MA,IS学生的姓名和性别
问题分析:
要查询的数据:Sname,Ssex
从哪些表中可以得到要查询的数据:Sname 和Ssex 是Student的属性列,因此在Student表里查询即可
查询语句:
1)select Sname,Ssex
from Student
where Sdept = 'CS' or Sdept = 'MA' or Sdept = 'IS';
用谓词in也可以查找属性属于指定集合的元祖,所以有查询2
2)select Sname,Ssex
from Student
where Sdept in ('CS','MA','IS');
----------------------------------------------------------
例四):查询“各个”课程号(Cno)以及相应(也就是说课程号对应的)的选课人数
问题分析:
要查询的数据:Cno ,选课人数