MySQL员工打卡日志表——数据库练习

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
简介: MySQL员工打卡日志表——数据库练习

简单的员工打卡日志表的建表语句以及对应的测试数据。为了简单明了,我们将使用一个包含以下字段的表:

列名 数据类型 描述
id INT 记录的唯一标识符
name VARCHAR(50) 员工姓名
department VARCHAR(50) 员工所在的部门
log_date DATE 打卡日期
time_in TIME 打卡时间(上班)
time_out TIME 打卡时间(下班)

建表语句

CREATE TABLE Employee_Attendance_Log (
    id INT AUTO_INCREMENT PRIMARY KEY,
    name VARCHAR(50),
    department VARCHAR(50),
    log_date DATE,
    time_in TIME,
    time_out TIME
);

运行效果:

测试信息

INSERT INTO Employee_Attendance_Log (name, department, log_date, time_in, time_out)
VALUES 
    ('张三', '销售部', '2023-07-01', '09:00', '18:00'),
    ('李四', '市场部', '2023-02', '09:30', '17:30'),
    ('王五', '人力资源部', '2023-07-03', '11:00', NULL),
    ('赵六', '技术部', '2023-07-04', NULL, '17:30'),
    ('张三', '销售部', '2023-07-05', '12:30', '18:30'),
    ('李四', '市场部', '2023-07-06', '13:35', '16:45'),
    ('王五', '人力资源部', '2023-07-07', '16:38', NULL),
    ('赵六', '技术部', '2023-07-14', NULL, NULL),
    ('张三', '销售部', '2023-07-15', '16:45', ''),
    ('李四', '市场部', '2023-07-16', '', ''),
    ('王五', '人力资源部', '', '', '21:45');

运行效果:

表查询

查询语句:

select * from Employee_Attendance_Log;

运行效果:

练习题

题目1:如何查询在 ‘人力资源部’ 的所有员工的出勤日志?

答案:可以使用以下查询语句来查询在 ‘人力资源部’ 的所有员工的出勤日志:

SELECT * FROM Employee_Attendance_Log WHERE department = '人力资源部';

解析:根据查询条件,只需要在 ‘WHERE’ 子句中指定部门字段为 ‘人力资源部’,即可查询出在 ‘人力资源部’ 的所有员工的出勤日志。

题目2:如何查询在 ‘技术部’ 的员工的出勤日志中未填写离开时间的记录?

答案:可以使用以下查询语句来查询在 ‘技术部’ 的员工的出勤日志中未填写离开时间的记录:

SELECT * FROM Employee_Attendance_Log WHERE department = '技术部' AND time_out IS NULL;

解析:根据查询条件,需要同时满足部门字段为 ‘技术部’ 和离开时间字段为 NULL,即可查询到在 ‘技术部’ 的员工的出勤日志中未填写离开时间的记录。

题目3:如何统计每个月份内各部门的员工出勤总次数?

答案:可以使用以下查询语句来统计每个月份内各部门的员工出勤总次数:

SELECT department, MONTH(log_date) AS Month, COUNT(*) AS AttendanceCount FROM Employee_Attendance_Log GROUP BY department, Month;

解析:首先根据表名和字段名选择出需要统计的字段,然后使用 GROUP BY 子句按照部门和月份进行分组,最后使用 COUNT(*) 函数统计每个月份内各部门的员工出勤总次数。

题目4:如何查询在特定日期范围内所有员工的出勤日志?

答案:可以使用以下查询语句来查询在特定日期范围内所有员工的出勤日志:

SELECT * FROM Employee_Attendance_Log WHERE log_date BETWEEN '2023-07-01' AND '2023-07-31';

解析:根据查询条件,只需要在 ‘WHERE’ 子句中指定日期字段在特定日期范围内即可查询到在该范围内的所有员工的出勤日志。

相关文章
|
16天前
|
SQL 数据可视化 关系型数据库
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
轻松入门MySQL:深入探究MySQL的ER模型,数据库设计的利器与挑战(22)
|
16天前
|
存储 关系型数据库 MySQL
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
轻松入门MySQL:数据库设计之范式规范,优化企业管理系统效率(21)
|
12天前
|
存储 关系型数据库 MySQL
MySQL基础入门:数据库操作全攻略
MySQL基础入门:数据库操作全攻略
44 0
|
1天前
|
关系型数据库 MySQL 分布式数据库
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
《MySQL 简易速速上手小册》第6章:MySQL 复制和分布式数据库(2024 最新版)
9 2
|
1天前
|
JavaScript Java 测试技术
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
基于Java的公司员工工作日志办公系统的设计与实现(源码+lw+部署文档+讲解等)
27 3
|
3天前
|
SQL NoSQL 关系型数据库
初识MySQL数据库——“MySQL数据库”
初识MySQL数据库——“MySQL数据库”
|
5天前
|
关系型数据库 MySQL 数据库
数据库基础(mysql)
数据库基础(mysql)
|
5天前
|
SQL 关系型数据库 数据库
【后端面经】【数据库与MySQL】SQL优化:如何发现SQL中的问题?
【4月更文挑战第12天】数据库优化涉及硬件升级、操作系统调整、服务器/引擎优化和SQL优化。SQL优化目标是减少磁盘IO和内存/CPU消耗。`EXPLAIN`命令用于检查SQL执行计划,关注`type`、`possible_keys`、`key`、`rows`和`filtered`字段。设计索引时考虑外键、频繁出现在`where`、`order by`和关联查询中的列,以及区分度高的列。大数据表改结构需谨慎,可能需要停机、低峰期变更或新建表。面试中应准备SQL优化案例,如覆盖索引、优化`order by`、`count`和索引提示。优化分页查询时避免大偏移量,可利用上一批的最大ID进行限制。
32 3
|
6天前
|
存储 关系型数据库 MySQL
【后端面经】【数据库与MySQL】为什么MySQL用B+树而不用B树?-02
【4月更文挑战第11天】数据库索引使用规则:`AND`用`OR`不用,正用反不用,范围中断。索引带来空间和内存代价,包括额外磁盘空间、内存占用和数据修改时的维护成本。面试中可能涉及B+树、聚簇索引、覆盖索引等知识点。MySQL采用B+树,因其利于范围查询和内存效率。数据库不使用索引可能因`!=`、`LIKE`、字段区分度低、特殊表达式或全表扫描更快。索引与NULL值处理在不同数据库中有差异,MySQL允许NULL在索引中的使用。
11 3
|
7天前
|
关系型数据库 MySQL 数据库连接
Django(四):Django项目部署数据库及服务器配置详解(MySQL)
Django(四):Django项目部署数据库及服务器配置详解(MySQL)
30 11