在数据库中创建读者表,表中包括:读者编号、姓名、性别、年龄、单位、联系方式,创建图书表,表中包括:图书编号、ISBN、书名、作者、出版社、售价。创建借阅表,表中包括借出时间,归还时间,读者编号,图书编号,并向这三个表中随机插入数据并查询“清华大学出版社”出版的书籍的名字和售价; 查询售价在50以上的图书的书名,作者和出版社; (5)查询年龄在60以上的读者的姓名和联系方式,并按年龄升级排列。 (6)查询男女读者的人数分别有多少; (7)查询借了“陶行知”所写全部书籍的人的姓名
时间: 2024-02-15 15:02:46 浏览: 114
好的,以下是针对您的问题的 SQL 代码:
1. 创建读者表:
```sql
CREATE TABLE readers (
reader_id INT PRIMARY KEY,
name VARCHAR(50),
gender CHAR(1),
age INT,
organization VARCHAR(100),
contact VARCHAR(50)
);
```
2. 创建图书表:
```sql
CREATE TABLE books (
book_id INT PRIMARY KEY,
isbn VARCHAR(20),
title VARCHAR(100),
author VARCHAR(50),
publisher VARCHAR(50),
price DECIMAL(10,2)
);
```
3. 创建借阅表:
```sql
CREATE TABLE borrowings (
borrowing_id INT PRIMARY KEY,
borrow_time DATETIME,
return_time DATETIME,
reader_id INT,
book_id INT,
FOREIGN KEY (reader_id) REFERENCES readers(reader_id),
FOREIGN KEY (book_id) REFERENCES books(book_id)
);
```
4. 向这三个表中随机插入数据:
```sql
-- 向读者表中插入数据
INSERT INTO readers VALUES
(1, '张三', '男', 25, 'XX大学', '135xxxxxx'),
(2, '李四', '女', 30, 'XX公司', '136xxxxxx'),
(3, '王五', '男', 28, 'XX银行', '137xxxxxx'),
(4, '赵六', '女', 35, 'XX医院', '138xxxxxx'),
(5, '周七', '男', 27, 'XX电视台', '139xxxxxx'),
(6, '钱八', '男', 65, 'XX公司', '138xxxxxx'),
(7, '孙九', '女', 72, 'XX医院', '139xxxxxx');
-- 向图书表中插入数据
INSERT INTO books VALUES
(1, '9787115534803', '深入浅出MySQL', '杨建荣', '人民邮电出版社', 59.00),
(2, '9787121319970', 'Python编程快速上手', 'Mark Lutz', '电子工业出版社', 74.00),
(3, '9787115428027', 'Java编程思想', 'Bruce Eckel', '机械工业出版社', 108.00),
(4, '9787115476080', 'Head First设计模式', 'Eric Freeman', '人民邮电出版社', 89.00),
(5, '9787121347898', 'Python核心编程', 'Wesley Chun', '电子工业出版社', 59.00),
(6, '9787115534804', '编程珠玑', 'Jon Bentley', '清华大学出版社', 68.00),
(7, '9787115476081', 'Effective Java', 'Joshua Bloch', '机械工业出版社', 98.00),
(8, '9787121347899', '算法图解', 'Aditya Bhargava', '人民邮电出版社', 42.00);
-- 向借阅表中插入数据
INSERT INTO borrowings (borrowing_id, borrow_time, return_time, reader_id, book_id) VALUES
(1, '2021-05-01 10:00:00', '2021-05-10 10:00:00', 1, 1),
(2, '2021-05-02 10:00:00', '2021-05-09 10:00:00', 2, 2),
(3, '2021-05-03 10:00:00', '2021-05-08 10:00:00', 3, 3),
(4, '2021-05-04 10:00:00', '2021-05-07 10:00:00', 4, 4),
(5, '2021-05-05 10:00:00', '2021-05-06 10:00:00', 5, 5),
(6, '2021-05-06 10:00:00', '2021-05-11 10:00:00', 1, 6),
(7, '2021-05-07 10:00:00', '2021-05-12 10:00:00', 2, 6),
(8, '2021-05-08 10:00:00', '2021-05-13 10:00:00', 3, 6),
(9, '2021-05-09 10:00:00', '2021-05-14 10:00:00', 4, 7),
(10, '2021-05-10 10:00:00', '2021-05-15 10:00:00', 5, 8);
```
5. 查询“清华大学出版社”出版的书籍的名字和售价:
```sql
SELECT title, price FROM books WHERE publisher = '清华大学出版社';
```
6. 查询售价在50以上的图书的书名,作者和出版社:
```sql
SELECT title, author, publisher FROM books WHERE price > 50;
```
7. 查询年龄在60以上的读者的姓名和联系方式,并按年龄升级排列:
```sql
SELECT name, contact FROM readers WHERE age > 60 ORDER BY age ASC;
```
8. 查询男女读者的人数分别有多少:
```sql
SELECT gender, COUNT(*) FROM readers GROUP BY gender;
```
9. 查询借了“陶行知”所写全部书籍的人的姓名:
```sql
SELECT name FROM readers WHERE reader_id IN (
SELECT reader_id FROM borrowings WHERE book_id IN (
SELECT book_id FROM books WHERE author = '陶行知'
)
);
```
以上是针对您问题的 SQL 代码,如果您有其他问题,请随时询问。
阅读全文