![](https://img-blog.csdnimg.cn/20190918140129601.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
数据库SQL实战做题记录
牛客网sql做题记录
qq_lzq
这个作者很懒,什么都没留下…
展开
-
获取所有员工当前的manager
题目链接注意:员工表和经理表的to_date也要一样。 SELECT a.emp_no, b.emp_no FROM dept_emp AS a JOIN dept_manager AS b ON a.`dept_no`=b.`dept_no` AND a.`emp_no` != b.`emp_no` AND a.`to_date`='9999-01-01' AND a...原创 2020-04-18 10:38:17 · 245 阅读 · 0 评论 -
统计各个部门的工资记录数(多表连接)
题目链接多表连接, 然后分组。SELECT a.dept_no, a.dept_name, COUNT(*) AS SUM FROM departments AS a JOIN dept_emp AS b ON a.`dept_no`=b.`dept_no`JOIN salaries AS c ON b.`emp_no`=c.`emp_no` GROUP BY a.`dept_...原创 2020-04-18 10:23:25 · 263 阅读 · 0 评论 -
统计出当前各个title类型对应的员工当前薪水对应的平均工资
题目链接连接表, 然后分组即可。 SELECT title, AVG(salary) AS AVG FROM titles AS t JOIN salaries AS s ON t.`emp_no`=s.`emp_no` AND t.`to_date`=s.`to_date` AND t.`to_date`='9999-01-01'GROUP BY t.title;...原创 2020-04-18 10:14:23 · 131 阅读 · 0 评论 -
获取所有员工的emp_no(表的左连接 left join )
题目链接题目描述获取所有员工的emp_no、部门编号dept_no以及对应的bonus类型btype和received ,没有分配具体的员工不显示CREATE TABLE `dept_emp` ( `emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` d...原创 2020-04-18 09:16:35 · 238 阅读 · 0 评论 -
在last_update后面新增加一列名字为create_date(修改表结构)
题目链接alter table <表名> add column <列名> <限制1> <限制2>...... ;ALTER TABLE actor ADD COLUMN create_date datetime NOT NULL DEFAULT '0000-00-00 00:00:00';...原创 2020-04-16 14:10:48 · 375 阅读 · 0 评论 -
查找所有员工的last_name和first_name以及对应部门编号dept_no (表的左连接)
题目链接考察表连接:left join :左边的数据都会读取, 即使右边没有可以与他连接的对应数据。right join : 右边的数据都会读取, 即使左边没有与他连接的对应数据。inner join : 俩个表都要有对应数据连接, 任何一边数据缺失都不会显示。SELECT employees.`last_name`,employees.`first_name`,...原创 2020-04-16 14:02:12 · 289 阅读 · 0 评论 -
将employees表的所有员工的last_name和first_name拼接起来作为Name
题目链接mysql版本:SELECT CONCAT(last_name, " ", first_name) AS NAME FROM employees;SQLite版本: (SQLite没有concat函数, 通过 || 来实现字符串连接)SELECT last_name || " " || first_name AS NameFROM employees...原创 2020-04-16 13:51:03 · 204 阅读 · 0 评论 -
针对库中的所有表生成select count(*)对应的SQL语句(批量生成查询语句)
题目链接题目描述针对库中的所有表生成select count(*)对应的SQL语句CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,...原创 2020-04-16 13:35:42 · 523 阅读 · 0 评论 -
构造一个触发器audit_log
题目链接创建触发器链接创建触发器SQL语法:CREATE TRIGGER trigger_name [BEFORE|AFTER] event_name [of <指定列>]ON table_nameBEGIN -- 触发器逻辑....END;event_name : delete, uptate, insert CREATE TRI...原创 2020-04-16 11:39:12 · 174 阅读 · 0 评论 -
使用join查询方式找出没有分类的电影id以及名称
题目链接连接表语法:A join B -- A表连接B 表onA.m-B.n -- 连接条件join ......SELECT film.film_id, film.title FROM film WHERE film_id NOT IN ( SELECT film.film_id FROM film JOIN film_category ON film.f...原创 2020-04-16 11:25:05 · 360 阅读 · 0 评论 -
使用子查询的方式找出属于Action分类的所有电影对应的title,description
题目链接SELECT title, description FROM film WHERE film_id IN ( SELECT film_id FROM film_category WHERE category_id IN ( SELECT category_id FROM category WHERE NAME='Action' ));...原创 2020-04-16 11:13:46 · 163 阅读 · 0 评论 -
获取所有非manager的员工emp_no
题目链接 SELECT emp_no FROM employees WHERE emp_no NOT IN (SELECT emp_no FROM dept_manager);原创 2020-04-10 11:36:12 · 166 阅读 · 0 评论 -
批量插入数据
题目链接题目描述对于表actor批量插入如下数据CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMARY KEY,first_name varchar(45) NOT NULL,last_name varchar(45) NOT NULL,last_update timestamp NOT NU...原创 2020-04-10 11:32:53 · 106 阅读 · 0 评论 -
使用含有关键字exists查找未分配具体部门的员工的所有信息。
题目链接题目描述使用含有关键字exists查找未分配具体部门的员工的所有信息。CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`g...原创 2020-04-10 11:27:51 · 409 阅读 · 0 评论 -
针对上面的salaries表emp_no字段创建索引idx_emp_no
题目链接SQLite强制使用索引教程题目描述针对salaries表emp_no字段创建索引idx_emp_no,查询emp_no为10005, 使用强制索引。CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to...原创 2020-04-10 11:14:12 · 139 阅读 · 0 评论 -
从titles表获取按照title进行分组,注意对于重复的emp_no进行忽略。
题目链接题目描述从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。注意对于重复的emp_no进行忽略。CREATE TABLE IF NOT EXISTS `titles` (`emp_no` int(11) NOT NULL,`title` varchar(50) NOT NULL,`from_date` date NOT NULL...原创 2020-04-10 11:01:12 · 122 阅读 · 0 评论 -
查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数t
题目链接题目描述查找薪水涨幅超过15次的员工号emp_no以及其对应的涨幅次数tCREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (`emp_no`,`...原创 2020-04-08 18:23:53 · 205 阅读 · 0 评论 -
创建一个actor_name表
题目链接题目描述对于如下表actor,其对应的数据为:actor_id first_name last_name last_update 1 PENELOPE GUINESS 2006-02-15 12:34:33 2 NICK WAHLBERG 2006-02-15 12:34:33 创建一个actor_nam...原创 2020-04-08 17:12:18 · 565 阅读 · 0 评论 -
对first_name创建唯一索引uniq_idx_firstname
题目链接题目描述针对如下表actor结构创建索引:CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMARY KEY,first_name varchar(45) NOT NULL,last_name varchar(45) NOT NULL,last_update timestamp NOT N...原创 2020-04-08 17:02:02 · 320 阅读 · 0 评论 -
查找入职员工时间排名倒数第三的员工所有信息
题目链接题目描述查找入职员工时间排名倒数第三的员工所有信息CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` cha...原创 2020-04-08 16:48:16 · 212 阅读 · 0 评论 -
获取当前薪水第二多的员工的emp_no以及其对应的薪水salary
题目链接题目描述获取当前(to_date='9999-01-01')薪水第二多的员工的emp_no以及其对应的薪水salaryCREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NUL...原创 2020-04-06 17:58:59 · 423 阅读 · 1 评论 -
查找employees表
题目链接题目描述查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_n...原创 2020-04-06 17:24:29 · 423 阅读 · 0 评论 -
将所有获取奖金的员工当前的薪水增加10%
题目链接题目描述将所有获取奖金的员工当前的薪水增加10%。create table emp_bonus(emp_no int not null,recevied datetime not null,btype smallint not null);CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` i...原创 2020-04-06 17:18:05 · 377 阅读 · 0 评论 -
查找员工编号emp_no为10001其自入职以来的薪水salary涨幅值growth
题目链接题目描述查找员工编号emp_no为10001其自入职以来的薪水salary涨幅值growthCREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` date NOT NULL,PRIMARY KEY (...原创 2020-04-06 16:53:17 · 130 阅读 · 0 评论 -
找出所有员工当前薪水salary情况
题目链接题目描述找出所有员工当前(to_date='9999-01-01')具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示CREATE TABLE `salaries` (`emp_no` int(11) NOT NULL,`salary` int(11) NOT NULL,`from_date` date NOT NULL,`to_date` dat...原创 2020-04-05 11:34:00 · 218 阅读 · 0 评论 -
针对actor表创建视图actor_name_view
题目链接题目描述针对actor表创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,first_name为first_name_v,last_name修改为last_name_v:CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMAR...原创 2020-04-05 11:29:17 · 329 阅读 · 0 评论 -
批量插入数据,不使用replace操作
题目链接题目描述对于表actor批量插入如下数据,如果数据已经存在,请忽略,不使用replace操作CREATE TABLE IF NOT EXISTS actor (actor_id smallint(5) NOT NULL PRIMARY KEY,first_name varchar(45) NOT NULL,last_name varchar(45) NOT NULL,...原创 2020-04-05 11:15:53 · 182 阅读 · 0 评论 -
将employees表中的所有员工的last_name和first_name通过(')连接起来。
题目描述将employees表中的所有员工的last_name和first_name通过(')连接起来。CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) N...原创 2020-04-05 11:08:40 · 779 阅读 · 0 评论 -
将所有to_date为9999-01-01的全部更新为NULL
题目链接题目描述将所有to_date为9999-01-01的全部更新为NULL,且 from_date更新为2001-01-01。CREATE TABLE IF NOT EXISTS titles_test (id int(11) not null primary key,emp_no int(11) NOT NULL,title varchar(50) NOT NULL,...原创 2020-04-05 10:54:11 · 368 阅读 · 0 评论 -
从titles表获取按照title进行分组
题目链接题目描述从titles表获取按照title进行分组,每组个数大于等于2,给出title以及对应的数目t。CREATE TABLE IF NOT EXISTS "titles" (`emp_no` int(11) NOT NULL,`title` varchar(50) NOT NULL,`from_date` date NOT NULL,`to_date` ...原创 2020-04-05 10:42:54 · 142 阅读 · 0 评论 -
按照dept_no进行汇总
题目链接题目描述按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employeesCREATE TABLE `dept_emp` (`emp_no` int(11) NOT NULL,`dept_no` char(4) NOT NULL,`from_date` date NOT NULL,`to_date` date...原创 2020-04-05 10:32:06 · 292 阅读 · 0 评论 -
删除emp_no重复的记录,只保留最小的id对应的记录。
题目链接题目描述删除emp_no重复的记录,只保留最小的id对应的记录。CREATE TABLE IF NOT EXISTS titles_test (id int(11) not null primary key,emp_no int(11) NOT NULL,title varchar(50) NOT NULL,from_date date NOT NULL,to_date...原创 2020-04-05 09:45:51 · 311 阅读 · 0 评论 -
将titles_test表名修改为titles_2017
题目链接题目描述将titles_test表名修改为titles_2017。CREATE TABLE IF NOT EXISTS titles_test (id int(11) not null primary key,emp_no int(11) NOT NULL,title varchar(50) NOT NULL,from_date date NOT NULL,...原创 2020-04-04 21:38:49 · 141 阅读 · 0 评论 -
获取Employees中的first_name
题目链接题目描述获取Employees中的first_name,查询按照first_name最后两个字母,按照升序进行排列CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` va...原创 2020-04-04 21:25:20 · 466 阅读 · 0 评论 -
将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
题目链接将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现。CREATE TABLE IF NOT EXISTS titles_test (id int(11) not null primary key,emp_no int(11) NOT NULL,title varchar(50) NOT NUL...原创 2020-04-04 20:53:47 · 225 阅读 · 0 评论 -
查找字符串'10,A,B' 中逗号','出现的次数cnt
题目链接题目描述查找字符串'10,A,B' 中逗号','出现的次数cnt。length(arg)函数, arg是字符串, 返回的是所求的字符串的长度。 replace(X,Y,Z) 用串Z替代串X中出现的串Y。 把这个替换之后的串的结果返回。思路:把串 "10,A,B" 中的 逗号用空串替代, 变成了 "10AB"然后原来串的长度 - 替换之后的串的...原创 2020-04-04 19:01:55 · 2120 阅读 · 2 评论 -
获取select * from employees对应的执行计划
题目描述获取select * from employees对应的执行计划没啥思路的, 获取一条sql语句执行计划就是 explain <sql语句>解释一下为什么需要这种获取执行计划的语句:事实上, 一条sql语句在经过了 连接层进入sql层之后, sql层的优化器会对sql语句产生的多种执行计划 选择最优的一个来执行这个最优的执行计划考虑到了 IO消耗,内存...原创 2020-04-04 18:41:54 · 189 阅读 · 0 评论 -
如何获取emp_v和employees有相同的数据no
题目链接题目描述存在如下的视图:create view emp_v as select * from employees where emp_no >10005;如何获取emp_v和employees有相同的数据?CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL...原创 2020-04-04 18:36:29 · 202 阅读 · 0 评论 -
查找最晚入职员工的所有信息
题目链接题目描述查找最晚入职员工的所有信息CREATE TABLE `employees` (`emp_no` int(11) NOT NULL,`birth_date` date NOT NULL,`first_name` varchar(14) NOT NULL,`last_name` varchar(16) NOT NULL,`gender` char(1) NOT...原创 2020-04-04 18:30:25 · 1269 阅读 · 0 评论 -
分页查询employees表,每5行一页,返回第2页的数据
https://www.nowcoder.com/practice/f24966e0cb8a49c192b5e65339bc8c03?tpId=82&tqId=29823&tPage=1&rp=&ru=/ta/sql&qru=/ta/sql/question-rankingselect * from employees limit 5,5;l...原创 2020-04-04 18:17:11 · 238 阅读 · 0 评论