1.根据传入的参数score,判定当前分数对应的分数等级,并返回。
create procedure p3(in score int, out result varchar(50))
begin
if score >= 85 then
set result:='优秀';
elseif score>=60 then
set result:='及格';
else
set result:='不及格';
end if;
end;
调用:
call p3(98,@result);
select @result;
存储过程有三种参数,分别为IN,OUT和INOUT,INOUT即可为输入参数,也可作为输出参数。
2.将传入的200分制的分数,进行换算,换算成百分制,然后返回
create procedure p4(inout score double)
begin
set score:=score*0.5;
end;
调用:
set @score=196;
call p4(@score);
select @score;
触发器:
1.通过触发器记录tb_user表的数据变更日志,将变更日志插入到日志表user_logs中,包含增加,修改,删除;
-- 插入数据触发器
create trigger tb_user_insert_trigger
after insert on tb_user for each now
begin
insert into user_logs(~) values (~);
end;
查看触发器:
show trigger;
(1)利用触发器实现插入请假信息时,审核人编号自动填入请假人所在部门的部门经理编号。触发器名称为:insert_ask_leave。
DELIMITER $$
CREATE
TRIGGER `staff`.`insert_ask_leave` BEFORE INSERT
ON `staff`.`ask_leave`
FOR EACH ROW BEGIN
DECLARE manangeID1 INT;
SELECT `manageId` INTO manangeID1 FROM `dept` WHERE `id`=(
SELECT `deptId` FROM `employee` WHERE `id`=new.`empId`);
SET new.`auditId`=manangeID1;
END$$
DELIMITER
(2)、创建触发器,当插入或修改工资表payroll时,应发工资自动为“基本工资+奖金-缺勤扣钱
插入:
DELIMITER $$
CREATE
TRIGGER `staff`.`beforeinsert_payloyee` BEFORE INSERT
ON `staff`.`payroll`
FOR EACH ROW BEGIN
set new.`actualSalary`=new.`baseSalary`+new.`bonus`-new.`deductMoney`;
END$$
DELIMITER ;
DELIMITER $$
修改:
CREATE
TRIGGER `staff`.`before_update_payloyee` BEFORE UPDATE
ON `staff`.`payroll`
FOR EACH ROW BEGIN
SET new.`actualSalary`=new.`baseSalary`+new.`bonus`-new.`deductMoney`;
END$$
DELIMITER ;
(3)编写存储过程实现插入员工表:参数为:员工编号id,姓名userName,出生日期birthDate,身份证号idCard,登录名称loginName,登录 密码password,手机号mobile,电子邮件email,部门编号deptId,员工级别level,员工头像avatar,备注remark。 存储过程名称为:insert_employee。
DELIMITER $$
CREATE
PROCEDURE `staff`.`insert_employee`( IN id INT, IN userName VARCHAR(255),
IN birthDate DATE,
IN idCard VARCHAR(255),
IN loginName VARCHAR(255),
IN PASSWORD VARCHAR(255),
IN mobile VARCHAR(255),
IN email VARCHAR(255),
IN deptId INT,
LEVEL INT,
IN avatar BLOB,IN remark TEXT)
BEGIN
INSERT INTO `employee` VALUES(NULL,userName,birthDate,idCard,
loginName,PASSWORD,mobile,email,deptId,LEVEL,avatar,remark);
END$$
DELIMITER ;
1.下列说法错误的是____B__。
A. SELECT可以运算字符表达式
B. SQL 程序用于触发器和存储过程中
C. 游标只能顺序移动
D. SELECT中的输出列可以是由字段组成的表达式
2.查询出EMP表中1982年及以后入职的员工信息(注:字段hiredate为入职日期,数据类型为DATE型)
A. select * from emp where hiredate>='19820101';
B. select * from emp where to_char(hiredate,'YYYYMMDD')>='19820101';
C. select * from emp where to_date(hiredate,'YYYYMMDD')>='19820101';
D. select * from emp where hiredate>=to_char('19820101','YYYYMMDD');
(A)
3.MySQL数据库四种特性,不包括( c )。 A. 隔离性 B. 一致性 C. 事务性 D. 原子性
4.UPDATE,SELECT,DELETE语句均可以用子查询。