SQL相关习题进阶讲解

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;

(0)
上一篇 2022年3月21日
下一篇 2022年3月21日

相关推荐