123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899 |
- #第十七章、练习题
- USE dbtest17;
- #练习1
- #0、准备工作
- CREATE TABLE emps
- AS
- SELECT employee_id,last_name,salary
- FROM atguigudb.employees;
- SELECT * FROM emps;
- #1、复制一张emps表的空表emps_back,只有表结构,不包含任何数据
- CREATE TABLE emps_back
- AS
- SELECT * FROM emps
- WHERE FALSE;
- #老师讲的
- CREATE TABLE emps_back
- AS
- SELECT * FROM emps
- WHERE 1 = 2;
- #2、查询emps_back表中的数据
- SELECT * FROM emps_back;
- #3、创建触发器emps_insert_trigger,每当向emps表中添加一条记录时,同步将这条记录添加到emps_back表中
- DELIMITER //
- CREATE TRIGGER emps_insert_trigger
- AFTER INSERT ON emps
- FOR EACH ROW
- BEGIN
- #将新添加到emps表中的记录添加到emps_back表中
- INSERT INTO emps_back(employee_id,last_name,salary)
- VALUES(NEW.employee_id,NEW.last_name,NEW.salary);
- END //
- DELIMITER ;
- SHOW TRIGGERS;
- #4、验证触发器是否起作用
- INSERT INTO emps(employee_id,last_name,salary)
- VALUES(300,'Tom',3400);
- SELECT * FROM emps;
- SELECT * FROM emps_back;
- #练习2
- #0、准备工作:使用练习1中的emps表
- #1、复制一张emps表的空表emps_back1,只有表结构,不包含任何数据
- CREATE TABLE emps_back1
- AS
- SELECT * FROM emps
- WHERE 1 = 2;
- #2、查询emps_back1表中的数据
- SELECT * FROM emps_back1;
- #3、创建触发器emps_del_trigger,每当向emps表中删除一条记录时,同步将删除的这条记录添加到emps_back1表中
- DELIMITER //
- CREATE TRIGGER emps_del_trigger
- BEFORE DELETE ON emps
- FOR EACH ROW
- BEGIN
- #将emps表中删除的记录,添加到emps_back1表中
- INSERT INTO emps_back1(employee_id,last_name,salary)
- VALUES(OLD.employee_id,OLD.last_name,OLD.salary);
- END //
- DELIMITER ;
- #4、验证触发器是否起作用
- DELETE FROM emps
- WHERE employee_id = 101;
- SELECT * FROM emps;
- SELECT * FROM emps_back1;
- #补充,如果要把emps表的数据全部删除,并把数据全部添加到emps_back1表中,只需要将WHERE语句去掉就可以了。
|