4.3建立存储过程 4.3.1
创建一个存储过程,从student表中检索出所有班级为“计算机1403”的学生的学号,姓名。 代码:
DELIMITER //
/*将MYSQL的结束符设置为//*/
CREATE PROCEDURE proc_stud() READS SQL DATA BEGIN
SELECT sno,sname,smajor FROM student
WHERE sclass LIKE '%计算机1403%' ORDER BY sno; END // DELIMITER ;
/*将结束符恢复成分号*/
执行存储过程:CALL proc_stud; 结果:
4.3.2
创建一个num_sc的存储过程,统计一个同学的课程成绩个数。 代码:
DELIMITER //
/*将MYSQL的结束符设置为//*/
CREATE PROCEDURE num_sc(IN tmp_sno char(9), OUT count_num INT) READS SQL DATA BEGIN
SELECT COUNT(*) INTO count_num FROM sc WHERE sno=tmp_sno; END // DELIMITER ;
/*将结束符恢复成分号*/
4.4建立触发器
在数据库的student表中,定义一个触发器,当一个学生被删除时,把该学生的学号和姓名添加到delstudent表中。 代码:
CREATE TABLE delstudent SELECT sno,sname FROM student WHERE 1=0;
CREATE TRIGGER trig_student
//创建student表的触发器
//创建一个空表用于接受删除后的数据
AFTER DELETE ON student FOR EACH R0W
INSERT INTO delstudent(sno,sname) values(old.sno, old.sname);
DELETE FROM student WHERE sname='李甜甜'; 生,验证触发器是否触发。
select * from delstudent; 结果:
//查看接受删除数据表
//删除一个学
触发器已经触发。
4.5查询问题及查询结果 4.5.1
查询所有学生的学号、姓名、性别和专业 代码:
select sno,sname,ssex,smajor from student; 结果:
4.5.2
计算“C01”课程的平均成绩。 代码:
SELECT AVG(degree) FROM sc WHERE cno='C01'; 结果: