(5)向每张表中添加5条数据;(10分) (6)检索“科学出版社”出版的图书信息,并按图书价格降序查询;(10分) (7)查询分析每个系男,女老师人数各多少;(5分) (8)检索出版社出版的图书价格高于该出版社平均价格的图书;(5分) (9)创建分布式视图查询“科学出版社”和“人民邮电出版社”出版的图书信息;(5分)
时间: 2024-01-12 07:04:14 浏览: 94
数据表的创建、修改和查询
(5)向每张表中添加5条数据
插入图书表数据:
```sql
INSERT INTO book (b_no, b_type, b_name, b_author, b_publish, b_price)
VALUES (1, 'T001', 'Java编程思想', 'Bruce Eckel', '机械工业出版社', 89.00);
INSERT INTO book (b_no, b_type, b_name, b_author, b_publish, b_price)
VALUES (2, 'T001', 'Java核心技术', 'Cay S. Horstmann', '机械工业出版社', 99.00);
INSERT INTO book (b_no, b_type, b_name, b_author, b_publish, b_price)
VALUES (3, 'T002', 'Python数据科学手册', 'Jake VanderPlas', '人民邮电出版社', 98.00);
INSERT INTO book (b_no, b_type, b_name, b_author, b_publish, b_price)
VALUES (4, 'T002', 'Python基础教程', 'Magnus Lie Hetland', '机械工业出版社', 69.00);
INSERT INTO book (b_no, b_type, b_name, b_author, b_publish, b_price)
VALUES (5, 'T003', '机器学习实战', 'Peter Harrington', '人民邮电出版社', 78.00);
```
插入读者表数据:
```sql
INSERT INTO reader (r_no, r_unit, r_name, r_sex, r_pro, r_address)
VALUES (10001, '计算机科学与技术系', '张三', '男', '副教授', '宿舍楼A');
INSERT INTO reader (r_no, r_unit, r_name, r_sex, r_pro, r_address)
VALUES (10002, '计算机科学与技术系', '李四', '女', '讲师', '宿舍楼B');
INSERT INTO reader (r_no, r_unit, r_name, r_sex, r_pro, r_address)
VALUES (10003, '电子工程系', '王五', '男', '教授', '宿舍楼C');
INSERT INTO reader (r_no, r_unit, r_name, r_sex, r_pro, r_address)
VALUES (10004, '电子工程系', '赵六', '女', '讲师', '宿舍楼D');
INSERT INTO reader (r_no, r_unit, r_name, r_sex, r_pro, r_address)
VALUES (10005, '自动化系', '钱七', '男', '教授', '宿舍楼E');
```
插入借阅表数据:
```sql
INSERT INTO borrow (r_no, b_no, b_time)
VALUES (10001, 1, TO_DATE('2022-01-01', 'yyyy-mm-dd'));
INSERT INTO borrow (r_no, b_no, b_time)
VALUES (10002, 2, TO_DATE('2022-01-02', 'yyyy-mm-dd'));
INSERT INTO borrow (r_no, b_no, b_time)
VALUES (10003, 3, TO_DATE('2022-01-03', 'yyyy-mm-dd'));
INSERT INTO borrow (r_no, b_no, b_time)
VALUES (10004, 4, TO_DATE('2022-01-04', 'yyyy-mm-dd'));
INSERT INTO borrow (r_no, b_no, b_time)
VALUES (10005, 5, TO_DATE('2022-01-05', 'yyyy-mm-dd'));
```
(6)检索“科学出版社”出版的图书信息,并按图书价格降序查询
```sql
SELECT * FROM book WHERE b_publish = '机械工业出版社' ORDER BY b_price DESC;
```
(7)查询分析每个系男,女老师人数各多少
```sql
SELECT r_unit, r_sex, COUNT(*) AS cnt
FROM reader
WHERE r_pro LIKE '%教授%'
GROUP BY r_unit, r_sex;
```
(8)检索出版社出版的图书价格高于该出版社平均价格的图书
```sql
SELECT b_no, b_type, b_name, b_author, b_publish, b_price
FROM book
WHERE b_price > (
SELECT AVG(b_price) FROM book WHERE b_publish = '机械工业出版社'
) AND b_publish = '机械工业出版社';
```
(9)创建分布式视图查询“科学出版社”和“人民邮电出版社”出版的图书信息
首先在每个数据库中创建一个本地视图:
```sql
-- 在数据库1中创建本地视图
CREATE VIEW book_view1 AS
SELECT * FROM book WHERE b_publish = '机械工业出版社';
-- 在数据库2中创建本地视图
CREATE VIEW book_view2 AS
SELECT * FROM book WHERE b_publish = '人民邮电出版社';
```
然后在两个数据库之间创建分布式视图:
```sql
-- 在数据库1中创建分布式视图,查询数据库1和数据库2中的图书信息
CREATE DATABASE LINK db2_link CONNECT TO db2_user IDENTIFIED BY db2_password USING 'db2';
CREATE VIEW book_distributed_view AS
SELECT * FROM book_view1@db1 UNION ALL SELECT * FROM book_view2@db2_link;
```
以上代码中,`db1`是指当前数据库,`db2`是指另一个数据库,`db2_user`和`db2_password`是连接到`db2`数据库的用户名和密码。`book_view1`和`book_view2`是在两个数据库中创建的本地视图。`book_distributed_view`是分布式视图,查询了两个数据库中的图书信息。
阅读全文