Mysql数据库之单表查询

目录

一、练习时先导入数据如下: 

二、查询验证导入是否成功

三、单表查询

 四、where和having的区别


一、练习时先导入数据如下: 

素材: 表名:worker-- 表中字段均为中文,比如 部门号 工资 职工号 参加工作 等
CREATE TABLE `worker` (`部门号` int(11) NOT NULL,`职工号` int(11) NOT NULL,`工作时间` date NOT NULL,`工资` float(8,2) NOT NULL,`政治面貌` varchar(10) NOT NULL DEFAULT '群众',`姓名` varchar(20) NOT NULL,`出生日期` date NOT NULL,`年龄` int,PRIMARY KEY (`职工号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`)
VALUES (101, 1001, '2015-5-4', 3500.00, '群众', '张三', '1990-7-1',11),(101, 1002, '2017-2-6', 3200.00, '团员', '李四', '1997-2-8',22),(102, 1003, '2011-1-4', 8500.00, '党员', '王亮', '1983-6-8',33),(102, 1004, '2016-10-10', 5500.00, '群众', '赵六', '1994-9-5',44),(102, 1005, '2014-4-1', 4800.00, '党员', '钱七', '1992-12-30',55),(102, 1006, '2017-5-5', 4500.00, '党员', '孙八', '1996-9-2',66);UPDATE `worker`
SET `年龄` = YEAR(CURDATE()) - YEAR(`出生日期`) - (DATE_FORMAT(CURDATE(), '%m%d') < DATE_FORMAT(`出生日期`, '%m%d'));

二、查询验证导入是否成功

三、单表查询

1、显示所有职工的基本信息。

select *from worker;

 2、查询所有职工所属部门的部门号,不显示重复的部门号。  

select distinct 部门号 from worker;


3、求出所有职工的人数。  

select count(*) AS 职工人数 from worker;


4、列出最高工和最低工资。   

SELECT MAX(工资) AS 最高工资, MIN(工资) AS 最低工资 FROM worker;


5、列出职工的平均工资和总工资。

 SELECT AVG(工资) AS 平均工资, SUM(工资) AS 总工资 FROM worker;


6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。 

CREATE TABLE 工作日期表 AS
SELECT 职工号, 姓名, 工作时间 FROM worker;


7、显示所有女职工的年龄。 (这里博主忘记增加年龄段,底下是正确的命令)

 select 年龄 from worker where 性别 = '女';

8、列出所有姓刘的职工的职工号、姓名和出生日期。

 SELECT 职工号, 姓名, 出生日期 FROM worker WHERE 姓名 LIKE '刘%';


9、列出1960年以前出生的职工的姓名、参加工作日期。

SELECT 姓名, 工作时间 FROM worker WHERE 出生日期 < '1960-01-01';


10、列出工资在1000-2000之间的所有职工姓名。 

select 姓名 from worker where 工资 between 1000 and 2000;


11、列出所有陈姓和李姓的职工姓名。

SELECT 姓名 FROM worker WHERE 姓名 LIKE '陈%' OR 姓名 LIKE '李%';


12、列出所有部门号为2和3的职工号、姓名、党员否。

SELECT 职工号, 姓名, 政治面貌 FROM worker WHERE 部门号 IN (2, 3);

 
13、将职工表worker中的职工按出生的先后顺序排序。

select *from worker order by 出生日期;


14、显示工资最高的前3名职工的职工号和姓名。 

select 职工号,姓名 from worker order by 工资 desc limit 3;


15、求出各部门党员的人数。

SELECT 部门号, COUNT(*) AS 党员人数 FROM worker WHERE 政治面貌 = '党员' GROUP BY 部门号;

 
16、统计各部门的工资和平均工资

select 部门号,sum(工资) AS 总工资, AVG(工资) AS 平均工资 from worker group by 部门号;


17、列出总人数大于4的部门号和总人数。

SELECT 部门号, COUNT(*) AS 总人数 FROM worker GROUP BY 部门号 HAVING 总人数 > 4;

 四、where和having的区别

  1. WHERE 子句: WHERE 子句用于在执行 SELECT 查询时,对表中的行进行筛选。它作用于从表中选取的数据行,在数据从表中读取到内存之前进行筛选。这意味着 WHERE 子句可以根据条件过滤掉不符合要求的行,只有符合条件的行会被取回到查询结果中。

  2. HAVING 子句: HAVING 子句用于在执行聚合函数(如 SUMCOUNTAVG 等)后对结果进行筛选。它作用于聚合结果集,允许你筛选聚合后的数据,类似于对聚合结果进行二次筛选。HAVING 子句通常与 GROUP BY 子句一起使用,因为聚合函数在分组后才有意义。

总结:

  • WHERE 子句用于在数据选取之前筛选数据行,它作用于从表中选取的原始数据。
  • HAVING 子句用于在聚合函数计算之后筛选结果集,它作用于聚合后的数据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/62010.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C语言】初识C语言+进阶篇导读

✨个人主页&#xff1a; Anmia.&#x1f389;所属专栏&#xff1a; C Language &#x1f383;操作环境&#xff1a; Visual Studio 2019 版本 本篇目的是面向编程新手&#xff0c;没接触过编程的人。以及C进阶的导读。 内容是C语言重要知识点的简单解释&#xff0c;不做详解。给…

git的简单介绍和使用

git学习 1. 概念git和svn的区别和优势1.1 区别1.2 git优势 2. git的三个状态和三个阶段2.1 三个状态&#xff1a;2.2 三个阶段&#xff1a; 3. 常用的git命令3.1 下面是最常用的命令3.2 git命令操作流程图如下&#xff1a; 4. 分支内容学习4.1 项目远程仓库4.2 项目本地仓库4.3…

ElasticSearch:项目实战(1)

es环境搭建参考&#xff1a;ElasticSearch&#xff1a;环境搭建步骤_Success___的博客-CSDN博客 需求&#xff1a; 用户输入关键可搜索文章列表 关键词高亮显示 文章列表展示与home展示一样&#xff0c;当用户点击某一篇文章&#xff0c;可查看文章详情 思路&#xff1a; …

使用 prometheus client SDK 暴露指标

目录 1. 使用 prometheus client SDK 暴露指标1.1. How Go exposition works1.2. Adding your own metrics1.3. Other Go client features 2. Golang Application monitoring using Prometheus2.1. Metrics and Labels2.2. Metrics Types2.2.1. Counters:2.2.2. Gauges:2.2.3. …

c语言进阶部分详解(数据在内存中的存储)

大家好&#xff0c;今天要进行梳理的内容是数据在内存中的存储相关内容。 在C语言中&#xff0c;数据在内存中的存储是一个非常重要的概念。了解数据在内存中的存储方式可以帮助我们更好地理解程序的执行过程&#xff0c;优化内存使用&#xff0c;提高程序的性能。 目录 一.数…

微信朋友圈置顶功能已大范围上线!

微信是目前全球最受欢迎的社交媒体应用之一&#xff0c;拥有数十亿的用户。作为一款持续发展和改进的应用&#xff0c;微信不断推出新的功能来提升用户体验。 近日&#xff0c;iOS微信8.0.41内测版迎来了更新&#xff0c;本次更新距离上个正式版间隔了大概10天的时间。 微信朋友…

p5.js画布操作实战:创建,绑定指定元素,动态调整大小,隐藏滚动条,删除画布...

theme: smartblue 文章简介 之前在 《p5.js 光速入门》 里粗略讲过一下如何使用 p5.js 创建画布。 这次要介绍几个 p5.js 提供的画布相关的方法。 创建画布时的相关配置。让画布绑定指定元素。重置画布大小。删除画布。 学习本文前你需要具备一点 p5.js 的知识&#xff0c;想了…

力扣70.爬楼梯(动态规划)

/*** author Limg* date 2023/08/11* 假设你正在爬楼梯。需要 n 阶你才能到达楼顶。* 每次你可以爬 1 或 2 个台阶。* 你有多少种不同的方法可以爬到楼顶呢&#xff1f; */#include<iostream> using namespace std; int climbStairs(int n); int main() {int n0;cin>&…

pc端与flutter通信失效, Method not found

报错情况描述&#xff1a;pc端与flutter通信&#xff0c;ios端能实现通信&#xff0c;安卓端通信报错 报错通信代码&#xff1a; //app消息通知window.callbackName function (res) {window?.jsBridge && window.jsBridge?.postMessage(JSON.stringify(res), "…

CTF之流量分析之密码文件

题目地址&#xff1a;BUUCTF在线评测 题目&#xff1a; 深夜里&#xff0c;Hack偷偷的潜入了某公司的内网&#xff0c;趁着深夜偷走了公司的秘密文件&#xff0c;公司的网络管理员通过通过监控工具成功的截取Hack入侵时数据流量&#xff0c;但是却无法分析出Hack到底偷走了什…

Rider无法识别Todo Comment

最近因为vs code很难识别到代码中的usage和definition&#xff0c;改用Rider了。 但是一开始就哪里有点不对&#xff0c; 比如我主题的颜色总是有些地方无法识别出来。比如我每次从Unity中点击脚本文件&#xff0c;都只能识别到某一个特定的文件夹&#xff0c;而不能打开整个…

Leetcode 977. 有序数组的平方

题目&#xff1a; Leetcode 977. 有序数组的平方 描述&#xff1a; 给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序 思路&#xff1a; 双指针法 数组其实是有序的&#xff0c; 只不过负数平方之…