yuanyuan2017

创建表:

员工 employees
工资表 salary
部门 departments

create or replace table employees(
empID  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  ,
empName  VARCHAR(20)  NOT NULL , #姓名
sex  VARCHAR(4)  , #性别
birth  date, #出生日期
deptID  INT(20) , #部门编码
jobs VARCHAR(20) , #工作岗位
firJob date,  #开始工作的日期
hiredate date,#入职日期
politicalStatus  VARCHAR(20) ,  # 政治面貌
leader  INT(10) #领导编码
);

create or replace table salary(
sid  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  ,
empID INT(10) not null,
salary INT(10) not null,#工资
lastedit date #上次调薪日期
);

create or replace table departments(
deptid  INT(10)  NOT NULL  UNIQUE  PRIMARY KEY  ,
deptname VARCHAR(20) not null,#部门名称
faterdeptid INT(10)   # 上级部门编码
);

单表查

1、显示所有职工的基本信息。

SELECT * FROM `employees`;

2、查询所有职工所属部门的部门号,不显示重复的部门号。

SELECT DISTINCT deptID FROM employees

3、求出所有职工的人数.

SELECT COUNT(*) FROM employees

4、列出最高工和最低工资。

SELECT MAX(salary)AS \'最高工资\' ,MIN(salary) AS \'最低工资\' FROM salary

5、列出职工的平均工资和总工资。

SELECT AVG(salary)AS \'平均工资\',SUM(salary) AS \'总工资\' FROM salary

6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。

CREATE table work_date(
workID INT(10) NOT NULL UNIQUE PRIMARY KEY ,
empID INT(10) NOT NULL ,
employeesName VARCHAR(20) NOT NULL,
workDate date
);

7、显示所有女职工的年龄

SELECT employees.empID,employees.empName, TIMESTAMPDIFF(YEAR,birth,SYSDATE()) AS age FROM employees WHERE employees.sex = \'女\'


8、列出所有姓刘的职工的职工号、姓名和出生日期。
SELECT empID,empName, birth FROM employees WHERE empName LIKE \'刘%\'

9、列出1990年以前出生的职工的姓名、参加工作日期。

SELECT empName, firJob, birth FROM employees WHERE birth <\'1990-00-00\';

SELECT empName, firJob, birth FROM employees WHERE YEAR(birth) < 1990


10、列出总人数大于4的部门号和总人数。

SELECT deptID AS \'部门号\', COUNT(*) AS \'总人数\' FROM employees GROUP BY deptID HAVING COUNT(*)>= 4

11、列出所有陈姓和李姓的职工姓名。

SELECT empID,empName FROM employees WHERE empName LIKE \'刘%\' or empName LIKE \'李%\'

12、列出所有部门号为1002和1003的职工号、姓名。

SELECT empID,empName, deptID FROM employees WHERE deptID = \'1002\' or deptID = \'1003\';

SELECT empID,empName, deptID FROM employees WHERE deptID IN (\'1002\',\'1003\')


13、将职工表worker中的职工按出生的先后顺序排序。

SELECT * FROM employees ORDER BY birth ASC

14、求出各部门党员的人数。

SELECT deptID,COUNT(*) FROM employees WHERE politicalStatus = \'dangyuan\' GROUP BY deptID

 

多表查询:

1、列出每名职工的职工号、姓名和部门名。

SELECT employees.empID, employees.empName, departments.deptname FROM employees, departments WHERE employees.deptID = departments.deptid

2、列出市场部的所有女职工的姓名和政治面貌。

SELECT a.empName, a.politicalStatus FROM employees a, departments b WHERE b.deptname = \'市场部\' AND a.deptID = b.deptid


3、显示所有职工的姓名、部门名和工资数。

SELECT a.empID, a.empName, b.deptname, c.salary FROM employees a ,departments b, salary c WHERE a.deptID = b.deptid AND a.empID = c.empID

4、显示所有职工的职工号、姓名、部门名和工资,并按部门名顺序排列。
SELECT a.empID, a.empName, b.deptname, c.salary FROM employees a ,departments b, salary c WHERE a.deptID = b.deptid AND a.empID = c.empID
ORDER BY b.deptID

SELECT a.empID, a.empName, b.deptname, c.salary FROM employees a LEFT JOIN departments b ON a.deptID = b.deptid
LEFT JOIN salary c ON a.empID = c.empID ORDER BY b.deptID

5、显示各部门名和该部门的所有职工平均工资。

SELECT d.deptid, d.deptname, AVG(s.salary) AS \'平均工资\' FROM departments d LEFT JOIN employees a ON d.deptid = a.deptID LEFT JOIN
salary s ON a.empID = s.empID GROUP BY d.deptid


6、显示所有平均工资高于1200的部门名和对应的平均工资。

SELECT d.deptid, d.deptname, AVG(s.salary) AS \'平均工资\' FROM departments d LEFT JOIN employees a ON d.deptid = a.deptID LEFT JOIN
salary s ON a.empID = s.empID GROUP BY d.deptid HAVING AVG(s.salary)>1200


7、查询刘欣所在的部门。
SELECT a.empName, b.deptid, b.deptname FROM employees a ,departments b WHERE a.deptID = b.deptid AND a.empName = \'刘欣\'

8、查询部门名为财务处的职工的情况。
SELECT a.* FROM employees a ,departments b WHERE a.deptID = b.deptid AND b.deptname = \'财务处\'


9、列出工资在1000-2000之间的所有职工姓名。

SELECT a.empID, a.empName, b.salary FROM employees a ,salary b WHERE a.empID = b.empID AND b.salary>=1000 AND b.salary <2000

10、显示工资最高的前3名职工的职工号和姓名。

SELECT a.empID, a.empName, b.salary FROM employees a ,salary b WHERE a.empID = b.empID ORDER BY b.salary DESC LIMIT 3

 

 

 

分类:

技术点:

相关文章:

  • 2021-10-18
  • 2021-07-13
  • 2019-03-20
  • 2021-11-11
  • 2021-11-01
  • 2021-11-01
猜你喜欢
  • 2022-01-07
  • 2021-09-20
  • 2021-08-01
  • 2021-11-01
  • 2021-11-01
相关资源
相似解决方案