三个表:图书信息表、读者信息表、借阅表 图书信息(书号、书名、作者、出版日期、出版社、数量) 读者信息表(图书证号、姓名、班级) 借阅表(书号、图书证号、借出日期、应还日期、归还日期) 数据库表结构如下: sql_book(book_no, book_name, author, pub_date, pub_company, number) sql_reader(reader_no, reader_name, class) sql_borrow(book_no, reader_no, bda, rda, tda),使用sql语句查询当天借出去的图书信息,显示图书号、书名
时间: 2024-03-21 20:41:17 浏览: 78
可以使用如下的 SQL 语句来查询当天借出去的图书信息,显示图书号、书名:
```
SELECT sql_book.book_no, sql_book.book_name
FROM sql_book
INNER JOIN sql_borrow ON sql_book.book_no = sql_borrow.book_no
WHERE sql_borrow.bda = CURDATE();
```
这条 SQL 语句使用了 INNER JOIN 操作符来连接图书信息表和借阅表,然后筛选出当天借出去的图书信息。其中,CURDATE() 函数用于获取当前日期。请注意,如果当天没有借出图书,则不会返回任何结果。
相关问题
三个表:图书信息表、读者信息表、借阅表 图书信息(书号、书名、作者、出版日期、出版社、数量) 读者信息表(图书证号、姓名、班级) 借阅表(书号、图书证号、借出日期、应还日期、归还日期) 数据库表结构如下: sql_book(book_no, book_name, author, pub_date, pub_company, number) sql_reader(reader_no, reader_name, class) sql_borrow(book_no, reader_no, bda, rda, tda) 题目:查没有借过书的读者信息
可以使用以下 SQL 查询语句实现该功能:
```
SELECT sql_reader.reader_no, sql_reader.reader_name
FROM sql_reader
WHERE sql_reader.reader_no NOT IN (
SELECT DISTINCT sql_borrow.reader_no
FROM sql_borrow
);
```
解释一下每个部分的功能:
- `SELECT sql_reader.reader_no, sql_reader.reader_name`:选择读者信息表中的读者证号和读者姓名列作为查询结果的一部分。
- `FROM sql_reader`:指定从读者信息表中查询数据。
- `WHERE sql_reader.reader_no NOT IN (...)`:使用子查询的方式检索没有借过书的读者信息。子查询中使用 DISTINCT 关键字去重,确保每个读者只出现一次,并选择借阅表中的读者证号列作为查询结果的一部分。最外层查询使用 NOT IN 子句排除拥有借阅记录的读者。
执行该查询语句后,即可得到没有借过书的读者信息。
图书(书号,书名,价格,出版社)读者(卡号,姓名,年龄,所属单位)借阅(书号,卡号,借阅日期) 根据上面基本表的信息定义一个存储过程,完成下面功能:入口参数:书号 1显示图书借阅信息 2 如果没人借,删除该书记录3 如果价格5元以下,涨价至5元。
以下是基于MySQL语法的存储过程实现,实现了上述功能:
```
CREATE PROCEDURE book_management(IN book_id INT)
BEGIN
DECLARE borrow_count INT DEFAULT 0;
DECLARE book_price FLOAT DEFAULT 0;
-- 查询借阅次数
SELECT COUNT(*) INTO borrow_count FROM 借阅 WHERE 书号 = book_id;
-- 查询价格
SELECT 价格 INTO book_price FROM 图书 WHERE 书号 = book_id;
IF borrow_count > 0 THEN
-- 显示借阅信息
SELECT * FROM 借阅 WHERE 书号 = book_id;
ELSEIF book_price < 5 THEN
-- 涨价至5元
UPDATE 图书 SET 价格 = 5 WHERE 书号 = book_id;
SELECT CONCAT('书号为', book_id, '的图书价格已经涨至5元') AS message;
ELSE
-- 删除该书记录
DELETE FROM 图书 WHERE 书号 = book_id;
SELECT CONCAT('书号为', book_id, '的图书记录已经删除') AS message;
END IF;
END;
```
可以通过调用该存储过程来实现上述功能:
```
CALL book_management(123); -- 假设需要处理书号为123的图书
```
其中,存储过程中的三个查询语句可以根据具体情况进行修改,比如增加查询条件、增加返回字段等。
阅读全文