面试内容数据库sql

题目1

        学校图书馆借书信息管理系统建立三个表:
        学生信息表:student

字段名称

数据类型

说明

stuID

char(10)

学生编号,主键

stuName

Varchar(10)

学生名称

major

Varchar(50)

专业

        图书表:book

字段名称

数据类型

说明

BID

char(10)

学生编号,主键

title

Varchar(10)

学生名称

author

Varchar(50)

专业

        借书信息表:borrow

字段名称

数据类型

说明

borrowID

char(10)

借书编号,主键

stuID

char(10)

学生编号,外键

BID

char(10)

图书编号,外键

T_time

datetime

借书日期

B_time

datetime

还书日期

        请编写SQL语句完成以下的功能:
1) 查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期;参考查询结果如下图所示:
2) 查询所有借过图书的学生编号、学生名称、专业;参考查询结果如下图所示:
3) 查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期、归还日期;参考查询结果如下图所示:
4) 查询目前借书但未归还图书的学生名称及未还图书数量;参考查询结果如下图所示:
标准答案:
-- 1)查询“计算机”专业学生在“2007-12-15”至“2008-1-8”时间段内借书的学生编号、学生名称、图书编号、图书名称、借出日期—
[sql]  view plain  copy
  1. select 学生编号=stuID,学生名称=(select stuName from student where stuID=borrow.stuID),图书编号=BID,图书名称=(select title from book where BID=borrow.BID),借出日期=T_time from borrow where stuID in (select stuID from student where major='计算机') and T_time>'2007-12-15' and T_time<'2008-1-8'  

     

-- 2)查询所有借过图书的学生编号、学生名称、专业--
[sql]  view plain  copy
  1. select 学生编号=stuID,学生名称=stuName,专业=major from student where stuID in (select stuID from borrow)  

     

-- 3)查询借过作者为“安意如”的图书的学生姓名、图书名称、借出日期--
[sql]  view plain  copy
  1. select 学生名称=(select stuName from student where stuID=borrow.stuID),图书名称=(select title from book where BID=borrow.BID),借出日期=T_time,归还日期=B_time from borrow where BID in (select BID from book where author='安意如') 

     

     
-- 4)查询目前借书但未归还图书的学生名称及未还图书数量--
[sql]  view plain  copy
  1. select 学生名称=(select stuName from student where stuID=borrow.stuID),借书数量=count(*) from borrow where B_time is null group by stuID  

     

转载于:https://www.cnblogs.com/yanqb/p/9895399.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,以下是一些常见的数据库 SQL 面试题: 1. 什么是 SQLSQL(Structured Query Language)是一种用于管理关系型数据库的标准语言。它允许用户从数据库中检索、插入、删除和更新数据。 2. 什么是关系型数据库? 关系型数据库是一种使用表和行来存储和组织数据的数据库。它们使用 SQL 语句来查询和操作数据,并使用关系(例如主键和外键)来连接不同的表。 3. 什么是 SELECT 语句? SELECT 语句用于从数据库中检索数据。它可以选择特定的列、过滤数据、排序数据等等。 4. 如何选择所有列? 使用以下 SQL 语句选择所有列: ``` SELECT * FROM table_name; ``` 5. 如何选择特定的列? 使用以下 SQL 语句选择特定的列: ``` SELECT column1, column2, ... FROM table_name; ``` 6. 如何过滤数据? 使用 WHERE 子句过滤数据。以下是一个示例: ``` SELECT * FROM table_name WHERE column1 = 'value'; ``` 这将选择 column1 的值等于 'value' 的所有行。 7. 如何对数据进行排序? 使用 ORDER BY 子句对数据进行排序。以下是一个示例: ``` SELECT * FROM table_name ORDER BY column1 ASC; ``` 这将按升序对 column1 进行排序。 8. 什么是 INNER JOIN? INNER JOIN 是一种将两个表连接在一起的方法。它只选择两个表之间共有的行。 9. 如何使用 INNER JOIN? 以下是一个使用 INNER JOIN 的示例: ``` SELECT column1, column2, ... FROM table1 INNER JOIN table2 ON table1.column = table2.column; ``` 这将选择 table1 和 table2 中具有相同值的行。 10. 什么是外键? 外键是一个表中的列,它引用了另一个表中的主键。它用于在两个表之间建立关系。 以上是一些常见的数据库 SQL 面试题,希望能对您有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值