資料庫操作練習1
阿新 • • 發佈:2019-01-03
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`));
輸入描述:
無
輸出描述:
emp_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10008 | 1958-02-19 | Saniya | Kalloufi | M | 1994-09-15 |
select * from employees order by hire_date desc limit 1;
LIMIT m,n : 表示從第m+1條開始,取n條資料;
LIMIT n : 表示從第0條開始,取n條資料,是limit(0,n)的縮寫。
本題limit 0,1 表示從第(0+1)條資料開始,取一條資料,即取出最晚入職員工。
Sql2:
select * from employees where hire_date=(select max(hire_date)from employees);
上述查詢為子查詢,先找出 hire_date 欄位的最大值,再把該值當成 employees 表的 hire_date 查詢條件。 從employees中選出最大的值
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_no`));
輸入描述:
無
輸出描述:
emp_no | birth_date | first_name | last_name | gender | hire_date |
---|---|---|---|---|---|
10005 | 1955-01-21 | Kyoichi | Maliniak | M | 1989-09-12 |
Sql1:
select * from employees order by hire_date desc limit 2,1;
Sql2:
網友說可能有多個,而且要去重於是:
select * from employees where hire_date=(select distinct hire_date from employees order by hire_date desc limit 2,1);
Sql3:
先取倒數第三個,然後排序(升序)取第一個
select * from (select * from employees order by hire_date desc limit 3) order
by hire_date asc limit 1;
3. 查詢各個部門當前領導當前薪水詳情以及其對應部門編號dept_no
題目描述
查詢各個部門當前(to_date='9999-01-01')領導當前薪水詳情以及其對應部門編號dept_noCREATE 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`));
輸入描述:
無
輸出描述:
emp_no | salary | from_date | to_date | dept_no |
---|---|---|---|---|
10002 | 72527 | 2001-08-02 | 9999-01-01 | d001 |
10004 | 74057 | 2001-11-27 | 9999-01-01 | d004 |
10005 | 94692 | 2001-09-09 | 9999-01-01 | d003 |
10006 | 43311 | 2001-08-02 | 9999-01-01 | d002 |
10010 | 94409 | 2001-11-23 | 9999-01-01 | d006 |
select salaries.emp_no, salaries.salary, salaries.from_date, salaries.to_date, dept_manager.dept_no
from salaries inner join dept_manager on dept_manager.emp_no=salaries.emp_no where salaries.to_date='9999-01-01'
and dept_manager.to_date='9999-01-01'