欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

SQL相关习题进阶讲解

程序员文章站 2022-03-09 22:30:03
1、 create table`employees` ( `emp_no` int(11) not null, `birth_date` date not null, `first_name` va...

1、

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`));

查找最晚入职员工的所有信息

select * from employees

order byhire_date desc limit 0,1;

或者

select * from employees where hire_date = (selectmax(hire_date) from employees);

limitm,n : 表示从第m+1条开始,取n条数据;

limit n : 表示从第0条开始,取n条数据,是limit(0,n)的缩写。

本题limit 2,1 表示从第(2+1)条数据开始,取一条数据,即入职员工时间排名倒数第三的员工。

2、

同一

查找入职员工时间排名倒数第三的员工所有信息

select * from employees

order byhire_date desc limit2,1;

select *

from employees

where hire_date = (select distinct hire_date

fromemployees

orderby hire_date desc

limit2,1);

3、

create table `dept_manager` (

`dept_no` char(4) not null,

`emp_no` int(11) not null,

`from_date` date not null,

`to_date` date not null,

primary key (`emp_no`,`dept_no`));

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`));

查找各个部门当前(to_date='9999-01-01')领导当前薪水详情以及其对应部门编号dept_no

select salaries.*,dept_manager.dept_no from salaries,dept_manager

where salaries.emp_no = dept_manager.emp_no

and salaries.to_date = "9999-01-01"

and dept_manager.to_date = "9999-01-01";

4、

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`));

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`));

查找所有已经分配部门的员工的last_name和first_name

select e.last_name,e.first_name, d.dept_no

from dept_emp d, employees e

where d.emp_no = e.emp_no

5、

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`));

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`));

查找所有员工的last_name和first_name以及对应部门编号dept_no,也包括展示没有分配具体部门的员工

select e.last_name,e.first_name,d.dept_no

from employees e

left join dept_emp d

on e.emp_no =d.emp_no;