以图书馆管理系统为例,介绍简单SQL语句。(单表/多表查询,插入数据,更新数据,删除数据以及建立索引)
单表查询
(1)查询作者为“XXX”的图书的数量。
SELECT COUNT(*) AS 数量
FROM `book`
WHERE `author` = 'XXX';
(2)查询出版单位为XXX出版社的图书明细。
SELECT *
FROM `book`
WHERE `publish`='XXX出版社';
(3)检索2023年11月的借阅图书的读者人数。
SELECT COUNT( DISTINCT `user_id`)
FROM `book_borrow`
WHERE YEAR(`borrow_time`)= '2023' AND MONTH(`borrow_time`)= '11';
注意:
YEAR函数,从日期中提取出年份。
MONTH函数从哪个日期中提取出月份。与此相似的还有day(),hour(),minute(),second()
插入数据
(4)图书管理系统里需要新增一本刚采购的医药方面的书籍:书名为《这是一本书》、作者为XXX、定价为1000元、出版社为XXX出版社、ISBN编号为1234567890。要把它添加到图书表book里,图书分类选择“R 医药、卫生”。
INSERT INTO`book`VALUES
('1','这是一本书','XXX','1000','1','XXX出版社','4','1000','1234567890',NOW(),NULL);
连接查询
(5)查询用户XX的借书记录,包括用户姓名、借阅图书名称、出版社、借书时间、归还时间。
SELECT u.user_name,b.book_name,b.publish,w.borrow_time,w.return_time
FROM USER u, book b, book_borrow w
WHERE w.book_id = b.id AND w.user_id = u.id AND u.user_name = 'XX';
(6)针对用户表user、图书表book、图书借阅表book_borrow建立一个用户借阅图书信息查询视图user_view,查询用户编号、登录名称、姓名、图书名称、出版社、借阅时间、归还时间。
CREATE OR REPLACE VIEW user_view AS
SELECT u.id,u.login_name,u.user_name,b.book_name,b.publish,w.borrow_time,w.return_time
FROM USER u, book b, book_borrow w
WHERE w.book_id = b.id AND w.user_id = u.id ;
建立索引
(7)按book_name字段建立图书索引。索引名为:index;
CREATE INDEX index ON `book`(`book_name`);
(8)按publish,book_name字段建立图书表复合索引。索引名为:index1 ;
CREATE INDEX index1 ON `book`(`publish`,`book_name`);
更新数据
(9)更新S用户的部门为XX部。 (可以选择嵌套查询)
UPDATE `user`
SET `dept_id`= (SELECT `id` FROM `dept` WHERE `dept_name`='XXX')
WHERE `user_name`='S';
注意:
update,select,delete均可以嵌套查询。
删除数据
(10)删除图书名称包含:“XXX”的所有图书
delete from `book` where `book_name` like '%XXX%';
模糊查询需要使用like关键字
(11)删除用户XX的全部借书记录。
DELETE FROM `book_borrow`
WHERE`user_id`=(SELECT `id` FROM `user` WHERE `user_name`='XX');