牛客网数据库SQL实战解析(41-50题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0
牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010666669/article/details/104763370
牛客网数据库SQL实战解析(11-20题): https://blog.csdn.net/u010666669/article/details/104863298
牛客网数据库SQL实战解析(21-30题): https://blog.csdn.net/u010666669/article/details/104871373
牛客网数据库SQL实战解析(31-40题): https://blog.csdn.net/u010666669/article/details/104977904
牛客网数据库SQL实战解析(41-50题): https://blog.csdn.net/u010666669/article/details/104979427
牛客网数据库SQL实战解析(51-61题): https://blog.csdn.net/u010666669/article/details/104980372
41. 构造一个触发器audit_log,在向employees_test表中插入一条数据的时候,触发插入相关的数据到audit中。
CREATE TRIGGER audit_log AFTER INSERT ON employees_test
BEGIN
INSERT INTO audit VALUES (NEW.ID, NEW.NAME);
END;
解析:构造触发器时注意以下几点:
1、用 CREATE TRIGGER 语句构造触发器,用 BEFORE或AFTER 来指定在执行后面的SQL语句之前或之后来触发TRIGGER
2、触发器执行的内容写出 BEGIN与END 之间
3、可以使用 NEW与OLD 关键字访问触发后或触发前的employees_test表单记录
42. 删除emp_no重复的记录,只保留最小的id对应的记录。
DELETE FROM titles_test
WHERE id NOT IN (
SELECT MIN(id)
FROM titles_test
GROUP BY emp_no
)
;
解析:删除数据用 DELETE。
43. 将所有to_date为9999-01-01的全部更新为NULL,且 from_date更新为2001-01-01。
UPDATE titles_test SET to_date = NULL, from_date = '2001-01-01'
WHERE to_date = '9999-01-01'
;
解析:用 UPDATE 语句更新若干列,UPDATE 表名称 SET 列名称 = 新值 WHERE 列名称 = 某值。
44. 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现。
UPDATE titles_test SET id=5, emp_no=10005
WHERE id=5 AND emp_no=10001
;
解析:UPDATE更新数据,用,分割两列。
45. 将titles_test表名修改为titles_2017。
ALTER TABLE titles_test RENAME TO titles_2017 ;
解析:alter语句修改表名。
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)
);
解析:外键约束 FOREIGN KEY。由于SQLite中不能通过 ALTER TABLE ... ADD FOREIGN KEY ... REFERENCES ... 语句来对已创建好的字段创建外键,因此只能先删除表,再重新建表的过程中创建外键。参考资料:https://www.sqlite.org/foreignkeys.html
47. 存在如下的视图:
create view emp_v as select * from employees where emp_no >10005;
如何获取emp_v和employees有相同的数据?
SELECT ev.*
FROM emp_v ev, employees e
WHERE ev.emp_no=e.emp_no
;
解析:这道题出得没意思了。。。
48. 将所有获取奖金的员工当前的薪水增加10%。
UPDATE salaries SET salary = salary * 1.1
WHERE emp_no IN(
SELECT s.emp_no
FROM salaries s
INNER JOIN emp_bonus eb
ON s.emp_no = eb.emp_no AND s.to_date = '9999-01-01'
)
;
解析:更新表字段。
49. 针对库中的所有表生成select count(*)对应的SQL语句
SELECT "select count(*) from " || name || ";" AS cnts
FROM sqlite_master WHERE type = 'table'
;
解析:在 SQLite 系统表 sqlite_master 中可以获得所有表的索引,其中字段 name 是所有表的名字,而且对于自己创建的表而言,字段 type 永远是 'table'。参考:https://blog.csdn.net/xingfeng0501/article/details/7804378
50. 将employees表中的所有员工的last_name和first_name通过(')连接起来。
select last_name || "'" || first_name from employees ;
解析:用 || 做字段拼接。mysql 用 concat() 拼接。
牛客网数据库SQL实战解析(41-50题)的更多相关文章
- 牛客网数据库SQL实战解析(51-61题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(31-40题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(21-30题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(11-20题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战解析(1-10题)
牛客网SQL刷题地址: https://www.nowcoder.com/ta/sql?page=0 牛客网数据库SQL实战解析(01-10题): https://blog.csdn.net/u010 ...
- 牛客网数据库SQL实战1-查找最晚入职员工的所有信息
题目描述 查找最晚入职员工的所有信息CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`fi ...
- 牛客网数据库SQL实战(此处只有答案,没有表内容)
1.查找最晚入职员工的所有信息 select * from employees order by hire_date desc limit 1; --limit n表示输出前n条数据,limit ...
- 牛客网数据库SQL实战(21-25)
21.查找所有员工自入职以来的薪水涨幅情况,给出员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序CREATE TABLE `employees` (`emp_no` i ...
- 牛客网数据库SQL实战(16-20)
16.统计出当前各个title类型对应的员工当前薪水对应的平均工资.结果给出title以及平均工资avg.CREATE TABLE `salaries` (`emp_no` int(11) NOT N ...
随机推荐
- Day11_基本搜索
学于黑马和传智播客联合做的教学项目 感谢 黑马官网 传智播客官网 微信搜索"艺术行者",关注并回复关键词"乐优商城"获取视频和教程资料! b站在线视频 0.学习 ...
- PHP array_udiff_uassoc() 函数
实例 比较两个数组的键名和键值(使用用户自定义函数进行比较),并返回差集: <?phpfunction myfunction_key($a,$b){if ($a===$b){return 0;} ...
- PHP deg2rad() 函数
实例 把角度转换为弧度: <?phpecho deg2rad("45") . "<br>";echo deg2rad("90&quo ...
- react-ts模板/脚手架
react-ts-template 脚手架 使用 npm i -g maple-react-cli maple-react-cli init 选择模板 'react-ts-template' 输入自定 ...
- [转]HashMap 和 currentHashMap 总结
作者:浅蓝色的麻吉 https://www.jianshu.com/p/a7767e6ff2a2 1. 什么是哈希表 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,查找等基础操作执行性能 1. ...
- 7月15日考试 题解(链表+状压DP+思维题)
前言:蒟蒻太弱了,全打的暴力QAQ. --------------------- T1 小Z的求和 题目大意:求$\sum\limits_{i=1}^n \sum\limits_{j=i}^n kth ...
- kubernetes ingress 重定向地址错误
环境: 有两个 kubernetes 集群: 一个版本为1.11,后面使用A集群代替,ingress 镜像版本为 0.19(quay.io/kubernetes-ingress-controller/ ...
- Java代码编写规范(转载)
编码规范 1 前言为确保系统源程序可读性,从而增强系统可维护性,java编程人员应具有基本类似的编程风格,兹制定下述Java编程规范,以规范系统Java部分编程.系统继承的其它资源中的源程序也应按此规 ...
- Take C# 8.0 for a spin
本文章为机器翻译.https://blogs.msdn.microsoft.com/dotnet/2018/12/05/take-c-8-0-for-a-spin/ 以C # 8兜风 我们昨天宣布Vi ...
- java面试的一些问题
面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...