在MySQL中创建一个人事调动表,包含调动员工、调出部门、调动日期、调入部门、调动描述
时间: 2023-10-20 19:11:47 浏览: 49
好的,以下是在MySQL中创建一个人事调动表的SQL语句:
```
CREATE TABLE personnel_transfer (
transfer_id INT AUTO_INCREMENT PRIMARY KEY,
employee_id INT NOT NULL,
from_dept VARCHAR(50) NOT NULL,
transfer_date DATE NOT NULL,
to_dept VARCHAR(50) NOT NULL,
transfer_description VARCHAR(255) NOT NULL
);
```
解释一下:
- `personnel_transfer` 是表的名称;
- `transfer_id` 是自增长的主键,用于标识每一条调动记录;
- `employee_id` 是被调动的员工的ID,可以从员工表中获取;
- `from_dept` 是调出部门的名称;
- `transfer_date` 是调动日期,使用DATE类型;
- `to_dept` 是调入部门的名称;
- `transfer_description` 是调动描述,使用VARCHAR类型,长度为255。
注意,根据实际需要,你可能还需要在表中添加其他字段。
相关问题
MySQL创建一个员工表和部门表的交叉表
交叉表(Cross Tabulation),也称为跨表或透视表(Pivot Table),可以将数据按照行列的组合方式进行统计分析,非常方便。在MySQL中可以通过使用SELECT语句中的CASE WHEN语句来实现交叉表的功能。
下面是一个创建员工表和部门表的交叉表的示例:
假设我们有一个员工表(employee)和一个部门表(department),其中员工表包含员工的ID、姓名和所属部门ID,部门表包含部门ID和部门名称。现在我们需要创建一个交叉表,统计每个部门中的员工人数。
首先,我们可以使用如下的查询语句来获取每个部门中的员工人数:
```
SELECT department.name AS department_name, COUNT(employee.id) AS employee_count
FROM employee
JOIN department ON employee.department_id = department.id
GROUP BY department.name
```
这个查询语句使用了JOIN语句将员工表和部门表连接起来,然后使用GROUP BY语句对部门名称进行分组,并使用COUNT函数统计每个部门中的员工数量。
接下来,我们可以使用CASE WHEN语句将每个部门的员工数量转换为交叉表的形式:
```
SELECT
department.name AS department_name,
SUM(CASE WHEN employee_count <= 10 THEN 1 ELSE 0 END) AS employee_count_1_10,
SUM(CASE WHEN employee_count > 10 AND employee_count <= 20 THEN 1 ELSE 0 END) AS employee_count_11_20,
SUM(CASE WHEN employee_count > 20 AND employee_count <= 30 THEN 1 ELSE 0 END) AS employee_count_21_30,
SUM(CASE WHEN employee_count > 30 THEN 1 ELSE 0 END) AS employee_count_31_plus
FROM (
SELECT department_id, COUNT(id) AS employee_count
FROM employee
GROUP BY department_id
) AS employee_count_table
JOIN department ON employee_count_table.department_id = department.id
GROUP BY department_name
```
这个查询语句中,我们首先使用了一个子查询来获取每个部门中的员工数量,然后使用CASE WHEN语句将员工数量按照不同的范围进行分类。最后,使用JOIN语句将部门名称和交叉表中的数据进行连接,并使用GROUP BY语句对部门名称进行分组。
这样,我们就成功地创建了一个员工表和部门表的交叉表。
用MySQL创建三个表,要求有员工表,部门表,薪资表
好的,根据您的需求,我为您提供一份基础的员工信息管理系统的数据库设计方案,包括员工表、部门表、薪资表,建议使用MySQL数据库。具体方案如下:
1. 员工表
员工表包含员工的基本信息,如员工编号、姓名、性别、出生日期、入职日期、所属部门等。
```sql
CREATE TABLE `employee` (
`emp_id` varchar(10) NOT NULL COMMENT '员工编号',
`emp_name` varchar(20) NOT NULL COMMENT '员工姓名',
`gender` varchar(5) NOT NULL COMMENT '员工性别',
`birthday` date NOT NULL COMMENT '员工出生日期',
`hire_date` date NOT NULL COMMENT '员工入职日期',
`dept_id` varchar(10) NOT NULL COMMENT '所属部门编号',
PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='员工信息表';
```
2. 部门表
部门表包含部门的基本信息,如部门编号、部门名称、上级部门编号等。
```sql
CREATE TABLE `department` (
`dept_id` varchar(10) NOT NULL COMMENT '部门编号',
`dept_name` varchar(20) NOT NULL COMMENT '部门名称',
`parent_dept_id` varchar(10) NOT NULL COMMENT '上级部门编号',
PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='部门信息表';
```
3. 薪资表
薪资表包含员工的薪资信息,如员工编号、基本工资、奖金等。
```sql
CREATE TABLE `salary` (
`emp_id` varchar(10) NOT NULL COMMENT '员工编号',
`basic_salary` decimal(10,2) NOT NULL COMMENT '基本工资',
`bonus` decimal(10,2) NOT NULL COMMENT '奖金',
PRIMARY KEY (`emp_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='薪资信息表';
```
以上是一个基础的员工信息管理系统的数据库设计方案,您可以根据实际需求进行修改和完善。同时,为了保证数据的完整性和准确性,还需要为每个表添加相应的约束和索引。