MySQL的单表查询联系

目录

一,建立表结构

1 建立表

二,插入数据

2 插入数据

三,实现要求

3 要求示例


一,建立表结构

1 建立表

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,
PRIMARY KEY (`职工号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

二,插入数据

2 插入数据

9b09e873f01743e69050896f35572852.png

三,实现要求

3 要求示例

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

select *from worker;

a883686723c4440faa107bf0e1cc23f1.png

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

# 使用select查询以部门号分组,将所有名字根据部门号字段全部展示出来。
select `部门号`,group_concat(`姓名`) from worker group by `部门号`;

2fb61652f67144b2a96617cdfd28f068.png


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

#使用count对姓名进行计数,从而达到对表内的数据进行计数,进而得出员工人数(as起到起别名作用)
select count(`姓名`)  as '职工人数'from worker;

 88bae7d3d8f5410f9404635b0e29d748.png

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


#使用聚合函数对select查出的语句进行处理,as起到起别名的效果,用max,min取出最高与最低工资。
select max(`工资`) as '最高工资',min(`工资`) as '最低工资'from worker;

 81d0fa3df9244179bd5326ef427f053f.png

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

 使用聚合函数对select查出的语句进行处理,求出他的总工资和平均工资。

#使用聚合函数对select查出的语句进行处理,求出他的总工资和平均工资。
select avg(`工资`) as '平均工资',sum(`工资`) as  '总工资' from worker;

 cc5984920ad8495eaa834d1b8d5a50da.png

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

 创建一个新表,新表的数据来自于select从旧表中查处的数据。


#创建一个新表,新表的数据来自于select从旧表中查处的数据
create table `工作日期表` select `职工号`,`姓名`,`工作时间` from worker;

fdae7efc61d946e19c4353f8bea4e562.png


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

#对题目进行操作得出该表中没有刘姓员工,所以该结果为空。
select `职工号`,`姓名`,`出生日期` from worker where `姓名` like '刘%';

7fd27fde39ab4ae2870f9b235923b4e4.png

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


#先查出字段结果,在用where进行判断,拿出条件相符的结果
select `姓名`,`工作时间` as '参加工作时间' from worker where '出生日期' < '1960-1-1';

 a924163a4f5f4e3eb122331999356794.png

3.9、列出工资在3500-4800之间的所有职工姓名。 

 在该表中应该拿出工资在3500-4800之间的员工姓名

select `姓名` from worker where `工资` >= 3500 and `工资` <= 4800;

 b30d3348ac584be9ac99e518e0e0f423.png

3.10、列出所有王姓和李姓的职工姓名。

 对题目进行分析,和该表比较应该拿出所有李姓和王姓的员工,并使用like进行模糊查询,如果查询名字中包含王的话则用(%王%)

select `姓名` from worker where `姓名` like '李%' or `姓名` like '王%';

 acf75b92d96347208f9b7368e78280d2.png

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

 和上述查询方法一样,在where后用条件判断。

select `姓名`,`职工号`,`政治面貌` from worker where( `部门号` = 103 or `部门号` = 102) and `政治面貌` = '党员';

 d82d5681bfa142c2a22a770662939667.png

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

select `职工号`, `姓名` from worker order by `出生日期` desc;

d33f85c03337402786ecfae171bbc3bc.png

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

 该语句用上了 order by + desc 进行了排序,并且最后在limit后将数据分成了两部分,从0开始,每次取三个数据。

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

 770c6e667f624883b9e3f0b80852bd13.png

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

 该语句用count(*)对政治面貌 为党员的进行了一个计数,求出党员人数,和所在部门号

select `部门号` ,count(*) from worker  where `政治面貌`='党员'group by `部门号` having count(*)>1;

 52ef48d45c634fd5af534d1913433ab7.png

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

 用聚合函数对数据进行处理,并展现出来,并且用求和和取平均值将需要的结果展现出来。

select sum(`工资`),avg(`工资`) from  worker group by `部门号`;

 0118c73d2c5c4fda91b87aa01372d7cf.png

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

 用count对姓名进行计数,用来统计人数,并且以部门号进行分组,在此之前先求出来满足人数大于4人的条件。

select `部门号` as '部门'  ,count(`姓名`) as '人数'  from worker group by `部门号` havingg count(`姓名`) >= 4 ;

 e47c184e7147447d8cc4c854599d0870.png

四,实验总结

4 总结

  1. 当使用SELECT语句时,可以使用多个关键字和子句来实现不同的功能。以下是SELECT语句的常见用法总结:
  2. 选择列: 使用SELECT子句后跟要检索的列名,可以选择一列或多列。例如: SELECT 列1, 列2 FROM 表名;
  3.  检索所有列: 使用通配符 * 可以选择表中的所有列。例如: SELECT * FROM 表名;
  4.  指定条件: 使用WHERE子句来添加条件,筛选符合条件的记录。例如: SELECT 列1, 列2 FROM 表名 WHERE 条件;
  5.   排序数据: 使用ORDER BY子句按照指定的列对结果进行排序,默认是升序。可以使用DESC关键字进行降序排序。例如: SELECT 列1, 列2 FROM 表名 ORDER BY 列1 DESC;
  6.   消除重复数据: 使用DISTINCT关键字可以去除结果中的重复记录。例如: SELECT DISTINCT 列 FROM 表名;
  7.  计算列: 使用计算表达式可以在查询的结果中计算新的列。例如: SELECT 列1, 列2, 列1 + 列2 AS 新列 FROM 表名;
  8.  使用聚合函数: 使用聚合函数如SUM、AVG、COUNT等对一列或多列进行计算。例如: SELECT SUM(列1) FROM 表名;
  9.  连接表: 使用JOIN子句可以将多个表连接起来,并根据指定的条件进行匹配。例如: SELECT 列1, 列2 FROM 表1 JOIN 表2 ON 表1.列 = 表2.列;
  10.  分组数据: 使用GROUP BY子句可以对结果进行分组,并对每个组应用聚合函数。例如: SELECT 列1, SUM(列2) FROM 表名 GROUP BY 列1;
  11.  过滤分组: 使用HAVING子句对分组的结果进行条件过滤,类似于WHERE子句。例如: SELECT 列1, SUM(列2) FROM 表名 GROUP BY 列1 HAVING SUM(列2) > 100;
  12.  子查询: SELECT语句可以嵌套在另一个SELECT语句中,作为子查询使用。例如: SELECT 列1, (SELECT 列2 FROM 表2 WHERE 条件) FROM 表1;
  13. 这些是SELECT语句的常见用法,可以根据具体需求进行灵活组合和扩展。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值