练习SQL利器,牛客网SQL实战题库,41~48题
2019-03-28 本文已影响1人
今天有觉悟1
41.构造一个触发器audit_log
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对应的记录
DELETE FROM titles_test
WHERE id NOT IN (SELECT MIN(id) FROM titles_test)
43.将所有to_date为9999-01-01的全部更新为NULL
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
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
ALTER TABLE titles_test RENAME TO titles_2017
46.在audit表上创建外键约束,其emp_no对应employees_test表的主键id
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
SELECT ev.*
FROM emp_v ev,employees em
WHERE ev.emp_no = em.emp_no;
48.将所有获取奖金的员工当前薪水增加10%
UPDATE salaries SET salary = salary*1.1
WHERE emp_no IN (SELECT emp_no FROM emp_bonus)