MySQL 基础教程[5]

MySQL 基础教程[5]

  • 问题1
  • 问题1代码
  • 问题2
  • 问题2代码

  • 本系列MySQL 基础教程通过“问题-代码”的方式介绍各类方法,每篇设置2个MySQL综合问题,并给出解决方案。

问题1

现有一个图书借阅 管理系统的数据库db_book, 其包含一个记录图书借阅信息的借阅表tb_book, 该表包含的字段有 借阅号 (bno) 、图书名 (bname)、图书类型(btype)、出版社(publisher)、借出日期 (1date)、图书价格 (price) 和图书简介 (desc1) 。请按要求使用 SQL语句完成下列操作。

  1. 将借阅表中图书名“MySQL程序设计”的价格上调至 42 元。
  2. 在数据库dd_book中创建一个视图v_book, 要求该视图显示借阅表中出版社为“高等教育出版社”的全部图书借阅 信息。
    3)查询图书类型为“计算机”的图书名称、出版社和图书价格。
  3. 将借阅表中的图书简介(desc1) 字段删除, 以简化该表。
  4. 在当前系统中新建一个名为 client的用户, 主机名为localhost并为其授予借阅表中借阅号(bno)字段和图书名 (bname) 字段的select权限。

问题1代码

#【1】
update db_book.tb_book set price=42 where bname="MySQL程序设计";
#【2】
create view v_book as select bno,bname,btype,publisher,ldate,price,descl feom tb_book where publisher="高等教育出版社";
#【3】
select bname, publisher, price from tb_book where btype="计算机";
#【4】
alter table tb_book drop column desc1;
#【5】
create user 'client'@'localhost';
grant select(bno, bname) on tb_book to  'client'@'localhost'  with grant option;

问题2

  1. 请创建一个名为tri_type的触发器, 在插入新的借阅记录时, 如果借出日期为空, 就把它设置为当前日期。

  2. 请创建一个名为sp_counter的存储过程, 用于计算借阅表tb_book的图书借阅记录数, 并返回该记录数。

问题2代码

#【1】
DELIMITER $$
CREATE TRIGGER tri_date BEFORE insert ON tb_book FOR EACH ROW
BEGIN
   IF(ISNULL(NEW.ldate)) THEN
   set NEW.ldate=curdate();
   END IF;
END $$
DELIMITER ;


#【2】

DELIMITER $$
CREATE PROCEDURE sp_counter(out rows INT)
BEGIN
  DECLARE bid INT;
  DECLARE FOUND BOOLEAN DEFAULT TRUE;
  DECLARE cur_bid CURSOR FOR 
    SELECT bno FROM tb_book;
  DECLARE CONTINUE HANDLER FOR NOT FOUND
    SET FOUND=FALSE;
  SET rows =0 ;
  OPEN cur_bid;
  FETCH cur_bid INTO bid;
  WHILE FOUND DO
    SET rows =rows +1;
    fetch cur_bid INTO bid;
  END WHILE;
  CLOSE cur_bid;
  END $$
DELIMITER ;

你可能感兴趣的:(MySQL,mysql,数据库,sql)