SQL查询语句

CREATETABLEstudent(stuIDchar(10)PRIMARYKEYNOTNULL,stuNameVarchar(10)NOTNULL,majorVarc... CREATE TABLE student
(
stuID char(10) PRIMARY KEY NOT NULL,
stuName Varchar(10) NOT NULL,
major Varchar(50) NOT NULL,
)
GO

CREATE TABLE book
(
BID char(10) PRIMARY KEY NOT NULL,
title char(50) NOT NULL,
author char(20) NOT NULL,
)
GO

CREATE TABLE borrow
(
borrowID char(10) PRIMARY KEY NOT NULL,
stuID char(10) NOT NULL,
BID char(10) NOT NULL,
T_time datetime NOT NULL,
B_time datetime NOT NULL,
)
GO

ALTER TABLE borrow
ADD CONSTRAINT stuID
FOREIGN KEY(stuID) REFERENCES student(stuID)

ALTER TABLE borrow
ADD CONSTRAINT BID
FOREIGN KEY(BID) REFERENCES book(BID)

insert into student values(1001,'林林','计算机')
insert into student values(1002,'白杨','计算机')
insert into student values(1003,'兰兰','计算机')
insert into student values(1004,'北漂的雪','工商管理')
insert into student values(1005,'五月','数学')

insert into book values(001,'变形金刚','请问')
insert into book values(002,'指环王','撒的理')
insert into book values(003,'哈利波特','请更富')

insert into borrow values(3001,1001,001,2007-12-26,2007-12-28)
insert into borrow values(3002,1001,002,2007-12-26,2007-12-28)
insert into borrow values(3003,1001,003,2007-12-26,2007-12-28)
insert into borrow values(3004,1002,001,2007-12-29,2007-12-30)
insert into borrow values(3005,1003,003,2007-12-10,2007-12-11)
insert into borrow values(3006,1003,002,2007-12-10,2007-12-11)
insert into borrow values(3007,1005,002,2007-12-16,2007-12-18)

1) 查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:

2) 查询所有借过图书的学生编号、学生名称、专业;
3) 查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日 期、归还日期;

4) 查询目前借书但未归还图书的学生名称及未还图书数量;参考查询
展开
 我来答
百度网友f19a583
2010-06-08 · TA获得超过1362个赞
知道小有建树答主
回答量:74
采纳率:0%
帮助的人:125万
展开全部
借书表有两个错误:
1.B_TIME如果不能为空,那么就不会有未还的书,那么第四个题就没法做了,再说不能为空也是不符合现实的,所以要把不能为空去掉,让这一列可以为空
2.在插入时间的时候,要用单引号引起来,我直接拷的你的代码,时间在数据库里成了1905年几月几日了。

下面的过程我都运行过了,直接拷过去就可以执行。第三题数据有点问题。

/*查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期*/
select student.stuID '学生编号',stuName '学生名称',book.bid '图书编号',title '图书名称',t_time '借出时间'
from student inner join borrow on(borrow.stuID=student.stuID) inner join book on (borrow.bid=book.bid)
where major='计算机' and T_time between '2007-12-15' and '2008-1-8'
--结果有四行数据

/* 查询所有借过图书的学生编号、学生名称、专业;*/
select student.stuid '学生编号',stuname '学生名称',major '专业'
from student inner join borrow on (student.stuid=borrow.stuid)
group by student.stuid,stuName,major
--结果有四条数据

/* 查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日 期、归还日期;*/
select stuName '学生姓名',title '图书名称',t_time '借出日期',b_time '归还日期'
from student inner join borrow on(borrow.stuID=student.stuID) inner join book on (borrow.bid=book.bid)
where author='安意如'
--没有安意如的书,改成‘请更富’有两条结果

/* 查询目前借书但未归还图书的学生名称及未还图书数量*/
--你的borrow表的b_time应该是归还日期吧,可是你全部设置为不能为空,也就是说必须要有数据,
--这样就没有不还书的学生了,所以
--b_time应该可以为空,表示借书未还。

select stuName '学生姓名',count(student.stuID)'未还数量'
from student inner join borrow on (student.stuid=borrow.stuID)
where b_time is null
group by stuName
--这个我改数据后试过了
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式