一、學習目標
- 掌握如何創(chuàng)建存儲過程
- 掌握如何創(chuàng)建存儲函數(shù)
- 熟悉變量的使用方法
- 熟悉如何定義條件和處理程序
- 了解光標的使用方法
- 掌握流程控制的使用
- 掌握如何調(diào)用存儲過程和函數(shù)
- 熟悉如何查看存儲過程和函數(shù)
- 掌握修改存儲過程和函數(shù)的方法
- 熟悉如何刪除存儲過程和函數(shù)
- 掌握創(chuàng)建存儲過程和函數(shù)的方法和技巧
- 了解視圖的含義和作用
- 掌握創(chuàng)建視圖的方法
- 熟悉如何查看視圖
- 掌握修改視圖的方法
- 掌握更新視圖的方法
- 掌握刪除視圖的方法
- 掌握視圖應用的方法和技巧
二、實驗內(nèi)容
- 通過實例掌握存儲過程和函數(shù)的創(chuàng)建和使用,步驟如下:
①創(chuàng)建一個名稱為sch的數(shù)據(jù)表,表結(jié)構(gòu)如下所示,將下面sch表內(nèi)容中的數(shù)據(jù)插入到sch表中
sch表結(jié)構(gòu)
字段名 |
數(shù)據(jù)類型 |
主鍵 |
外鍵 |
非空 |
唯一 |
自增 |
id |
INT(11) |
是 |
否 |
是 |
是 |
否 |
name |
VARCHAR(50) |
否 |
否 |
是 |
否 |
否 |
glass |
VARCHAR(50) |
否 |
否 |
是 |
否 |
否 |
sch表內(nèi)容
id |
name |
glass |
1 |
xiaoming |
glass1 |
2 |
xiaojun |
glass2 |
②創(chuàng)建一個存儲函數(shù),用來統(tǒng)計表sch中的記錄數(shù)
③創(chuàng)建一個存儲過程,通過調(diào)用存儲函數(shù)的方法來獲取表sch中的記錄數(shù)和sch表中id的和
- 掌握視圖的創(chuàng)建、查詢、更新和刪除操作。
假如HenanHebei的3個學生參加Tsinghua University、Peking University的自學考試,現(xiàn)在需要用數(shù)據(jù)對其考試的結(jié)果進行查詢和管理,Tsinghua University的分數(shù)線為40,Peking University的分數(shù)線為41。學生表包含了學生的學號、姓名、家庭住址和電話號碼;報名表包含學號、姓名、所在學校和報名的學校,表結(jié)構(gòu)以及表中的內(nèi)容分別如下列各表所示。
stu表結(jié)構(gòu)
字段名 |
數(shù)據(jù)類型 |
主鍵 |
外鍵 |
非空 |
唯一 |
自增 |
s_id |
INT |
是 |
否 |
是 |
是 |
否 |
s_name |
VARCHAR(20) |
否 |
否 |
是 |
否 |
否 |
addr |
VARCHAR(50) |
否 |
否 |
是 |
否 |
否 |
tel |
VARCHAR(50) |
否 |
否 |
是 |
否 |
否 |
sign表結(jié)構(gòu)
字段名 |
數(shù)據(jù)類型 |
主鍵 |
外鍵 |
非空 |
唯一 |
自增 |
s_id |
INT |
是 |
否 |
是 |
是 |
否 |
s_name |
VARCHAR(20) |
否 |
否 |
是 |
否 |
否 |
s_sch |
VARCHAR(50) |
否 |
否 |
是 |
否 |
否 |
s_sign_sch |
VARCHAR(50) |
否 |
否 |
是 |
否 |
否 |
stu_mark表結(jié)構(gòu)
字段名 |
數(shù)據(jù)類型 |
主鍵 |
外鍵 |
非空 |
唯一 |
自增 |
s_id |
INT |
是 |
否 |
是 |
是 |
否 |
s_name |
VARCHAR(20) |
否 |
否 |
是 |
否 |
否 |
mark |
INT |
否 |
否 |
是 |
否 |
否 |
stu表內(nèi)容
s_id |
s_name |
addr |
tel |
1 |
XiaoWang |
Henan |
0371-12345678 |
2 |
XiaoLi |
Hebei |
1336312XXXX |
3 |
XiaoTian |
Henan |
0371-12345670 |
sign表內(nèi)容
s_id |
s_name |
s_sch |
s_sign_sch |
1 |
XiaoWang |
Middle School1 |
Peking University |
2 |
XiaoLi |
Middle School2 |
Tsinghua University |
3 |
XiaoTian |
Middle School3 |
Tsinghua University |
stu_mark表內(nèi)容
s_id |
s_name |
mark |
1 |
XiaoWang |
80 |
2 |
XiaoLi |
71 |
3 |
XiaoTian |
70 |
步驟如下:
①創(chuàng)建學生表stu,插入3條記錄
②創(chuàng)建報名表sign,插入3條記錄
③創(chuàng)建成績表stu_mark,插入3條記錄
④創(chuàng)建考上Peking University的學生的視圖
⑤創(chuàng)建考上Tsinghua University的學生的視圖
⑥XiaoTian的成績在錄入的時候錄入錯誤,多錄了50分,對其錄入成績進行更正
⑦查看更新過后視圖和表的情況
⑧查看視圖的創(chuàng)建信息
⑨刪除創(chuàng)建的視圖
1.1
create table sch(id int(11) primary key not null unique,name varchar(50) not null,glass varchar(50) not null);
?1.2
insert into sch (id,name,glass)values(1,'xiaoming','glass1'),(2,'xiaojun','glass2');
?1.3
create function count_sch()
returns int reads sql data
return (select count(*) from sch);
?1.4
delimiter
create procedure add_id(out count int)
begin declare itmp int;
declare cur_id cursor for select id from sch;
declare exit handler for not found close cur_id;
select count_sch() into count;
set @sum=0;
open cur_id;
repeat
fetch cur_id into itmp;
if itmp < 10
then set @sum = @sum + itmp;
end if;
until 0 end repeat;
close cur_id;
end //
delimiter ;
call add_id(@a);
?2.1
create table stu(s_id int primary key not null unique,s_name varchar(20) not null,addr varchar(50) not null,tel varchar(50) not null);
?2.2
insert into stu (s_id,s_name,addr,tel)values
(1,'XiaoWang','Henan','0371-12345678'),
(2,'XiaoLi','Hebei','1336312xxxx'),
(3,'XiaoTian','Henan','0371-12345670');
?
?2.3
create table sign(s_id int primary key not null unique,s_name varchar(20) not null,s_sch varchar(50) not null,s_sign_sch varchar(50) not null);
2.4?
insert into sign (s_id,s_name,s_sch,s_sign_sch)values
(1,'XiaoWang','Middle School1','Peking University'),
(2,'XiaoLi','Middle School2','Tsinghua University'),
(3,'XiaoTian','Middle School3','Tsinghua University');
?2.5
create table stu_mark(s_id int primary key not null unique,s_name varchar(20) not null,mark int not null);
?
?2.6
insert into stu_mark (s_id,s_name,mark)values
(1,'XiaoWang',80),
(2,'XiaoLi',71),
(3,'XiaoTian',70);
?
?2.7
create view beida(id,name,addr,tel,s_sch,mark,sign_sch) as
select stu_mark.s_id,stu_mark.s_name,stu.addr,stu.tel,sign.s_sch,stu_mark.mark,sign.s_sign_sch
from stu_mark,sign,stu
where stu_mark.s_id=sign.s_id and stu.s_id=stu_mark.s_id
and sign.s_sign_sch='Peking University';
?2.8
create view qinghua(id,name,addr,tel,s_sch,mark,sign_sch) as
select stu_mark.s_id,stu_mark.s_name,stu.addr,stu.tel,sign.s_sch,stu_mark.mark,sign.s_sign_sch
from stu_mark,sign,stu
where stu_mark.s_id=sign.s_id and stu.s_id=stu_mark.s_id
and sign.s_sign_sch='Tsinghua University';
?
?2.9
update stu_mark set mark=mark-50 where s_name='XiaoTian';
?2.10
show create view qinghua;
show create view beida;
?
2.11?文章來源:http://www.zghlxwxcb.cn/news/detail-446015.html
drop view beida;
drop view qinghua;
?文章來源地址http://www.zghlxwxcb.cn/news/detail-446015.html
到了這里,關(guān)于MySQL:存儲過程與函數(shù)、視圖的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!