Rumah > Artikel > pangkalan data > Cara menggunakan gelung prosedur tersimpan MySql
Mari kita ambil senario mudah Pertama, kita mungkin mempunyai situasi di mana jadual markah peperiksaan (t_achievement
) mempunyai sekumpulan skrip SQL untuk diproses dan perlu bergantung pada jadual pelajar yang lain. ( t_student
) Data meringkaskan markah ujian beberapa pelajar dan merekodkannya dalam jadual ringkasan skor (t_achievement_report
).
Salah satu cara ialah mendapatkan data jadual pelajar untuk diringkaskan melalui keutamaan kod, dan kemudian pindahkan data maklumat pelajar ke ringkasan gred satu persatu mengikut kepada proses ringkasan gred Kod perniagaan diproses.
Cara lain juga turut menjadi tema kami hari ini, dan itu adalah melakukannya melalui prosedur tersimpan.
Buat penyataan jadual:
-- 学生信息表 DROP TABLE IF EXISTS t_student; CREATE TABLE `t_student` ( `id` BIGINT(12) NOT NULL AUTO_INCREMENT COMMENT '主键', `code` VARCHAR(10) NOT NULL COMMENT '学号', `name` VARCHAR(20) NOT NULL COMMENT '姓名', `age` INT(2) NOT NULL COMMENT '年龄', `gender` CHAR(1) NOT NULL COMMENT '性别(M:男,F:女)', PRIMARY KEY (`id`), UNIQUE KEY UK_STUDENT (`code`) ) CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- 学生成绩表 DROP TABLE IF EXISTS t_achievement; CREATE TABLE `t_achievement` ( `id` BIGINT(12) NOT NULL AUTO_INCREMENT COMMENT '主键', `year` INT(4) NOT NULL COMMENT '学年', `subject` CHAR(2) NOT NULL COMMENT '科目(01:语文,02:数学,03:英语)', `score` INT(3) NOT NULL COMMENT '得分', `student_id` BIGINT(12) NOT NULL COMMENT '所属学生id', PRIMARY KEY (`id`) ) CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
-- 成绩汇总表 DROP TABLE IF EXISTS t_achievement_report; CREATE TABLE `t_achievement_report` ( `id` BIGINT(12) NOT NULL AUTO_INCREMENT COMMENT '主键', `student_id` BIGINT(12) NOT NULL COMMENT '学生id', `year` INT(4) NOT NULL COMMENT '学年', `total_score` INT(4) NOT NULL COMMENT '总分', `avg_score` DECIMAL(4,2) NOT NULL COMMENT '平均分', PRIMARY KEY (`id`) ) CHARSET=utf8mb4 COLLATE=utf8mb4_general_ci;
Memulakan data:
rreee 🎜>Prosedur tersimpan:
Di sini kami mengambil senario di atas sebagai contoh dan menggunakan prosedur tersimpan gelung ke Memproses data. Tulis prosedur tersimpan untuk meringkaskan markah setiap pelajar dalam data di atas.INSERT INTO t_student(id, CODE, NAME, age, gender) VALUES (1, '2022010101', '小张', 18, 'M'), (2, '2022010102', '小李', 18, 'F'), (3, '2022010103', '小明', 18, 'M'); INSERT INTO t_achievement(YEAR, SUBJECT, score, student_id) VALUES (2022, '01', 80, 1), (2022, '02', 85, 1), (2022, '03', 90, 1), (2022, '01', 60, 2), (2022, '02', 90, 2), (2022, '03', 98, 2), (2022, '01', 75, 3), (2022, '02', 100, 3), (2022, '03', 85, 3);rrree
Atas ialah kandungan terperinci Cara menggunakan gelung prosedur tersimpan MySql. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!