牛客网数据库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 ...
随机推荐
- Vue数据产生变化需要页面渲染完之后执行某操作
1.数据产生变化或者页面需要vue数据渲染完之后加载的东西 Vue.nextTick(function () { alert(123); }); 2 调用vue方法 --------------Vue ...
- Python os.fchown() 方法
概述 os.fchown() 方法用于修改一个文件的所有权,这个函数修改一个文件的用户ID和用户组ID,该文件由文件描述符fd指定.高佣联盟 www.cgewang.com Unix上可用. 语法 f ...
- 【SDOI2012】Longge 的问题 题解(欧拉函数)
前言:还算比较简单的数学题,我这种数学蒟蒻也会做QAQ. --------------- 题意:求$\sum\limits_{i=1}^n gcd(i,n)$的值. 设$gcd(i,n)=d$,即$d ...
- 基于 JavaEmail 简单的发送邮件点到点,一对多(图片和附件)之多收件人,多少送人
if(!StringUtil.isEmpty(message_type_to)){ if (message_type_to.contains(",")) { String[] sp ...
- Centos7下安装一个或多个tomcat7完整
Tomcat是Apache 软件基金会(Apache Software Foundation)的Jakarta 项目中的一个核心项目,在运用中也占有大部分的市场. 根据系统下载对应的版,在线的下载地址 ...
- LINUX --- echo修改GPIO状态
GPIO sysfs Interface The GPIO sysfs interface allows users to manipulate any GPIO from userspace (al ...
- Unity 笔记
摄像机 Main Camera 跟随主角移动,不看 UI 剧情摄像机 当进入剧情时,可以关闭 main camera,启用剧情摄像机,不看 UI UI 摄像机 看 UI Unity编辑器常用的sett ...
- Java多线程入门及实战
基本概念: 1: 程序 2 进程 3 线程 4 进程和线程的区别 5 进程和程序的区别 Java实现多线程的方法: 1 继承Thread 2 实现Runable 3 实现callable 4 线程池的 ...
- Solon 最简单demo---Hello World
Solon 的项目地址: https://gitee.com/noear/solon 里面杂七杂八的东西很多...今天的目标是整一个最最简单,最最小巧的 Hello world (一)用 Intell ...
- java BigInteger与BigDecimal
一 BigInteger java中long型为最大整数类型,对于超过long型的数据如何去表示呢.在Java的世界中,超过long型 的整数已经不能被称为整数了,它们被封装成BigInteger对象 ...