创建部门、员工表和工资等级表代码
时间: 2024-01-20 15:04:11 浏览: 34
下面是使用MySQL语言创建部门表、员工表和工资等级表的示例代码:
创建部门表:
```
CREATE TABLE department (
dept_id INT NOT NULL AUTO_INCREMENT,
dept_name VARCHAR(50) NOT NULL,
PRIMARY KEY (dept_id)
);
```
创建员工表:
```
CREATE TABLE employee (
emp_id INT NOT NULL AUTO_INCREMENT,
emp_name VARCHAR(50) NOT NULL,
dept_id INT NOT NULL,
salary DECIMAL(10,2) NOT NULL,
hire_date DATE NOT NULL,
PRIMARY KEY (emp_id),
FOREIGN KEY (dept_id) REFERENCES department(dept_id)
);
```
创建工资等级表:
```
CREATE TABLE salary_grade (
grade INT NOT NULL,
min_salary DECIMAL(10,2) NOT NULL,
max_salary DECIMAL(10,2) NOT NULL,
PRIMARY KEY (grade)
);
```
以上是示例代码,可以根据实际需求进行修改。
相关问题
mysql创建部门表和员工表
可以使用以下的 SQL 语句来创建部门表和员工表:
创建部门表:
```
CREATE TABLE department (
id INT PRIMARY KEY,
name VARCHAR(50)
);
```
创建员工表:
```
CREATE TABLE employee (
id INT PRIMARY KEY,
name VARCHAR(50),
department_id INT,
FOREIGN KEY (department_id) REFERENCES department(id)
);
```
这样就创建了一个名为 `department` 的部门表和一个名为 `employee` 的员工表。部门表包含两个字段 `id` 和 `name`,员工表包含三个字段 `id`、`name` 和 `department_id`,其中 `department_id` 是外键,关联到部门表的 `id` 字段。
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语句对部门名称进行分组。
这样,我们就成功地创建了一个员工表和部门表的交叉表。