員工信息查詢

如下數據表

CREATE TABLEdept_emp(
emp_noint(11) NOT NULL,
dept_nochar(4) NOT NULL,
from_datedate NOT NULL,
to_datedate 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));`

1、查找所有已經分配部門的員工的last_name和first_name
輸出描述

last_name first_name dept_no
Facello Georgi d001
省略 省略 省略
select last_name, first_name, dept_no
from employees, dept_emp
where employees.emp_no = dept_emp.emp_no;

2、查找所有員工的last_name和first_name以及對應部門編號dept_no,也包括展示沒有分配具體部門的員工
輸出描述

last_name first_name dept_no
Facello Georgi d001
省略 省略 省略
Sluis Mary NULL(在sqlite中此處爲空,MySQL爲NULL)

解析:由於有些員工可能沒有分配部門號,需要用左外連接就好了,即返回左表中所有的行,即便右表沒有滿足的條件

select last_name, first_name from employees
join dept_no from dept_emp where dept_emp.emp_no = employees.emp_no;

3、查找最晚入職員工的所有信息
輸出描述

emp_no birth_date first_name last_name gender hire_date
10018 1980-09-01 Ssmith
select * FROM employees order by hire_date desc limit 0,1;

4、查找入職員工時間排名倒數第三的員工所有信息

SELECT * FROM employees order by hire_date desc limit 2,1;

5、查找employees表所有emp_no爲奇數,且last_name不爲Mary的員工信息,並按照hire_date逆序排列

select * from employees 
where emp_no % 2 == 1
and last_name != 'Mary'
order by hire_date desc;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章