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

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.kler.cn/news/350670.html

相关文章:

  • 使用Python来下一场深夜雪
  • 微信小程序启动相机功能
  • 论文速读:YOLO-G,用于跨域目标检测的改进YOLO(Plos One 2023)
  • 基于springboot企业微信SCRM管理系统源码带本地搭建教程
  • 纳斯达克大屏投放:为什么越来越多的企业要投放纳斯达克户外广告
  • 【逆向基础】十七、PE文件格式(二)
  • 《数据之海》
  • LeetCode 第419场周赛个人题解
  • Spring Boot在医疗病历B2B交互中的技术突破
  • 设计模式和软件框架的关系
  • 【优先算法】--双指针1
  • 【二刷hot-100】day1
  • 家政行业小程序需要哪些功能?
  • STM32—旋转编码器控制直流电机(标准库)
  • Luminar Neo v1.21.0.13934 图像编辑软件绿色便携版
  • Angular 19 的改进功能
  • torch.fft 出现 ComplexHalf 或 Half 不支持
  • java互联网医院智能导诊系统源码,Uniapp前端开发框架,支持一次编写,多端运行
  • 分享一个图片RGB以及16进制颜色提取的在线网站
  • Lobby——网络游戏大厅设计与参考建议!!!
  • FreeRTOS:事件标志组
  • SpringMVC源码-接口请求执行流程,包含九大内置组件的实例化初始化,拦截器调用,页面渲染等源码讲解
  • K8s中pod 间通信的两种情况
  • Oracle中解决select into值集为空的报错情况
  • 洛谷 P1106:删数问题 ← 贪心算法
  • 常见的微控制器(ESP8266、ESP32,、51单片机、stm32)区别