练习SQL利器,牛客网SQL实战题库,41~48题

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)

你可能感兴趣的:(练习SQL利器,牛客网SQL实战题库,41~48题)