![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
sql题库训练
sql题库
敏敏程序媛
这个作者很懒,什么都没留下…
展开
-
SQL55 分页查询employees表,每5行一页,返回第2页的数据
描述分页查询employees表,每5行一页,返回第2页的数据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原创 2022-03-01 16:04:45 · 813 阅读 · 0 评论 -
SQL54 平均工资
描述查找排除在职(to_date = '9999-01-01' )员工的最大、最小salary之后,其他的在职员工的平均工资avg_salary。CREATE 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`,`from_date`));如:INSER原创 2022-03-01 15:53:21 · 1964 阅读 · 0 评论 -
SQL53 按照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 NOT NULL,PRIMARY KEY (`emp_no`,`dept_no`));输出格式:dept_no原创 2022-02-22 18:57:51 · 149 阅读 · 0 评论 -
SQL52 获取employees中的first_name
请你将employees中的first_name,并按照first_name最后两个字母升序进行输出。以上示例数据的输出如下:示例1输入:drop table if exists `employees` ; CREATE TABLE `employees` ( `emp_no` int(11) NOT NULL, `birth_date` date NOT NULL, `first_name` varchar(14) NOT NULL, `last_name` va原创 2022-02-22 17:46:39 · 127 阅读 · 0 评论 -
SQL51 查找字符串中逗号出现的次数
描述现有strings表如下:id指序列号; string列中存放的是字符串,且字符串中仅包含数字、字母和逗号类型的字符。请你统计每个字符串中逗号出现的次数cnt。以上例子的输出结果如下:示例1输入:drop table if exists strings;CREATE TABLE strings( id int(5) NOT NULL PRIMARY KEY, string varchar(45) NOT NULL );insert into原创 2022-02-22 15:44:29 · 875 阅读 · 0 评论 -
SQL48 将所有获取奖金的员工当前的薪水增加10%
描述现有员工获取到的奖金简表emp_bonus如下:emp_no指获取到奖金的员工编号; bytpe指获取到的奖金类型。有员工薪资简表salaries如下:emp_no指员工编号; salary指薪资; from_date指该薪资的开始日期; to_date指该薪资的结束日期。请你写出更新语句,将所有获取奖金的员工当前的(salaries.to_date='9999-01-01')薪水增加10%。(emp_bonus里面的emp_no都是当前获奖的所有员工,不考虑获取原创 2022-02-22 15:08:49 · 2843 阅读 · 0 评论 -
SQL50 将employees表中的所有员工的last_name和first_name通过引号连接起来。
描述将employees表中的所有员工的last_name和first_name通过(')连接起来。(sqlite不支持concat,请用||实现,mysql支持concat)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(原创 2022-02-21 10:40:50 · 366 阅读 · 0 评论 -
SQL46 在audit表上创建外键约束,其emp_no对应employees_test表的主键id
描述在audit表上创建外键约束,其emp_no对应employees_test表的主键id。(以下2个表已经创建了)CREATETABLEemployees_test(IDINTPRIMARYKEYNOTNULL,NAMETEXTNOTNULL,AGEINTNOTNULL,ADDRESSCHAR(50),SALARYREAL);CREATETABLEaudit(EMP_noINTNOTNULL,create_datedatetim...原创 2021-12-27 19:29:12 · 286 阅读 · 0 评论 -
SQL45 将titles_test表名修改为titles_2017
描述将titles_test表名修改为titles_2017。CREATETABLEIFNOTEXISTStitles_test(idint(11)notnullprimarykey,emp_noint(11)NOTNULL,titlevarchar(50)NOTNULL,from_datedateNOTNULL,to_datedateDEFAULTNULL);insertintotitles_testvalues('1','1...原创 2021-12-27 19:13:22 · 383 阅读 · 0 评论 -
SQL44 将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005
描述将id=5以及emp_no=10001的行数据替换成id=5以及emp_no=10005,其他数据保持不变,使用replace实现,直接使用update会报错。CREATETABLEtitles_test(idint(11)notnullprimarykey,emp_noint(11)NOTNULL,titlevarchar(50)NOTNULL,from_datedateNOTNULL,to_datedate...原创 2021-12-27 19:00:05 · 87 阅读 · 0 评论 -
SQL43 将所有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,from_date date NOT NULL,to_date date DEFAULT NULL);insert into ti原创 2021-12-27 18:03:47 · 128 阅读 · 0 评论 -
SQL42 删除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 date DEFAULT NULL);insert into titles_test values ('1', '10001原创 2021-12-27 16:47:02 · 319 阅读 · 0 评论 -
SQL41 构造一个触发器audit_log
描述构造一个触发器audit_log,在向employees_test表中插入一条数据的时候,触发插入相关的数据到audit中。CREATE TABLE employees_test(ID INT PRIMARY KEY NOT NULL,NAME TEXT NOT NULL,AGE INT NOT NULL,ADDRESS CHAR(50),SALARY REAL);CREATE TABLE audit(EMP_no INT NOT NULL,NAME TEXT NOT NULL原创 2021-12-27 16:08:18 · 260 阅读 · 0 评论 -
SQL40 在last_update后面新增加一列名字为create_date
描述存在actor表,包含如下列信息:CREATETABLEactor(actor_idsmallint(5)NOTNULLPRIMARYKEY,first_namevarchar(45)NOTNULL,last_namevarchar(45)NOTNULL,last_updatedatetimeNOTNULL);现在在last_update后面新增加一列名字为create_date, 类型为datetime, N...原创 2021-12-27 15:18:09 · 236 阅读 · 0 评论 -
SQL39 针对上面的salaries表emp_no字段创建索引idx_emp_no
描述针对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_date` date NOT NULL,PRIMARY KEY (`emp_no`,`from_date`));create index idx_emp_no o原创 2021-12-27 15:03:28 · 388 阅读 · 0 评论 -
SQL38 针对actor表创建视图actor_name_view
描述针对actor表创建视图actor_name_view,只包含first_name以及last_name两列,并对这两列重新命名,first_name为first_name_v,last_name修改为last_name_v:CREATETABLEactor(actor_idsmallint(5)NOTNULLPRIMARYKEY,first_namevarchar(45)NOTNULL,last_namevarchar(45)NO...原创 2021-12-27 14:40:04 · 181 阅读 · 0 评论 -
SQL37 对first_name创建唯一索引uniq_idx_firstname
描述针对如下表actor结构创建索引:(注:在 SQLite 中,除了重命名表和在已有的表中添加列,ALTER TABLE 命令不支持其他操作,mysql支持ALTER TABLE创建索引)CREATETABLEactor(actor_idsmallint(5)NOTNULLPRIMARYKEY,first_namevarchar(45)NOTNULL,last_namevarchar(45)NOTNULL,last_u...原创 2021-12-27 14:16:40 · 228 阅读 · 0 评论 -
SQL36 创建一个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_name表,并且将actor表中的所有first_name以及last_name导入该表.actor_name表结构如下,题目最后原创 2021-12-24 15:42:32 · 138 阅读 · 0 评论 -
SQL35 批量插入数据,不使用replace操作
描述题目已经先执行了如下语句:droptableifexistsactor;CREATETABLEactor(actor_idsmallint(5)NOTNULLPRIMARYKEY,first_namevarchar(45)NOTNULL,last_namevarchar(45)NOTNULL,last_updateDATETIMENOTNULL);insertintoactorvalues('3',...原创 2021-12-24 14:30:42 · 265 阅读 · 0 评论 -
SQL34 批量插入数据
描述题目已经先执行了如下语句:droptableifexistsactor;CREATETABLEactor(actor_idsmallint(5)NOTNULLPRIMARYKEY,first_namevarchar(45)NOTNULL,last_namevarchar(45)NOTNULL,last_updateDATETIMENOTNULL)请你对于表actor批量插入如下数据(不能有2条insert...原创 2021-12-24 14:23:17 · 273 阅读 · 0 评论 -
SQL33 创建一个actor表,包含如下列信息
描述创建一个actor表,包含如下列信息列表 类型 是否为NULL 含义 actor_id smallint(5) not null 主键id first_name varchar(45) not null 名字 last_name varchar(45) not null 姓氏 last_update date not null 日期 create table actor( a原创 2021-12-24 14:16:45 · 143 阅读 · 0 评论 -
SQL32 将employees表的所有员工的last_name和first_name拼接起来作为Name
描述现有员工表employees如下:请将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分。(注:sqllite,字符串拼接为 || 符号,不支持concat函数,mysql支持concat函数)。/*题目:请将employees表的所有员工的last_name和first_name拼接起来作为Name,中间以一个空格区分。(注:sqllite,字符串拼接为 || 符号,不支持concat函数,mysql支持c.原创 2021-12-23 16:55:31 · 332 阅读 · 0 评论 -
SQL30 使用子查询的方式找出属于Action分类的所有电影对应的title,description
描述film表字段 说明 film_id 电影id title 电影名称 description 电影描述信息 CREATE TABLE IF NOT EXISTS film (film_id smallint(5) NOT NULL DEFAULT '0',title varchar(255) NOT NULL,description text,PRIMARY KEY (film_id));category表字段 说明.原创 2021-12-23 16:48:10 · 208 阅读 · 0 评论 -
SQL29 使用join查询方式找出没有分类的电影id以及名称
描述现有电影信息表film,包含以下字段:字段 说明 film_id 电影id title 电影名称 description 电影描述信息 有类别表category,包含以下字段:字段 说明 category_id 电影分类id name 电影分类名称 last_update 电影分类最后更新时间 电影分类表film_category,包含以下字段:字段 说明 film_id 电影id原创 2021-12-23 16:34:21 · 1075 阅读 · 0 评论 -
SQL26 汇总各个部门当前员工的title类型的分配数目
描述有一个部门表departments简况如下:有一个,部门员工关系表dept_emp简况如下:有一个职称表titles简况如下:汇总各个部门当前员工的title类型的分配数目,即结果给出部门编号dept_no、dept_name、其部门下所有的员工的title以及该类型title对应的数目count,结果按照dept_no升序排序,dept_no一样的再按title升序排序/*题目:汇总各个部门当前员工的title类型的分配数目,即结果给出部门原创 2021-12-23 15:52:21 · 153 阅读 · 0 评论 -
SQL25 获取员工其当前的薪水比其manager当前薪水还高的相关信息
描述有一个,部门关系表dept_emp简况如下:有一个部门经理表dept_manager简况如下:有一个薪水表salaries简况如下:获取员工其当前的薪水比其manager当前薪水还高的相关信息,第一列给出员工的emp_no,第二列给出其manager的manager_no,第三列给出该员工当前的薪水emp_salary,第四列给该员工对应的manager当前的薪水manager_salary以上例子输出如下:/*题目:获取员..原创 2021-12-23 15:27:04 · 210 阅读 · 0 评论 -
SQL24 获取所有非manager员工当前的薪水情况
描述有一个员工表employees简况如下:有一个,部门员工关系表dept_emp简况如下:有一个部门经理表dept_manager简况如下:有一个薪水表salaries简况如下:获取所有非manager员工薪水情况,给出dept_no、emp_no以及salary,以上例子输出:/*题目:获取所有非manager员工薪水情况,给出dept_no、emp_no以及salary*/-- 方法一:内连接+子查询select de.dep原创 2021-12-23 14:39:42 · 300 阅读 · 0 评论 -
SQL23 对所有员工的薪水按照salary降序进行1-N的排名
描述有一个薪水表salaries简况如下:对所有员工的薪水按照salary降序进行1-N的排名,要求相同salary并列,且按照emp_no升序排列:/* 题目:对所有员工的薪水按照salary降序进行1-N的排名,要求相同salary并列,且按照emp_no升序排列:*/-- 方法一:窗口函数select s.emp_no,s.salary,dense_rank() over(order by s.salary desc) as t_rankfrom salari原创 2021-12-22 17:22:07 · 1202 阅读 · 0 评论 -
SQL22 统计各个部门的工资记录数
描述有一个部门表departments简况如下:有一个,部门员工关系表dept_emp简况如下:有一个薪水表salaries简况如下:请你统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条记录sum,按照dept_no升序排序,以上例子输出如下:/*题目:请你统计各个部门的工资记录数,给出部门编码dept_no、部门名称dept_name以及部门在salaries表里面有多少条原创 2021-12-22 15:29:20 · 933 阅读 · 0 评论 -
SQL21 查找在职员工自入职以来的薪水涨幅情况
描述有一个员工表employees简况如下:有一个薪水表salaries简况如下:请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅growth,并按照growth进行升序,以上例子输出为(注: to_date为薪资调整某个结束日期,或者为离职日期,to_date='9999-01-01'时,表示依然在职,无后续调整记录)/*题目:请你查找在职员工自入职以来的薪水涨幅情况,给出在职员工编号emp_no以及其对应的薪水涨幅g原创 2021-12-22 15:08:59 · 238 阅读 · 2 评论 -
SQL19 查找所有员工的last_name和first_name以及对应的dept_name
描述有一个员工表employees简况如下:有一个部门表departments表简况如下:有一个,部门员工关系表dept_emp简况如下:请你查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工,以上例子输出如下:/* 题目:请你查找所有员工的last_name和first_name以及对应的dept_name,也包括暂时没有分配部门的员工*/select e.last_name原创 2021-12-22 13:48:04 · 196 阅读 · 0 评论 -
SQL18 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary
描述有一个员工表employees简况如下:有一个薪水表salaries简况如下:请你查找薪水排名第二多的员工编号emp_no、薪水salary、last_name以及first_name,不能使用order by完成,以上例子输出为:(温馨提示:sqlite通过的代码不一定能通过mysql,因为SQL语法规定,使用聚合函数时,select子句中一般只能存在以下三种元素:常数、聚合函数,groupby指定的列名。如果使用非group by的列名,sqlite的结果和m..原创 2021-12-22 11:37:29 · 527 阅读 · 0 评论 -
SQL17 获取当前薪水第二多的员工的emp_no以及其对应的薪水salary
描述有一个薪水表salaries简况如下:请你获取薪水第二多的员工的emp_no以及其对应的薪水salary,若有多个员工的薪水为第二多的薪水,则将对应的员工的emp_no和salary全部输出,并按emp_no升序排序。/*题目:请你获取薪水第二多的员工的emp_no以及其对应的薪水salary,若有多个员工的薪水为第二多的薪水,则将对应的员工的emp_no和salary全部输出,并按emp_no升序排序*/select emp_no,salaryfrom (s原创 2021-12-21 19:20:05 · 120 阅读 · 0 评论 -
SQL16 统计出当前各个title类型对应的员工当前薪水对应的平均工资
描述有一个员工职称表titles简况如下:有一个薪水表salaries简况如下:请你统计出各个title类型对应的员工薪水对应的平均工资avg。结果给出title以及平均工资avg,并且以avg升序排序,以上例子输出如下:/*题目:请你统计出各个title类型对应的员工薪水对应的平均工资avg。结果给出title以及平均工资avg,并且以avg升序排序*/select t.title,avg(s.salary) from titles t原创 2021-12-21 17:49:57 · 128 阅读 · 0 评论 -
SQL15 查找employees表emp_no与last_name的员工信息
描述有一个员工表employees简况如下:请你查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列,以上例子查询结果如下:/*题目:请你查找employees表所有emp_no为奇数,且last_name不为Mary的员工信息,并按照hire_date逆序排列*/select * from employees ewhere e.emp_no % 2 <> 0and e.last_name原创 2021-12-21 14:29:35 · 175 阅读 · 0 评论 -
SQL12 获取每个部门中当前员工薪水最高的相关信息
描述有一个员工表dept_emp简况如下:有一个薪水表salaries简况如下:获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列,以上例子输出如下:(注意: Mysql与Sqlite select 非聚合列的结果可能不一样)/*题目:获取每个部门中当前员工薪水最高的相关信息,给出dept_no, emp_no以及其对应的salary,按照部门编号dept_no升序排列语法:原创 2021-12-21 14:13:50 · 2512 阅读 · 0 评论 -
SQL11 获取所有员工当前的manager
描述有一个员工表dept_emp简况如下:第一行表示为员工编号为10001的部门是d001部门。有一个部门经理表dept_manager简况如下:第一行表示为d001部门的经理是编号为10002的员工。获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示,以上例子如下:/*题目:获取所有的员工和员工对应的经理,如果员工本身是经理的话则不显示 *//*方法一:left join 左连接+不等于 */select de.emp_no,dm.emp_原创 2021-12-21 10:16:58 · 321 阅读 · 0 评论 -
SQL10 获取所有非manager的员工emp_no
描述有一个员工表employees简况如下:有一个部门领导表dept_manager简况如下:请你找出所有非部门领导的员工emp_no,以上例子输出:原创 2021-12-21 09:52:25 · 207 阅读 · 0 评论 -
SQL8 找出所有员工当前薪水salary情况
描述有一个薪水表,salaries简况如下:请你找出所有员工具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示,以上例子输出如下:/*题目:请你找出所有员工具体的薪水salary情况,对于相同的薪水只显示一次,并按照逆序显示补充:WHERE语句在GROUP BY语句之前,SQL会在分组之前计算WHERE语句。HAVING语句在GROUP BY语句之后,SQL会在分组之后计算HAVING语句。对于distinct与group by的使用:1.当对系统的原创 2021-12-21 09:23:23 · 609 阅读 · 0 评论 -
SQL7 查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t
描述有一个薪水表,salaries简况如下:请你查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t,以上例子输出如下:/*题目:请查找薪水记录超过15次的员工号emp_no以及其对应的记录次数t*//*方法一:开窗函数+子查询*/select distinct t.* from (select S.emp_no, COUNT(*) OVER(partition by s.emp_no) t FROM salaries S ) t原创 2021-12-20 17:00:04 · 84 阅读 · 0 评论