create table borrower(
姓名 char[20] not null,
系名 char[10],
班级 char[10])
create table loans(
借书证号 char[5],
图书登记号 char[6],
结束日期 DATE,
primary key(借书证号,图书登记号),
foreign key(借书证号) reference borrower(借书证号),
foreign key(图书登记号 reference books(图书登记号))
create table books(
索书号 char[10],
书名 char[20],
图书登记号 char[6] primary key,
出版社 char[20],
价格 smallint))
(1)
select borrower.借书证号,姓名,系名,temp.total as 借书数量
from borrower,(select 借书证号,count(图书登记号) as total
from loans group by 借书证号
where tatal>5 as temp(借书证号,total))
(2)
select borrower.姓名,系名,书名,结束日期
from borrower,loans,books
where borrower.借书证号=loans.借书证号
and books.图书登记号=loans.图书登记号
and 书名 in(selcet 书名
from borrower,loans,books
where borrower.借书证号=loans.借书证号
and books.图书登记号=loans.图书登记号
and 姓名='赵垒')
(3)
create view SB
as
select borrower.借书证号,姓名,班级,books.图书登记号,书名,出版社
,借书日期
from borrower,book,loans
where borrower.借书证号=loans.借书证号
and books.图书登记号=loans.图书登记号
and 系名='信息系'
1
create table student(
sno char[10] primary key,
sname char[20] not null,
ssex char[2],
sage smallint check( sage between 16 and 30),
sdept char[4])
create table course(
cno char[10] primary key,
cname char[20] not null,
cteacher char[20])
create table sc(
sno char[10],
cno char[10],
grade smallint check(grade is null or grade between 0 and
100),
primary key(sno,cno)
foreign key sno reference student(sno),
foreign key cno reference course(cno))
2
insert into student values('102','李四','男',16,'数学')
下同
insert into course values('203',' *** 作系统','程羽')
下同
insert into sc values('101','203',82)
下同
3
(1) select cname,grade
from sc,student,course
where student.sno=sc.sno and course.cno=sc.cno
and sname='张三'
(2) select sname from student
where sno in(select sno from sc x
where not exists(
select * from sc y
where x.sno=y.sno
and y.grade<60))
(3) select cname,sname,grade
from student,course sc,(select cno,max(grade) from sc group by cno
as temp(cno,max))
where student.sno=sc.sno and course.cno=sc.cno
and grade=max and course.cno=temp.cno
4
delete * from sc where grade<60
5
update sc
set grade=(select avg(grade) from sc where cno='203')
where sno=105
仅供参考
都是用SQL SERVER的语法来做的。不知道你要求的是哪个数据库的语法。第一题:
---t表查询每次运输和下次的时间间隔,同一辆车,两次货运日期之间没有运输记录,就连续两次
select top 1 t1.货车编号, 姓名,联系方式
FROM
(select top 2 货车编号,最长间隔 from
(select a.货车编号, max(datediff(d,a.运输日期,b.运输日期) ) as 最长间隔
from运输记录 a, 运输记录 b
where a.货车编号 = b.货车编号
and a.货运单编号 <>b.货运单编号
and a.运输日期 <b.运输日期
and not exists (select 1 from 运输记录 c where a.货车编号 = c.货车编号 and c.运输日期 between a.运输日期 and b.运输日期)
group by a.货车编号) t
order by 最长间隔) t1,
货车, 司机
where t1.货车编号 = 货车.货车编号
and 货车.司机 = 司机.司机
order by 最长间隔 desc
第二题:
select top 1 tmonth as 最忙月份, cnt as 运输次数, 运入总量, 运出总量
FROM
(select month(运输日期) as tmonth,
count(1) as cnt,
sum(case 交易类型 when '运入' then 运输量 else 0 end ) as 运入总量,
sum(case 交易类型 when '运出' then 运输量 else 0 end ) as 运出总量
from 运输记录
where year(运输日期) = 2009
group by tmonth) t
order by t.cnt desc
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)