牛客网数据库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 ...
随机推荐
- Python模块_import语句_from...import 函数名_from ... import *
Python模块:包含了所有定义的函数和变量的文件,后缀名为 .py 将某些方法存放在文件中,当某些脚本 或 交互式需要使用的时候,导入进去. 导入的文件,就称为模块.导入之后就可以使用导入的文件的函 ...
- Python os.getcwdu() 方法
概述 os.getcwdu() 方法用于返回一个当前工作目录的Unicode对象.高佣联盟 www.cgewang.com Unix, Windows 系统下可用. 语法 getcwdu()方法语法格 ...
- 4.28 省选模拟赛模拟赛 最佳农场 二维卷积 NTT
第一次遇到二维卷积 不太清楚是怎么做的. 40分暴力比对即可. 对于行为或者列为1时 容易想到NTT做快速匹配.然后找答案即可. 考虑这是一个二维的比对过程. 设\(f_{i,j}\)表示以i,j为右 ...
- Linux搭建Gitlab(Docker版)
1.拉取gitlab的docker镜像 #这里使用gitlab的社区版 docker pull gitlab/gitlab-ce 2.启动gitlab容器实例 docker run -d -p 44 ...
- MYSQL-MGR架构配置
MGR安装:机器列表:pc-s4 s4 --2pc-s3 s3 --1pc-s1 s1 --1pc-s2 s2 --1 1,为初始化搭建,2,为后续添加 对1 三个数据库先进行初始化========= ...
- 【SCOI2005】互不侵犯 题解(状压DP)
前言:一道状压DP的入门题(可惜我是个DP蒟蒻QAQ) ------------------ 题意简述:求在一个$n*n$的棋盘中放$k$个国王的方案数.注:当在一个格子中放入国王后,以此格为中心的九 ...
- mybatis中的延迟查询思想
1.一对一延迟加载 延迟加载: 就是在需要用到数据时才进行加载,不需要用到数据时就不加载数据.延迟加载也称懒加载. 好处:先从单表查询,需要时再从关联表去关联查询,大大提高数据库性能,因为查询单表要比 ...
- python flask构建小程序订餐系统--centos下项目开发环境的搭建
1.项目开发环境的搭建(Linux环境) 1)软件的安装 我们搭建整个项目的过程中,我们需要用到下面的一些软件,但是这些软件的安装过程我们在这里不用说明.(因为windows软件的安装比较的简单,类似 ...
- python3.2求和与最值
#1到100求和sum1=0for x in range(101): sum1=sum1+xprint(sum1) #1到100偶数求和sum2=0for x in range(0,101,2): p ...
- 全球疫情爬取APP版
全球疫情统计APP图表展示: 将该任务分解成三部分来逐个实现: ①爬取全球的疫情数据存储到云服务器的MySQL上 ②在web项目里添加一个servlet,通过参数的传递得到对应的json数据 ③设计A ...