当前位置:文档之家› MySQL实验报告

MySQL实验报告

四、实验内容及程序代码
数据表的表结构如表所示,sch表的数据如表。

表 sch 表结构
字段名数据类型主









id INT(10)是否是是否
name VARCHAR(5
0)
否否是否否
clas s
VARCHAR(5
0)
否否是否否
表 sch 表的内容
id name class
1李明C1
2小梅C2
1)建表sch并插入数据。

2)创建一个存储函数,用来统计表sch中的记录数。

delimiter $$
create PROCEDURE count_sch5(out size int)
BEGIN
select count(*) into size from sch;
END
$$
delimiter;
3)创建一个存储过程,通过调用存储函数的方法来获取表sch中的记录数和sch表中
id的和。

delimiter $$
create PROCEDURE count_sch2(out s_a int,out s_id int)
BEGIN
select count(*) into s_a from sch;
select sum(id) as s_id from sch;
END
$$
delimiter;
2.创建一存储过程insert_student_condition_user,利用自定义错误触发条件定义,当插入学生的性别不是“男”或“女”时结束存储过程,并提示“学生性别不正确”。

表 student表结构
字段名数据类型主









sno Char(10)是否是是否
sname VARCHAR(2
0)
否否是否否
ssex CHAR(2)否否是否否
Sage smallint否否是否否
Sdept VARCHAR(3
0)
否否是否否
enter
date
datetime否否是否否
delimiter $$
create PROCEDURE insert_student_condition_user(in sno int,in sname VARCHAR(20),
in ssex varchar(2),in sage int,in sdept varchar(30))
BEGIN
DECLARE continue handler for sqlstate '42S02' select '学生性别不正确';
if ssex='男' or ssex='女' THEN
i nsert into student values(sno,sname,ssex,sage,sdept);
end if;
end
$$ delimiter;
call insert_student_condition_user(1,'pqw','他',20,'C1');
call insert_student_condition_user(4,'pqw','1',20,'C1');
drop PROCEDURE insert_student_condition_user;
3.创建一存储过程update_student_borthyear,在学生表(表结构如表)中添加字段”borthyear”(出生年份),在存储过程中利用游标,通过学生年龄计算出出生年份并修改表中对应字段。

create procedure update_student_borthyear(in s_no char(10))
BEGIN
d eclar
e s_age char(10);
d eclar
e state char(20);
d eclar
e cur cursor for select sage from student;
d eclar
e exit handler for 1329 set state='error';
o pen cur;
REPEAT
f etch cur into s_age;
u pdate student set borthyear=2018-s_age where sno=s_no;
u ntil state='error'
end repeat;
close cur;
END
call update_student_borthyear(201818);
mysql语句对于大小写不敏感,所以在写的时候要注意区分,整整找了半个小时的错误。

相关主题