MySQL 数据库表与查询操作实战案例

2025-08-13 22:50

本文主要是介绍MySQL 数据库表与查询操作实战案例,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

《MySQL数据库表与查询操作实战案例》本文将通过实际案例,详细介绍MySQL中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手,感兴趣的朋友跟随小编一起看看吧...

MySQL 数据库表操作与查询实战案例

在数据库学习过程中,熟练掌握表的创建、数据插入及各类查询操作是基础且重要的技能。本文将通过实际案例,详细介绍 MySQL 中数据库表的设计、数据插入以及常用的查询操作,帮助初学者快速上手。

项目一:产品相关数据库设计与创建

一、数据库及表结构设计

本项目主要创建产品相关的数据库及员工表、订单表、发票表,用于存储产品业务相关数据。

二、数据库与表的创建

  • 新建产品库 mydb6_product
mysql> create database mydb6_product;
Query OK, 1 row affected (0.00 sec)
mysql> use mydb6_product;
Database changed
  • 在该库中新建 4 张表,表结构要求如下:
    • employees 表:
      • 列 1:id,整型,主键
      • 列 2:name,字符串(最大长度 50 ),不能为空
      • 列 3:age,整型
      • 列 4:gender,字符串(最大长度 10 ),不能为空,默认值 unknown
      • 列 5:salary,浮点型
    mysql> create table employees(id int primary key,name varchar(50) not null,age int,gender varchar(10) not null default 'unknown',salary float);
    Query OK, 0 rows affected (0.02 sec)
    • orders 表:
      • 列 1:id,整型,主键
      • 列 2:name,字符串(最大长度 100 ),不能为空
      • 列 3:price,浮点型
      • 列 4:quantity,整型
      • 列 5:category,字符串(最大长度 50 )
    mysql> create table orders(id int primary key,name varchar(100) not null,price float,quantity int,category varchar(50));
    Query OK, 0 rows affected (0.01 sec)
    
    • invoices 表:
      • 列 1:number,整型,主键自增长
      • 列 2:order_id,整型,外键关联到 orders 表的 id
      • 列 3:in_date,日期型
      • 列 4:total_amount,浮点型,要求数据大于 0
mysql> create table invoices(number int primary key auto_increment, order_id int ,in_date date,itotal_amount float check(total_amount>0),foreign key (order_id) references orders(id));
Query OK, 0 rows affected (0.02 sec)

项目二:员工信息数据库操作实战

一、数据库及表结构创建

本项目创建员工信息数据库,实现员工信息的插入与各类查询操作。

-- 创建员工数据库
create database mydb8_worker;
-- 使用员工数据库
use mydb8_worker;
-- 创建员工表(t_worker)
create table t_worker(
    department_id int(11) not null comment '部门号',
    worker_id int(11) primary key not null comment '职工号',
    worker_date date not null comment '工作时间',
    wages float(8,2) not null comment '工资',
    politics varchar(10) not null default '群众' comment '政治面貌',
    name varchar(20) not null comment '姓名',
    borth_date date not null comment '出生日期' 
);

二、数据插入操作

insert into t_worker values (101,1001,'2015-5-4',7500.00,'群众','张春燕','1990-7-1');
insert into t_worker values (101,1002,'2019-2-6',5200.00,'团员','李名博','1997-2-8');
insert into t_worker values (102,1003,'2008-1-4',10500.00,'党员','王博涵','1983-6-8');
insert into t_worker values (102,1004,'2016-10-10',5500.00,'群众','赵小军','1994-9-5');
insert into t_worker values (102,1005,'2014-4-1',8800.00,'党员','钱有财','1992-12-30');
insert into t_worker values (103,1006,'2019-5-5',5500.00,'党员','孙菲菲','1996-9-2');

三、查询操作练习

  1. 查询所有员工信息
mysql> select * from t_worker;
+---------------+-----------+-------------+----------+----------+-----------+------------+
| department_id | worker_id | worker_date | wages    | politics | name      | borth_date |
+---------------+-----------+-------------+----------+----------+-----------+------------+
|           101 |      1001 | 2015-05-04  |  7500.00 | 群众     | 张春燕    | 1990-07-01 |
|           101 |      1002 | 2019-02-06  |  5200.00 | 团员     | 李名博    | 1997-02-08 |
|           102 |      1003 | 2008-01-04  | 10500.00 | 党员     | 王博涵    | 编程1983-06-08 |
|           102 |      1004 | 2016-10-10  |  5500.00 | 群众     | 赵小军    | 1994-09-05 |
|           102 |      1005 | 2014-04-01  |  8800.00 | 党员     | 钱有财    | 1992-12-30 |
|           103 |      1006 | 2019-05-05  |  5500.00 | 党员     | 孙菲菲    | 1996-09-02 |
+---------------+-----------+-------------+----------+----------+-----------+------------+
6 rows in set (0.00 sec)

2. 查询去重后的部门 ID

mysql> select distinct department_id from t_worker;
+---------------+
| department_id |
+---------------+
|           101 |
|           102 |
|           103 |
+---------------+
3 rows in set (0.01 sec)

3. 统计员工总数

mysql> select count(name) from t_worker;
+-------------+
| count(name) |
+-------------+
|           6 |
+-------------+
1 row in set (0.01 sec)

4. 查询最高工资和最低工资

mysql> select max(wages),min(wages) from t_worker;
+------------+------------+
| max(wages) | min(wages) |
+------------+------------+
|   10500.00 |    5200.00 |
+------------+------------+
1 row in set (0.00 sec)

5. 计算平均工资和工资总和

mysql> select avg(wages),sum(wages) from t_worker;
+-------------+------------+
| avg(wages)  | sum(wages) |
+-------------+------------+
| 7166.666667 |   43000.00 |
+-------------+------------+
1 row in set (0.00 seChina编程c)

6. 创建工作日期表

mysql> create table 工作日期 as select worker_id,name,worker_date from t_worker;
Query OK, 6 rows affected (0.02 sec)
Records: 6  Duplicates: 0  Warnings: 0
mysql> select * from 工作日期;
+-----------+-----------+-------------+
| worker_id | name      | worker_date |
+-----------+-----------+-------------+
|      1001 | 张春燕    | 2015-05-04  |
|      1002 | 李名博    | 2019-02-06  |
|      1003 | 王博涵    | 2008-01-04  |
|      1004 | 赵小军    | 2016-10-10  |
|      1005 | 钱有财    | 2014-04-01  |
|      1006 | 孙菲菲    | 2019-05-05  |
+-----------+-----------+-------------+
6 rowsChina编程 in set (0.00 sec)

7. 查询党员的出生日期和姓名

mysql> select borth_date,name from t_worker where politics = '党员';
+------------+-----------+
| borth_date | name      |
+------------+-----------+
| 1983-06-08 | 王博涵    |
| 1992-12-30 | 钱有财    |
| 1996-09-02 | 孙菲菲    |
+------------+-----------+
3 rows in set (0.00 sec)

8. 查询工资在 4000 到 8000 之间的员工

mysql> select name,wages from t_worker where wages between 4000 and 8000;
+-----------+---------+
| name      | wages   |
+-----------+---------+
| 张春燕    | 7500.00 |
| 李名博    | 5200.00 |
| 赵小军    | 5500.00 |
| 孙菲菲    | 5500.00 |
+-----------+---------+
4 rows in set (0.01 sec)

9. 查询姓名以 “孙” 或 “李” 开头的员工

mysql> select name from t_worker where name like '孙%' or name like '李%';
+-----------+
| name      |
+-----------+
| 李名博    |
| 孙菲菲    |
+-----------+
2 rows in set (0.00 sec)

10. 查询非党员且部门为 102 或 103 的员工姓名和工号

mysql> select name,worker_id from t_worker where politics != '党员' and (department_id =102 or department_id = 103);
+-----------+-----------+
| name      | worker_id |
+-----------+-----------+
| 赵小军    |      1004 |
+-----------+-----------+
1 row in set (0.00 sec)

11. 按出生日期排序查询所有员工

mysql> select * from t_worker order by borth_date;
+---------------+-----------+-------------+----------+----------+-----------+------------+
| department_id | worker_id | worker_date | wages    | politics | name      | borth_date |
+---------------+-----------+-------------+----------+----------+-----------+------------+
|           102 |      1003 | 2008-01-04  | 10500.00 | 党员     | 王博涵    | 1983-06-08 |
|           101 |      1001 | 2015-05-04  |  7500.00 | 群众     | 张春燕    | 1990-07-01 |
|           102 |      1005 | 2014-04-01  |  8800.00 | 党员     | 钱有财    | 1992-12-30 |
|           102 |      1004 | 2016-10-10  |  5500.00 | 群众     | 赵小军    | 1994-09-05 |
|           103 |      1006 | 2019-05-05  |  5500.00 | 党员     | 孙菲菲    | 1996-09-02 |
|           101 |      1002 | 2019-02-06  |  5200.00 | 团员     | 李名博    | 1997-02-08 |
+---------------+-----------+-------------+----------+----------+-----------+------------+
6 rows in set (0.00 sec)

12. 按工资排序取前 3 名员工的工号和姓名

mysql> select worker_id,name from t_worker order by wages limit 3;
+-----------+-----------+
| worker_id | name      |
+-----------+-----------+
|      1002 | 李名博    |
|      1004 | 赵小军    |
|      1006 | 孙菲菲    |
+-----------+-----------+
3 rows in set (0.00 sec)

13. 按部门统计党员人数

mysql> select department_id,count(*) from t_worker where politics = '党员' group by department_id;
+---------------+----------+
| department_id | count(*) |
+---------------+----------+
|           102 |        2 |
|   javascript        103 |        1 |
+---------------+----------+
2 rows in set (0.00 sec)

14. 按部门统计工资总和及平均工资(保留 2 位小数)

mysql> select department_id,sum(wages),round(avg(wages),2) from t_worker group by department_id;
+---------------+------------+---------------------+
| department_id | sum(wages) | round(avg(wages),2) |
+---------------+------------+---------------------+
|           101 |   12700.00 |                6350 |
|           102 |   24800.00 |             8266.67 |
|           103 |    5500.00 |                5500 |
+---------------+------------+---------------------+
3 rows in set (0.00 sec)

15. 查询员工人数不少于 3 人的部门

mysql> select department_id,count(*) from t_worker group by department_id having count(*)>=3;
+---------------+----------+
| department_id | count(*) |
+---------------+----------+
|           102 |        3 |
+---------------+----------+
1 row in set (0.00 sec)

四、总结

本文通过实际案例介绍了 MySQL 数据库的基本操作,包括数据库和表的创建、数据插入以及各种常用查询。这些操作是数据库开发的基础,掌握这些技能可以帮助我们更好地处理和分析数据。在实际应用中,还需要根据具体业务场景灵活运用这些查询语句,结合索引优化等技术,提高查询效率。

希望本文对初学者有所帮助,后续可以继续深入学习多表连接查询、子查询、存储过程等更高级的数据库操作。

到此这篇关于MySQL 数据库表操作与查询实战案例的文章就介绍到这了,更多相关mysql查询数据表内容请http://www.chinasem.cn搜索China编程(www.chinasem.cn)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程China编程(www.chinasem.cn)!

这篇关于MySQL 数据库表与查询操作实战案例的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1155717

相关文章

MySQL 数据库表操作完全指南:创建、读取、更新与删除实战

《MySQL数据库表操作完全指南:创建、读取、更新与删除实战》本文系统讲解MySQL表的增删查改(CURD)操作,涵盖创建、更新、查询、删除及插入查询结果,也是贯穿各类项目开发全流程的基础数据交互原... 目录mysql系列前言一、Create(创建)并插入数据1.1 单行数据 + 全列插入1.2 多行数据

MySQL中优化CPU使用的详细指南

《MySQL中优化CPU使用的详细指南》优化MySQL的CPU使用可以显著提高数据库的性能和响应时间,本文为大家整理了一些优化CPU使用的方法,大家可以根据需要进行选择... 目录一、优化查询和索引1.1 优化查询语句1.2 创建和优化索引1.3 避免全表扫描二、调整mysql配置参数2.1 调整线程数2.

MySQL 临时表与复制表操作全流程案例

《MySQL临时表与复制表操作全流程案例》本文介绍MySQL临时表与复制表的区别与使用,涵盖生命周期、存储机制、操作限制、创建方法及常见问题,本文结合实例代码给大家介绍的非常详细,感兴趣的朋友跟随小... 目录一、mysql 临时表(一)核心特性拓展(二)操作全流程案例1. 复杂查询中的临时表应用2. 临时

Linux查询服务器 IP 地址的命令详解

《Linux查询服务器IP地址的命令详解》在服务器管理和网络运维中,快速准确地获取服务器的IP地址是一项基本但至关重要的技能,下面我们来看看Linux中查询服务器IP的相关命令使用吧... 目录一、hostname 命令:简单高效的 IP 查询工具命令详解实际应用技巧注意事项二、ip 命令:新一代网络配置全

MySQL实现多源复制的示例代码

《MySQL实现多源复制的示例代码》MySQL的多源复制允许一个从服务器从多个主服务器复制数据,这在需要将多个数据源汇聚到一个数据库实例时非常有用,下面就来详细的介绍一下,感兴趣的可以了解一下... 目录一、多源复制原理二、多源复制配置步骤2.1 主服务器配置Master1配置Master2配置2.2 从服

从基础到高阶详解Python多态实战应用指南

《从基础到高阶详解Python多态实战应用指南》这篇文章主要从基础到高阶为大家详细介绍Python中多态的相关应用与技巧,文中的示例代码讲解详细,感兴趣的小伙伴可以跟随小编一起学习一下... 目录一、多态的本质:python的“鸭子类型”哲学二、多态的三大实战场景场景1:数据处理管道——统一处理不同数据格式

Linux查询服务器系统版本号的多种方法

《Linux查询服务器系统版本号的多种方法》在Linux系统管理和维护工作中,了解当前操作系统的版本信息是最基础也是最重要的操作之一,系统版本不仅关系到软件兼容性、安全更新策略,还直接影响到故障排查和... 目录一、引言:系统版本查询的重要性二、基础命令解析:cat /etc/Centos-release详

MySQL 临时表创建与使用详细说明

《MySQL临时表创建与使用详细说明》MySQL临时表是存储在内存或磁盘的临时数据表,会话结束时自动销毁,适合存储中间计算结果或临时数据集,其名称以#开头(如#TempTable),本文给大家介绍M... 目录mysql 临时表详细说明1.定义2.核心特性3.创建与使用4.典型应用场景5.生命周期管理6.注

MySQL磁盘空间不足问题解决

《MySQL磁盘空间不足问题解决》本文介绍查看空间使用情况的方式,以及各种空间问题的原因和解决方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧... 目录查看空间使用情况Binlog日志文件占用过多表上的索引太多导致空间不足大字段导致空间不足表空间碎片太多导致空间不足临时表空间

MySQL进行分片合并的实现步骤

《MySQL进行分片合并的实现步骤》分片合并是指在分布式数据库系统中,将不同分片上的查询结果进行整合,以获得完整的查询结果,下面就来具体介绍一下,感兴趣的可以了解一下... 目录环境准备项目依赖数据源配置分片上下文分片查询和合并代码实现1. 查询单条记录2. 跨分片查询和合并测试结论分片合并(Shardin