当前位置: 首页 > news >正文

MySQL 数据库--查询

1. MySQL 概述

        MySQL 是一种开源的关系型数据库管理系统,以易用性和高性能著称。其广泛应用于多种场景,如网站数据存储、企业内务管理和大数据分析等。今天,我们将通过一个员工管理数据库的例子,来学习 MySQL 最重要的查询操作。

2. 创建员工表(emp_tab)

        在这个例子中,我们创建一张名为 emp_tab 的员工表,结构包含员工ID、姓名、性别、年龄、身份证号、电话号码、地址、薪资、奖金、工作经验、经理、部门、入职日期及员工状态。我们还将插入一些示例数据,以便用作后续的查询练习。

CREATE TABLE emp_tab (emp_id INT PRIMARY KEY,emp_name VARCHAR(50),emp_gender VARCHAR(10),emp_age INT,emp_identity VARCHAR(18),emp_phone VARCHAR(15),emp_address VARCHAR(100),emp_sal DECIMAL(10,2),emp_bonus DECIMAL(10,2),emp_exp INT,emp_manager INT,emp_dept VARCHAR(50),emp_hiredate DATE,emp_status VARCHAR(10)
);

3.插入数据

INSERT INTO emp_tab(emp_id, emp_name, emp_gender, emp_age, emp_identity, emp_phone, emp_address, emp_sal, emp_bonus, emp_exp, emp_manager, emp_dept, emp_hiredate, emp_status) VALUES
(1, '张三', '男', 18, '61042720051206481X', '193912622', '北京市朝阳区', 8000.00, 500.00, 4, 1, '研发部', '2004-12-06', '离职'),(2, '李四', '女', 25, '61042719970101234X', '13912345678', '上海市浦东新区', 9000.00, 600.00, 3, 2, '市场部', '2018-05-15', '在职'),(3, '王五', '男', 30, '61042719930102345X', '13812345678', '广州市天河区', 10000.00, 700.00, 5, 3, '销售部', '2016-08-20', '在职'),(4, '赵六', '女', 22, '61042719990103456X', '13712345678', '深圳市南山区', 8500.00, 550.00, 2, 1, '人事部', '2020-02-10', '离职'),(5, '钱七', '男', 28, '61042719950104567X', '13612345678', '成都市锦江区', 9500.00, 650.00, 4, 2, '研发部', '2019-03-25', '在职'),(6, '孙八', '女', 35, '61042719870105678X', '13512345678', '杭州市西湖区', 12000.00, 800.00, 8, 3, '市场部', '2015-11-30', '在职'),(7, '周九', '男', 40, '61042719800106789X', '13412345678', '武汉市武昌区', 11000.00, 750.00, 10, 1, '销售部', '2013-07-15', '离职'),(8, '吴十', '女', 26, '61042719960107890X', '13312345678', '南京市鼓楼区', 7800.00, 400.00, 3, 2, '人事部', '2021-01-05','在职'),(9, '郑十一','男' ,32,'61042719850108901X','13212345678','天津市和平区' ,9600.00 ,500.00 ,6 ,3 ,'研发部' ,'2017-09-12' ,'离职'),(10,'冯十二','女' ,29,'61042719940109012X','13112345678','青岛市市南区' ,8400.00 ,450.00 ,5 ,1 ,'市场部' ,'2018-06-18' ,'在职'),(11,'陈十三','男' ,38,'61042719830109123X','13012345678','厦门市思明区' ,11500.00 ,700.00 ,7 ,2 ,'销售部' ,'2014-04-22' ,'在职'),(12,'褚十四','女' ,27,'61042719970109234X','12912345678','沈阳市沈河区' ,9200.00 ,600.00 ,4 ,3 ,'人事部' ,'2020-05-30' ,'离职'),(13,'卫十五','男' ,31,'61042719860109345X','12812345678','哈尔滨市道里区' ,10500.00 ,550.00 ,6 ,1 ,'研发部' ,'2016-08-08' ,'在职'),(14,'蒋十六','女' ,24,'61042719980109456X','12712345678','合肥市包河区' ,8700.00 ,500.00 ,2 ,2 ,'市场部' ,'2021-03-15' ,'在职'),(15,'沈十七','男' ,39,'61042719810109567X','12612345678','福州市鼓楼区' ,11200.00 ,800.00 ,9 ,3 ,'销售部' ,'2015-10-10' ,'离职');

4. 基础查询

        基础查询是获取数据库中数据的第一步,使用 SELECT 语句可以快速查看表中的所有数据,也可以选择特定的列:

SELECT * FROM emp_tab;  -- 查询所有员工信息SELECT emp_name AS 姓名, emp_gender AS 性别, emp_sal AS 薪资 FROM emp_tab;  -- 查询特定列

AS 可以用于起别名

5. 条件查询

        通过 WHERE 子句可以对查询结果进行过滤,选择符合条件的记录。例如,查询薪资高于 5000 并且状态为“在职”的员工:

SELECT * FROM emp_tab WHERE emp_sal >= 5000.00 AND emp_status = '在职';

and ,or, not 用来进行逻辑判断

6. 排序与分组查询

为了使结果更易读,可以使用 ORDER BY 进行排序,并使用 GROUP BY 进行分组统计:

SELECT * FROM emp_tab ORDER BY emp_sal DESC;  -- 按薪资降序排列SELECT emp_dept, COUNT(emp_dept) AS 人数 FROM emp_tab GROUP BY emp_dept;  -- 统计各部门人数

count() 是统计计数的函数,还有,MAX(),min(),sum(),avg()等聚合函数方便查询

7. 模糊查询

模糊查询允许使用 LIKE 实现模式匹配,便于查找特定数据

SELECT * FROM emp_tab WHERE emp_name LIKE '张%';  -- 查询名字以“张”开头的员工

 这里需要注意两个通配符的使用  %   _

_ 可以代替字符,例如下面这个例子,就表示查询 以 李 姓 并且两个字 的人

%王% 表示 王 可以出现在任意位置,平常我们用浏览器搜索时,就和这个通配符的效果类似


SELECT * FROM emp_tab where emp_name like '张%';
SELECT * FROM emp_tab where emp_name like '%王%';  -- 任意位置
select * from emp_tab where emp_name like '李_';

8. 数据更新与删除

使用 UPDATE 语句可以更改表中现有记录,DELETE 则用于删除不再需要的数据:

UPDATE emp_tab SET emp_sal = emp_sal * 1.1 WHERE emp_hiredate < '2024-01-01';  -- 更新薪资DELETE FROM emp_tab WHERE emp_status = '离职';  -- 删除离职员工记录

9. 复杂组合查询示例

        在实际应用中,可能需要结合多种条件进行复杂查询。例如,查询IT部门员工的平均薪资和员工总数:

SELECT emp_dept, COUNT(emp_dept) AS 人数, AVG(emp_sal) AS 平均工资 FROM emp_tab WHERE emp_dept = 'IT' GROUP BY emp_dept;

10. 总结与展望

        掌握 SQL 查询的灵活性,能够极大提高数据处理的效率和科学性。这些主要是针对一张表的单表查询,后面会涉及到主键和约束,多表联合查询,希望这篇博客能为你提供有益的 SQL 查询知识,让你能够处理单表查询,后面我会继续更新一些多表联合查询的文章,敬请期待……


http://www.mrgr.cn/news/51495.html

相关文章:

  • C++ 中的虚函数表(vtable)与继承:单继承与多继承的分析
  • 2020年计算机网络408真题解析
  • 基于Spring Boot的企业客户管理系统
  • Codeforces Round 770 (Div. 2)
  • 一文教会你PyTorch 实现人脸识别
  • QT<28> Qt中对.ini配置文件的读写
  • 滚雪球学Redis[6.4讲]:Redis消息队列:构建高效的消息通信与任务调度系统
  • 2024软考网络工程师笔记 - 第3章.广域通信网
  • c++STL——map与set的使用及介绍
  • QT--Qlabel学习、获取文本和设置文本、文本对齐方式、文本换行、显示图片
  • 不坑盒子Office插件,2024年10月,全部功能列表
  • dlib库实现人脸检测
  • 【算法题解】二分查找的经典问题解析
  • SAP 第三方销售简介
  • 【C语言教程】【常用类库】(十四)可移植库 - <unistd.h> 和 <sys/types.h>
  • html转pdf 分页问题 包含自定义页头页尾
  • 5G NR:UE初始接入信令流程浅介
  • SQLServer-ASYNC_NETWORK_IO等待事件
  • 光伏项目开发360°管控,规避潜在风险
  • java 利用mpxj解析MPP及结合jacob导出MPP