实验名称:实验五:存储过程与视图

实验目的:

 1.掌握存储过程的创建和执行;

 2.掌握存储过程中输入输出参数的使用;

 3.掌握视图的定义、维护、使用;

实验内容:

1.存储过程

(1)在“网上书店”(或者“WSSD”)数据库中创建一个名为proc_1的存储过程,实现查询所有会员信息的功能。

(2)在“网上书店”(或者“WSSD”)数据库中创建一个名为proc_2的存储过程,要求实现如下功能:根据会员昵称查询会员的积分情况,并调用存储过程查询“平平人生”和“感动心灵”的积分。

(3)在“网上书店”(或者“WSSD”)数据库中创建一个名为proc_3的存储过程,要求实现如下功能:根据会员昵称查询会员的订购信息,如果该会员没有订购任何图书,则输出“某某会员没有订购图书”的信息,否则输出订购图书的相关信息,调用存储过程显示,会员“四十不惑”,订购图书的情况。

2、视图

(1)定义基于图书表的视图(包含图书编号、图书名称、作者、价格、出版社、图书、类别)。

(2)查询图书表视图,输出图书的名称和价格,并把查询结果按价格降序排列。

(3)查询图书表视图,输出价格最高的三种图书的名称和价格。

 

实验名称:实验五:存储过程与视图

实验代码:

1、(1)

mysql> use wssd;

Database changed

mysql> delimiter //

mysql> create procedure proc_1()

    -> begin

    -> select * from user;

    -> end;//

Query OK, 0 rows affected (0.03 sec)

mysql> delimiter ;

mysql> call proc_1();

(2)

mysql> create procedure proc_2(in name varchar(5))

    -> begin

    -> select uname,score from user where uname=name;

    -> end;//

Query OK, 0 rows affected (0.01 sec)

mysql> delimiter ;

mysql> call proc_2('平平人生');

+--------------+-------+

| uname        | score |

+--------------+-------+

| 平平人生     |   300 |

+--------------+-------+

1 row in set (0.01 sec)

Query OK, 0 rows affected (0.02 sec)

mysql> call proc_2('感动心灵');

+--------------+-------+

| uname        | score |

+--------------+-------+

| 感动心灵     |   500 |

+--------------+-------+

1 row in set (0.00 sec)

Query OK, 0 rows affected (0.00 sec)

mysql> create table u_b_o

    -> (uid int,

    -> uname varchar(5),

    -> email varchar(20),

    -> tnum varchar(20),

    -> score int,

    -> bid int,

    -> uid_ int,

    -> ordernum int,

    -> orderdate datetime,

    -> deliverydate datetime);

Query OK, 0 rows affected (0.03 sec)

mysql> insert into u_b_o

    -> select * from user as u left join b_order as b1 on u.uid=b1.uid;

Query OK, 9 rows affected (0.00 sec)

Records: 9  Duplicates: 0  Warnings: 0

(3)

mysql> delimiter //

mysql> create procedure proc_3(in name varchar(5))

    -> begin

    -> select u2.bid,u2.uid,ordernum,orderdate,deliverydate from book as b2 left join u_b_o as u2 on b2.bid=u2.bid where uname=name;

    -> if ordernum is null then select '该会员没有订购该图书';

    -> else select * from book;

    -> end if;

    -> end;//

Query OK, 0 rows affected (0.03 sec)

mysql> call proc_3('四十不惑');

2、(1)

mysql> create view basic_book as select * from book;

Query OK, 0 rows affected (0.02 sec)

mysql> select * from basic_book;

+-----+-----------------------+-----------+-------+-----------------------+----------+------+

| bid | bname                 | author    | price | publisher             | discount | cid  |

+-----+-----

Logo

快速构建 Web 应用程序

更多推荐