MySQL之DML和DDL

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的部门号和总人数。

首先需要建表如图所示

mysql> create table worker(-> dept_id int(11) not null,-> emp_id int (11) not null,-> work_time date not null,-> salary float(8,2) not null,-> poli_face varchar(10) not null default '群众',-> name varchar(20) not null,-> birth date not null,-> primary key(emp_id)-> )engine=innodb default charset=utf8 row_format=dynamic;

向里面插入数据

mysql> insert into worker values(101,1001,'2015-5-4',3500.00,'群众','张三','1990-7-1');
Query OK, 1 row affected (0.00 sec)mysql> insert into worker values(101,1002,'2017-2-6',3200.00,'团员','李四','1997-2-8');
Query OK, 1 row affected (0.00 sec)mysql> insert into worker values(102,1003,'2011-2-4',8500.00,'党员','王亮','1983-6-8');
Query OK, 1 row affected (0.02 sec)mysql> insert into worker values(102,1004,'2016-10-10',5500.00,'群众','赵六','1994-9-5');
Query OK, 1 row affected (0.00 sec)mysql> insert into worker values(102,1005,'2014-4-1',4800.00,'党员','钱七','1992-12-30');
Query OK, 1 row affected (0.00 sec)mysql> insert into worker values(102,1006,'2017-5-5',4500.00,'党员','孙八','1996-9-2');
Query OK, 1 row affected (0.01 sec)

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

select * from worker;


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

select distinct dept_id from worker;


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

select count(name) from worker;


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

select max(salary) as '最高工资',min(salary) as '最低工资' from worker;


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

select avg(salary) as '平均工资',sum(salary) as '总工资' from worker;


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

mysql> create table workdate select emp_id,name from worker;
Query OK, 6 rows affected (0.03 sec)
Records: 6  Duplicates: 0  Warnings: 0
mysql> select * from workdate;
+--------+--------+
| emp_id | name   |
+--------+--------+
|   1001 | 张三   |
|   1002 | 李四   |
|   1003 | 王亮   |
|   1004 | 赵六   |
|   1005 | 钱七   |
|   1006 | 孙八   |
+--------+--------+
6 rows in set (0.00 sec)


7、显示所有女职工的年龄。

首先worker表当中暂时没有年龄和性别属性所以要增加

mysql> alter table worker add age tinyint default 18;
Query OK, 0 rows affected (0.02 sec)
Records: 0  Duplicates: 0  Warnings: 0mysql> alter table worker add gender char(1) check(gender in ('F','M'));
Query OK, 6 rows affected (0.03 sec)
Records: 6  Duplicates: 0  Warnings: 0

然后向里面给每个人插入年龄和姓别

mysql> update worker set age=19,gender='F' where name='张三';mysql> update worker set age=20,gender='F' where name='李四';mysql> update worker set age=21,gender='M' where name='王亮';mysql> update worker set gender='M' where name='赵六';mysql> update worker set gender='M' where name='钱七';mysql> update worker set gender='M' where name='孙八';

此时我们可以查看一下表的内容

最后查询即可

select age from worker where gender='F';


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

select emp_id,name,birth from worker where name='刘%';因为我们表中并没有姓刘的所以应该是查询不到的


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

select name,work_time from worker where birth < '1960-1-1';


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

select name from worker where salary between 1000 and 2000;


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

select name from worker where name like '李%' or name like '陈%';


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

select emp_id,name from worker where poli_face != '党员' and dept_id in (102,103);


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

 

select name,birth from worker order by(birth);


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

select emp_id,name from worker  order by(salary) desc limit 0,3;


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

select dept_id ,count(name) from worker where poli_face='党员' group by(dept_id);

因为此时统计出来的全是102部门的,为了验证是否写的正确我又插入了一个部门为101的数据

insert into worker values(101,1007,'2017-1-1',4000.00,'党员','陈启','1990-2-2',18,'M');

然后查询

可以看到是正确的
16、统计各部门的工资和平均工资

select dept_id,sum(salary),avg(salary) from worker group by(dept_id);


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

select dept_id,count(name) from worker group by(dept_id) having count(name) > 4;

 

 因为我们的表中并没有部门人数大于4的所以查不到,我们可以查一下部门人数大于二的验证以下正确性

select dept_id,count(name) from worker group by(dept_id) having count(name) > 2;

 

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

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

相关文章

套接字属性

一、选项的级别 1. 基本概念 设置套接字的选项对套接字进行控制 除了设置选项外&#xff0c;还可以获取选项 选项的概念相当于属性&#xff0c;所以套接字选项也可说是套接字属性 有些选项&#xff08;属性&#xff09;只可获取&#xff0c;不可设置&#xff1b; 有些选项既可…

AtcoderABC258场

A - When? A - When? 题目大意 给定一个整数K&#xff0c;表示从日本标准时间21:00开始经过的分钟数。要求将该时间转换为24小时制的时间&#xff08;HH:MM格式&#xff09;。 思路分析 可直接分时间打印。关于格式&#xff0c;填充0&#xff0c;打印时间&#xff0c;题解…

git学习笔记

up:b站迷斯特航 两个版本的项目版本控制&#xff1a; 分支操作&#xff1a; 基本操作&#xff1a; 克隆远程项目到本地&#xff1a; git clone https://github.com/zhoeujei/rknn-coal-ai.git 修改提交到本地仓库&#xff1a;git add rknn_yolov5_demo/CMakeLists.txt&#…

使用C语言连接MySQL

目录 一、引入库 1.1 下载库文件 1.2 在项目中引入库 二、使用库 2.1 连接数据库 2.2 SQL请求 2.3 获取查询结果 2.4 使用案例 一、引入库 1.1 下载库文件 要使用C语言连接MySQL&#xff0c;需使用MySQL官网提供的库 MySQL :: Download Connector/Chttps://dev.mysq…

unbuntu 22.04 安装和卸载企业微信

every blog every motto: You can do more than you think. https://blog.csdn.net/weixin_39190382?typeblog 0. 前言 记录有关在ubuntu22.04上安装和卸载企业微信 以及企业微信无法打开问题处理 1. 正文 1.1 安装 下载wine环境 http://archive.ubuntukylin.com/softwar…

【动手学习深度学习--逐行代码解析合集】15卷积神经网络(LeNet)

【动手学习深度学习】逐行代码解析合集 15卷积神经网络&#xff08;LeNet&#xff09; 视频链接&#xff1a;动手学习深度学习–卷积神经网络&#xff08;LeNet&#xff09; 课程主页&#xff1a;https://courses.d2l.ai/zh-v2/ 教材&#xff1a;https://zh-v2.d2l.ai/ 1、LeN…

IDEA中 application.yaml文件没有绿色的叶子

IDEA中 application.yaml文件没有绿色的叶子 问题背景 前段时间一直在刷算法题和备战考试&#xff0c;忽略了项目方面的锻炼&#xff0c;于是今天就想着来写一个练手的项目&#xff0c;重新熟悉一下技术栈。结果刚搭建一个SpringBoot项目&#xff0c;就发现application.yaml配…

第三方ipad电容笔哪个品牌好用?平板电容笔推荐

可能很多人都认为&#xff0c;苹果原装的电容笔&#xff0c;是不可取代&#xff0c;但我认为&#xff0c;这还要看个人的预算&#xff0c;以及实际的需求。苹果Pencil对于那些不太讲究画质的用户来说实在是太贵了&#xff0c;要是我们仅用于书写上&#xff0c;其实我们可以用平…

java动态导出excel头

java动态导出excel头 java根据动态头导出excel文件一、需求背景1、调用接口将表头传给给后端2、请求结果展示3、核心代码1、工具类&#xff0c;注意异常抛出类如报错&#xff0c;需自定义异常类2、标题设置类3、单元各简单设置类4、controller接收参数 java根据动态头导出excel…

LeetCode 203. 移除链表元素

给你一个链表的头节点 head 和一个整数 val &#xff0c;请你删除链表中所有满足 Node.val val 的节点&#xff0c;并返回 新的头节点 。 &#xff08;1&#xff09;直接使用原来的链表来进行移除节点操作&#xff1a; //不带头结点删除元素节点 class Solution { public:Lis…

ssh配置多账号(Mac)

一. 应用场景 当存在同时需要git在GitHub、gitee、gitlab等多个不同git托管平台进行ssh代码操作的时候。 二. 具体操作 默认 ssh-keygen -t rsa -C "你的邮箱"之后一直回车就可以&#xff0c;会默认在~/.ssh目录下生成id_rsa、id_rsa.pub 指定文件 ssh-keygen …

Git Commit的规范及高级使用方法

git commit是日常工作中使用率极高的一个命令&#xff0c;但是根据我从业5年的经验来看&#xff0c;大多数人在用git commit命令时都很粗糙&#xff0c;比如git commit -m 后跟的message是五花八门&#xff0c;有用中文的&#xff0c;有用英文的&#xff0c;甚至还有直接跟111的…