diff --git "a/\350\202\226\351\243\236\351\271\217/20240929 \345\255\230\345\202\250\350\277\207\347\250\213 \347\273\223\346\236\204.md" "b/\350\202\226\351\243\236\351\271\217/20240929 \345\255\230\345\202\250\350\277\207\347\250\213 \347\273\223\346\236\204.md" index 294b1686d9165ef3dda5e12a888017b4815f3798..2ad0649a06fe1d864c286cd3cfaff64adcde941a 100644 --- "a/\350\202\226\351\243\236\351\271\217/20240929 \345\255\230\345\202\250\350\277\207\347\250\213 \347\273\223\346\236\204.md" +++ "b/\350\202\226\351\243\236\351\271\217/20240929 \345\255\230\345\202\250\350\277\207\347\250\213 \347\273\223\346\236\204.md" @@ -21,36 +21,60 @@ select 字段 case when 表达式 then 结果 end from 表名 - 薪资 > 30000 不加 最后打印几个员工增加了奖金 -DROP PROCEDURE if EXISTS pro_inc; -delimiter // -CREATE PROCEDURE pro_inc(in a DECIMAL(10,2),IN b DECIMAL(10,2)) -BEGIN -DECLARE fir_empo int; -DECLARE lst_empo int; -SELECT empno INTO fir_empo FROM emp ORDER BY empno LIMIT 1; -SELECT empno into lst_empo FROM emp ORDER BY empno DESC LIMIT 1; -WHILE fir_empoa AND sal= 10001 and sal <= 20000 group by deptno having deptno = fir_id; + + select count(deptno) into bew2 from emp where sal >= 20001 and sal <= 30000 group by deptno having deptno = fir_id; + + select count(deptno) into more3 from emp where sal > 30001 group by deptno having deptno = fir_id; + + + SELECT CONCAT('各部门平均工资为',avg_sal,'人数为',dept_num,'10000以上',less_1,'10000-20000',bew1,'20001-30000',bew2,'30001',more3); +END WHILE; +END; +CALL pro_num() ``` diff --git "a/\350\202\226\351\243\236\351\271\217/20241014\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.md" "b/\350\202\226\351\243\236\351\271\217/20241014\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.md" index db3fdf31f373ad36cab3865626f645c729ee7349..e345e03bddae9e860ec0a88be6d8ab3b18361ea2 100644 --- "a/\350\202\226\351\243\236\351\271\217/20241014\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.md" +++ "b/\350\202\226\351\243\236\351\271\217/20241014\350\247\246\345\217\221\345\231\250\344\275\234\344\270\232.md" @@ -108,5 +108,13 @@ END if; END; -- 课后作业 # 1.要求部门表的中总工资一定是由员工表产生的,是否可以实现对部门总工资的保护,不让人随便改动部门表,让它的总工资只能由员工表的数据来影响。 +CREATE TRIGGER tri_num BEFORE UPDATE ON dept FOR each ROW +BEGIN +DECLARE sum_sal DECIMAL(10,2); +SELECT sum(salary) into sum_sal FROM emp WHERE dept_id = new.dept_id; +if sum_sal <> new.total_salary THEN +SIGNAL SQLSTATE '45000' SET message_text ='无法更改'; +END if; +END; ```