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;INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (101, 1001, '2015-5-4', 3500.00, '群众', '张三', '1990-7-1');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (101, 1002, '2017-2-6', 3200.00, '团员', '李四', '1997-2-8');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1003, '2011-1-4', 8500.00, '党员', '王亮', '1983-6-8');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1004, '2016-10-10', 5500.00, '群众', '赵六', '1994-9-5');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1005, '2014-4-1', 4800.00, '党员', '钱七', '1992-12-30');
INSERT INTO `worker` (`部门号`, `职工号`, `工作时间`, `工资`, `政治面貌`, `姓名`, `出生日期`) VALUES (102, 1006, '2017-5-5', 4500.00, '党员', '孙八', '1996-9-2');
1、显示所有职工的基本信息。
2、查询所有职工所属部门的部门号,不显示重复的部门号。
3、求出所有职工的人数。
4、列出最高工和最低工资。
5、列出职工的平均工资和总工资。
6、创建一个只有职工号、姓名和参加工作的新表,名为工作日期表。
7、显示所有女职工的年龄。
8、列出所有姓刘的职工的职工号、姓名和出生日期。
9、列出1960年以前出生的职工的姓名、参加工作日期。
10、列出工资在1000-2000之间的所有职工姓名。
11、列出所有陈姓和李姓的职工姓名。
12、列出所有部门号为2和3的职工号、姓名、党员否。
13、将职工表worker中的职工按出生的先后顺序排序。
14、显示工资最高的前3名职工的职工号和姓名。
15、求出各部门党员的人数。
16、统计各部门的工资和平均工资
17、列出总人数大于4的部门号和总人数。

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

select * from worker;

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

select distinct `部门号` from worker;

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

select count(`姓名`) from worker;

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

# 最高 降序排序    取第一个
select `工资` from worker order by `工资` desc  limit 0,1;
# 最低    升序排序    取第一个
select `工资` from worker order by `工资` asc   limit 0,1;

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

# 平均工资
select avg(`工资`) from worker;
# 总工资
select sum(`工资`) from worker;    select avg(`工资`) 平均工资,sum(`工资`) 总工资 from worker;

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

create table `工作日期` (`职工号`   int(11) NOT NULL,`姓名`         varchar(20) NOT NULL,
`工作时间` date   NOT NULL,
PRIMARY KEY (`职工号`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 ROW_FORMAT=DYNAMIC;

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

# datediff()用于计算两个日期之间的天数
-- datediff函数,返回值是相差的天数,不能定位到小时、分钟和秒
SELECT datediff(now(),`出生日期` ) as age FROM worker;
# TIMESTAMPDIFF函数,有参数设置,可以精确到天(DAY)、小时(HOUR),分钟(MINUTE)和秒(SECOND)
-- 使用起来比datediff函数更加灵活。对于比较的两个时间,时间小的放在前面,时间大的放在后面。
SELECT TIMESTAMPDIFF(year,`出生日期`,NOW()) as age FROM worker;

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

select `姓名` from worker where `工资` between 3000 and 5000;
select `姓名`,`工资` from worker where `工资` between 3000 and 5000;

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

select `姓名` from worker where (`姓名` like'陈%') or (`姓名` like'李%');

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

select  * from worker where find_in_set('党员',政治面貌);
select  * from worker where locate('党员',政治面貌);
# locate() 查找某个字段里面是否有某个某个字符串 是(1)否(0)
select `职工号`,`姓名`,(locate('党员',政治面貌)) as `是(1)否(0)党员` from worker where `部门号`=102 or `部门号`=103;

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

select * FROM worker  ORDER BY `出生日期`;

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

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

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

SELECT `部门号` from worker WHERE `政治面貌`='党员';
select `部门号`,count(`部门号`) from worker  GROUP BY `部门号`;
# locate() 查找某个字段里面是否有某个某个字符串 是(1)否(0
select `部门号`,sum(locate('党员',政治面貌)) 党员数  from worker  GROUP BY `部门号`;

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

select `部门号`,sum(工资) 总工资,avg(工资) 平均工资 from worker  GROUP BY `部门号`;

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

select `部门号`,count(姓名) 总人数 from worker  GROUP BY `部门号` HAVING count(姓名) >2 ;
select `部门号`,count(姓名) 总人数 from worker  GROUP BY `部门号` HAVING count(姓名) >4 ;

MySQL作业(一)——单表查询相关推荐

  1. mysql数据库之单表查询

    单标查询 单表查询语句 关键字执行的优先级 简单查询 where约束 group by 聚合函数 HAVING过滤 order by 查询排序 LIMIT限制查询的记录数 使用正则表达式查询 单表查询 ...

  2. Mysql梳理(单表查询)

    DQL 1.基本查询. 自关联:同一表的不同列之间关联: #查询某列或多列或所有列: select enamel from emp: select enamel,sal,comm from emp: ...

  3. Mysql数据库的单表查询

    我们在使用Mysql数据库存储数据时,对数据的查询方法是至关重要的,此博客主要介绍Mysql数据库的查询数据方法. 单表查询 单表查询就是我们仅对一个表进行查询,我们可以首先创建一个名为table的表 ...

  4. mysql怎么进行单表查询_MySQL之单表查询

    一.单表查询的语法 SELECT 字段1,字段2... FROM 表名 WHERE 条件 GROUP BY field HAVING 筛选 ORDER BY field LIMIT 限制条数 二.关键 ...

  5. mysql 连表查询 好处,MySQL 多次单表查询和多表联合查询的优缺点分析-Fun言

    前言 阿里巴巴的代码规范中有一条就是不建议执行三张表以上的多表联合查询,因为对数据量不大的应用来说, 多表联合查询开发高效, 但是多表联合查询在表数据量大, 并且没有索引的时候, 如果进行笛卡儿积, ...

  6. Mysql总结-1 单表查询

    mysql在dos中查看中文乱码问题解决 字段修改 alter table <table名> modify column <column名> xxxx. alter table ...

  7. 【一周入门MySQL—2】单表查询

    单表查询 数据查询语言DQL 单表查询的基本语法: 全表查询:select * from 表名; 查询指定列:select 字段1[,字段2] from 表名; 别名的设置:select 字段 [as ...

  8. MySQL练习(单表查询和多表查询)

    单表查询 一.创建素材 DROP TABLE IF EXISTS `course`; CREATE TABLE `course` (`cs_id` int(11) NOT NULL COMMENT ' ...

  9. cmd操作MySQL 范式、单表查询(日记 day 3)

    今天记录一下设计范式,还有一些简单的查询操作 先来了解一下范式: 范式是分等级的,越高级的范式限制越多,而且,每条范式总是满足它前面的那些低等级范式 第一范式: 每一列都是不可分割的原子数据项 就比如 ...

  10. mysql 数据操作 单表查询 where约束 between and or

    WHERE约束 where字句中可以使用: 比较运算符:>< >=  <=  != between 80 and 100 值在80到100之间   >=80  <= ...

最新文章

  1. 一次非常有意思的 SQL 优化经历!
  2. 数据派新年寄语 | 新时代,新年好!
  3. 关于Web前端面试的小技巧,千万不要错过!
  4. C#如何开发多语言支持的Winform程序
  5. Ajax实例一:利用服务器计算
  6. 计算机技能大赛初赛主持稿,职业技能大赛开幕式主持词
  7. MVC+EF 入门教程(四)
  8. python从入门到放弃-掌握这个学习方法,让 Python 不再从入门到放弃
  9. matlab2c使用c++实现matlab函数系列教程-tanh函数
  10. iOS OpenGL ES2.0教程   Lesson03 旋转
  11. java循环语句_Java十四天零基础入门-Java for循环语句
  12. 应用HTML5 a标签下载文件
  13. 微信小程序的在线学习每日签到打卡 项目源码介绍
  14. Windows Server 2003 Sp2 雨林木风版
  15. Mysql数据库备份复制
  16. 街头篮球手游服务器维护,街头篮球手游2月9日更新维护内容详解
  17. react路由不显示下划线
  18. 微信预览wx.previewImage黑屏
  19. 5种最热门编程语言的优缺点
  20. SiT5357:±0.1~±0.25ppm超高精度Stratum 3温补振荡器TCXO,60-220MHz

热门文章

  1. Java的引用类型之数组
  2. git提交代码更换提交人
  3. 学计算机新学期的规划,新学期的计划书
  4. 日剧《101次求婚》观感
  5. Android高仿微信照片选择器+预览+显示照片
  6. CF(C. Scoring Subsequences)(div2)
  7. 万彩动画大师的JAVA安装不了_[万彩动画大师教程]—安装万彩动画大师出错了重新编辑...
  8. 萌娘百科 java_Re:萌娘百科上的黑幕实现
  9. xamarin android真机调试
  10. Linux ping 命令介绍