sql在线编程题回顾_(题目来自牛客网)
自己的sql水平是真的菜,当时的时候也没有好好的重视,现在发现很多笔试之类的sql语句都没有办法写出来,还有啥好说的,好好练练呗——这个板块就权当是用来复习用的,因为有时候一股劲的做个几道题但是没有好好的回顾,没有好好的思考,也并不会有多大的收获(因为我自己存在这样的一种情况,当有难题时,不知不觉就变成了只要AC了就行了,完全不考虑方法以及思路的总结,这样的坏习惯估计是高一开始养成的所谓惰性循环吧估计——匪交匪舒,天子所予 。当是个提示吧)
1.
链接:https://www.nowcoder.com/questionTerminal/2435cc7b43c94d3b88ffbcfadc0241de
来源:牛客网
1 |
SELECT em.* FROM employees AS em, emp_v AS ev WHERE em.emp_no = ev.emp_no |
1 |
SELECT * FROM employees INTERSECT SELECT * FROM emp_v |
1 |
SELECT * FROM emp_v |
1 |
SELECT * FROM employees, emp_v WHERE employees.emp_no = emp_v.emp_no |
2.
链接:https://www.nowcoder.com/questionTerminal/f24966e0cb8a49c192b5e65339bc8c03
来源:牛客网
1 |
SELECT * FROM employees LIMIT 5 OFFSET 5
|
1 |
SELECT * FROM employees LIMIT 5 , 5
|
3.
链接:https://www.nowcoder.com/questionTerminal/74d90728827e44e2864cce8b26882105
来源:牛客网
获取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` varchar(16) NOT NULL,
`gender` char(1) NOT NULL,
`hire_date` date NOT NULL,
PRIMARY KEY (`emp_no`));
输出格式:
first_name |
---|
Chirstian |
Tzvetan |
Bezalel |
Duangkaew |
Georgi |
Kyoichi |
Anneke |
Sumant |
Mary |
Parto |
Saniya |
解析:
链接:https://www.nowcoder.com/questionTerminal/74d90728827e44e2864cce8b26882105
来源:牛客网
排序的话主要体现在ORDER BY
1 |
SELECT first_name FROM employees ORDER BY substr(first_name,length(first_name)- 1 )
|
1 |
SELECT first_name FROM employees ORDER BY substr(first_name,- 2 )
|
4.
题目描述
来源:牛客网
1 |
SELECT (length( "10,A,B" )-length(replace( "10,A,B" , "," , "" )))/length( "," ) AS cnt
|
2 |
SELECT 2 AS cnt
|
5.
题目描述
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 date DEFAULT NULL);
insert into titles_test values ('1', '10001', 'Senior Engineer','1986-06-26', '9999-01-01'),
('2', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('6', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');
链接:https://www.nowcoder.com/questionTerminal/2bec4d94f525458ca3d0ebf3bc8cd240
来源:牛客网
1 |
REPLACE INTO titles_test VALUES ( 5 , 10005 , 'Senior Engineer' , '1986-06-26' , '9999-01-01' )
|
1 |
UPDATE titles_test SET emp_no = REPLACE(emp_no, 10001 , 10005 ) WHERE id = 5
|
1 |
UPDATE titles_test SET emp_no = 10005 WHERE id = 5
|
6.
链接:https://www.nowcoder.com/questionTerminal/6e86365af15e49d8abe2c3d4b5126e87
来源:牛客网
按照dept_no进行汇总,属于同一个部门的emp_no按照逗号进行连接,结果给出dept_no以及连接出的结果employees
CREATE TABLE `dept_emp` (
`emp_no` int(11) NOT NULL,
`dept_no` char(4) NOT NULL,
`from_date` date NOT NULL,
`to_date` date NOT NULL,
PRIMARY KEY (`emp_no`,`dept_no`));
输出格式:
dept_no | employees |
---|---|
d001 | 10001,10002 |
d002 | 10006 |
d003 | 10005 |
d004 | 10003,10004 |
d005 | 10007,10008,10010 |
d006 | 10009,10010 |
链接:https://www.nowcoder.com/questionTerminal/6e86365af15e49d8abe2c3d4b5126e87
来源:牛客网
1
2
|
SELECT dept_no, group_concat(emp_no) AS employees FROM dept_emp GROUP BY dept_no |
select dept_no ,group_concat(emp_no) as employees from dept_emp group by dept_no
7.
题目描述
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 date DEFAULT NULL);
insert into titles_test values ('1', '10001', 'Senior Engineer','1986-06-26', '9999-01-01'),
('2', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('3', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('4', '10004', 'Senior Engineer', '1995-12-03', '9999-01-01'),
('5', '10001', 'Senior Engineer', '1986-06-26', '9999-01-01'),
('6', '10002', 'Staff', '1996-08-03', '9999-01-01'),
('7', '10003', 'Senior Engineer', '1995-12-03', '9999-01-01');
链接:https://www.nowcoder.com/questionTerminal/3d92551a6f6d4f1ebde272d20872cf05
来源:牛客网
1
2
|
DELETE FROM titles_test WHERE id NOT IN (SELECT MIN(id) FROM titles_test GROUP BY emp_no) |
8.
将titles_test表名修改为titles_2017。
改变表名 - ALTER TABLE 旧表名 RENAME TO 新表名
增加一列 - ALTER TABLE 表名 ADD COLUMN 列名 数据类型
9.
将employees表中的所有员工的last_name和first_name通过(')连接起来。
链接:https://www.nowcoder.com/questionTerminal/810bf4ee3ac64949b08983aa66ec7bee
来源:牛客网
1 |
SELECT last_name || "'" || first_name FROM employees
|
10.
题目描述
CREATE TABLE IF NOT EXISTS "titles" (
`emp_no` int(11) NOT NULL,
`title` varchar(50) NOT NULL,
`from_date` date NOT NULL,
`to_date` date DEFAULT NULL);
输入描述:
无
输出描述:
title | t |
---|---|
Assistant Engineer | 2 |
Engineer | 4 |
省略 | 省略 |
Staff | 3 |
链接:https://www.nowcoder.com/questionTerminal/72ca694734294dc78f513e147da7821e
来源:牛客网
1
2
|
SELECT title, COUNT(title) AS t FROM titles GROUP BY title HAVING t >= 2
|