SQL练习:图书管理与查询

需积分: 33 7 下载量 183 浏览量 更新于2024-09-07 收藏 37KB DOCX 举报
"这些练习题主要涉及SQL语言的基础操作,包括创建表、更新数据、查询数据、连接查询、创建视图以及权限管理等。" 在SQL语言中,创建表是数据库操作的基础,例如创建图书表的SQL语句: ```sql CREATE TABLE book ( Book_id CHAR(10) PRIMARY KEY, Name VARCHAR(30) NOT NULL, Author VARCHAR(20), Publish VARCHAR(30), Price DECIMAL(6,2) ); ``` 这个语句创建了一个名为`book`的表,包含了图书ID(主键)、书名(非空)、作者、出版社和价格字段。 更新数据是数据库维护的重要环节,如将编号为“NEU1105101”的图书的定价改为50元,可以使用: ```sql UPDATE book SET price = 50 WHERE book_id = 'NEU1105101'; ``` 查询操作则涵盖了多种类型,例如查询所有男性读者的姓名和出生日期: ```sql SELECT name, birthdate FROM reader WHERE sex = '男'; ``` 查询不同出版社并按升序排列: ```sql SELECT publish FROM book ORDER BY publish ASC; ``` 多表连接查询在处理复杂数据关系时十分常见,比如查询借阅过20到40元图书的读者姓名: ```sql SELECT Name FROM borrow JOIN book ON borrow.book_id = book.book_id JOIN reader ON borrow.reader_id = reader.reader_id WHERE price BETWEEN 20 AND 40; ``` 统计每个读者的借阅数量: ```sql SELECT COUNT(book_id), reader_id FROM borrow JOIN book ON borrow.book_id = book.book_id JOIN reader ON borrow.reader_id = reader.reader_id GROUP BY reader_id; ``` 权限管理用于控制用户对数据的访问,给用户user001分配对图书表的更新权限: ```sql GRANT UPDATE ON book TO user001; ``` 创建视图可以简化查询,例如创建一个名为view001的视图,展示出版社信息: ```sql CREATE VIEW view001 AS SELECT publish, COUNT(book_id), MAX(price), MIN(price) FROM book GROUP BY publish; ``` 最后,查询出版图书超过100本的出版社及其数量: ```sql SELECT COUNT(book_id), publish FROM book GROUP BY publish HAVING COUNT(book_id) > 100; ``` 这里的`HAVING`子句用于过滤分组后的结果,因为它不能与聚合函数一起在`WHERE`子句中使用。