练习SQL利器,牛客网SQL实战题库,41~48题
2019-03-28 本文已影响1人
今天有觉悟1
41.构造一个触发器audit_log
![](https://img.haomeiwen.com/i13295703/f1fd0a7e433b3a82.jpg)
CREATE TRIGGER audit_log AFTER INSERT
ON employees_test FOR EACH ROW
BEGIN
INSERT INTO audit VALUES(NEW.ID,NEW.NAME);
END;
42.删除emp_no重复的记录,只保留最小的id对应的记录
![](https://img.haomeiwen.com/i13295703/11c238bda6ecd132.jpg)
DELETE FROM titles_test
WHERE id NOT IN (SELECT MIN(id) FROM titles_test)
43.将所有to_date为9999-01-01的全部更新为NULL
![](https://img.haomeiwen.com/i13295703/7c1bbfe46fdb6a89.jpg)
UPDATE titles_test
SET to_date=NULL,from_date='2001-01-01'
WHERE to_date='9999-01-01'
44.将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
![](https://img.haomeiwen.com/i13295703/46932d62a2a4a24f.jpg)
UPDATE titles_test
SET emp_no = REPLACE(emp_no,10001,10005)
WHERE id = 5
注:
Sqlite数据库字符串处理函数replace
replace(X,Y,Z) ,x:要处理的字符串,y:被替换的字符串,z:替换后的字符串
45.将titles_test表名修改为titles_2017
![](https://img.haomeiwen.com/i13295703/4f10713d5c56dbc5.jpg)
ALTER TABLE titles_test RENAME TO titles_2017
46.在audit表上创建外键约束,其emp_no对应employees_test表的主键id
![](https://img.haomeiwen.com/i13295703/00e5a063f343a67d.jpg)
DROP TABLE audit;
CREATE TABLE audit(
EMP_no INT NOT NULL,
create_date datetime NOT NULL,
FOREIGN KEY(EMP_no) REFERENCES employees_test(ID));
注:牛客网的这套系统不能用MySQL的ALTER TABLE <表名> ADD [CONSTRAINT <约束名>] FOREIGN KEY(外键字段名)REFERENGCES 被参照表(主键字段名)
47.如何获取emp_v和employees有相同的数据no
![](https://img.haomeiwen.com/i13295703/7fa00dde95b9afe2.jpg)
SELECT ev.*
FROM emp_v ev,employees em
WHERE ev.emp_no = em.emp_no;
48.将所有获取奖金的员工当前薪水增加10%
![](https://img.haomeiwen.com/i13295703/8124d39fd7731cf5.jpg)
UPDATE salaries SET salary = salary*1.1
WHERE emp_no IN (SELECT emp_no FROM emp_bonus)