MySQL之DML和DDL

news2025/4/27 16:29:49

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: 0

mysql> 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.coloradmin.cn/o/734969.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

CentOS环境下的MYSQL8安装

MySQL 安装 参考连接&#xff1a;https://www.cnblogs.com/jasonx1an/p/16690866.html 下载 下载网址&#xff1a;https://dev.mysql.com/downloads/mysql/ 卸载 mariadb 查看 mariadb rpm -qa|grep mariadb卸载 mariadb rpm -e mariadb-libs-5.5.68-1.el7.x86_64 --nodeps再…

深度学习调参技巧

一、常用的网络模型训练技巧&#xff1f; 使用更大的 batch size。使用更大的 batch size 可以加快训练的进度。但是对于凸优化问题&#xff0c;收敛速度会随着 batch size 的增加而降低。所以在相同的 epoch 下&#xff0c;使用更大的 batch size 可能会导致验证集的 acc更低…

Unittest加载执行用例的方法总结

目录 前言 方式1 方式2 方式3 方式4 方式5 方式6 方式7 总结 前言 说到测试框架&#xff0c;unittest是我最先接触的自动化测试框架之一了&#xff0c; 而且也是用的时间最长的&#xff0c; unittest框架有很多方法加载用例&#xff0c;让我们针对不同的项目&#xff0…

23 | MySQL是怎么保证数据不丢的?

以下内容出自《MySQL 实战 45 讲》 23 | MySQL是怎么保证数据不丢的&#xff1f; binlog 的写入机制 1、事务执行过程中&#xff0c;先把日志写到 binlog cache&#xff0c;事务提交的时候&#xff0c;再把 binlog cache 写到 binlog 文件中。 2、一个事务的 binlog 是不能被…

rust学习-所有权

运行程序必须管理使用内存的方式 &#xff08;1&#xff09;一些语言中具有垃圾回收机制&#xff0c;程序运行时不断寻找不再使用的内存 &#xff08;2&#xff09;一些语言中&#xff0c;开发者必须亲自分配和释放内存 &#xff08;3&#xff09;Rust 通过所有权系统管理内存…

Windows操作系统安全加固

Windows操作系统安全加固 一、安全加固基本思路1.1、安全基线1.2、系统信息审查 二、Windows安全配置加固2.1、漏洞修复——补丁安装2.2、漏洞修复——端口封禁2.2.1、windows高危端口加固实践——封禁135端口对外开放 2.3、安全配置加固——账号口令 一、安全加固基本思路 1.…

10.20UEC++/代理,单播,多播

构建一个无参无返回值类型的函数&#xff08;也可以有参有返回值类型&#xff09; 相对应的构建一个无参无返回值类型的代理

【计算机组成与体系结构课程设计】上机考试

1 (1) 针对图中的MIPS处理器数据通路(不考虑I/O)&#xff0c;用红色或蓝色描出执行sw指令时的数据通路。&#xff08;将该图下载到电脑&#xff0c;并用画图完成描线&#xff09; (2) 写出执行sw指令时&#xff0c;各个元件控制端信号应该置什么值? 2 基于Minisys处理…

Qt保存代码

补全保存代码 #include "widget.h" #include "ui_widget.h"Widget::Widget(QWidget *parent) :QWidget(parent),ui(new Ui::Widget) {ui->setupUi(this); }Widget::~Widget() {delete ui; }//字体按钮对应的槽函数 void Widget::on_fontBtn_clicked() {…

使用常见的三个命令分析线程的信息

目录 jps jstack.exe jvisualvm.exe jmc.exe 这三个都在jdk\bin文件夹中&#xff01;&#xff01;&#xff01; 查看线程等待状态与信息可以采用3种常见命令。 本文中针对以下代码进行演示 package ChapterOne.test;public class Run3 {public static void main(String[…

Coggle 30 Days of ML(23年7月)任务四:线性模型训练与预测

Coggle 30 Days of ML&#xff08;23年7月&#xff09;任务四&#xff1a;线性模型训练与预测 任务四&#xff1a;使用TFIDF特征和线性模型完成训练和预测 说明&#xff1a;在这个任务中&#xff0c;你需要使用TFIDF特征和线性模型&#xff08;如逻辑回归&#xff09;完成训练…

图像处理-比特平面分层和重构

一、比特平面分层 像素是由比特组成的数字。例如在256级灰度图像中&#xff0c;每个像素的灰度是由8比特&#xff08;一个字节&#xff09;组成。如下图所示&#xff0c;一幅8比特图像由8个1比特平面组成&#xff0c;其中平面1包含图像中所有像素的最低阶比特&#xff0c;而平…

人工智能(pytorch)搭建模型17-pytorch搭建ReitnNet模型,加载数据进行模型训练与预测

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能(pytorch)搭建模型17-pytorch搭建ReitnNet模型&#xff0c;加载数据进行模型训练与预测&#xff0c;RetinaNet 是一种用于目标检测任务的深度学习模型&#xff0c;旨在解决目标检测中存在的困难样本和不平衡…

前端Vue仿京东淘宝我的优惠券列表组件 用于电商我的优惠券列表页面

随着技术的发展&#xff0c;开发的复杂度也越来越高&#xff0c;传统开发方式将一个系统做成了整块应用&#xff0c;经常出现的情况就是一个小小的改动或者一个小功能的增加可能会引起整体逻辑的修改&#xff0c;造成牵一发而动全身。 通过组件化开发&#xff0c;可以有效实现…

C++之子类指向父类,父类指向子类总结(一百五十五)

简介&#xff1a; CSDN博客专家&#xff0c;专注Android/Linux系统&#xff0c;分享多mic语音方案、音视频、编解码等技术&#xff0c;与大家一起成长&#xff01; 优质专栏&#xff1a;Audio工程师进阶系列【原创干货持续更新中……】&#x1f680; 人生格言&#xff1a; 人生…

nginx配置例子-动静分离实例

动静分离实例 1.准备工作 步骤一&#xff1a;在 根目录/ 下 创建 目录data/www 和 data/image 步骤二&#xff1a;在目录www 下 &#xff0c;创建a.html文件 步骤三&#xff1a;在目录image下&#xff0c;将图片拖到Xshell客户端&#xff0c;实现图片导入Linux&#xff0c;导…

ITIL 4—发布管理实践

2 基本信息 2.1 目的和描述 关键信息 发布管理实践的目的是使新的和变更的服务及功能均可用。 发布管理实践是为了确保组织及其服务使用者在符合组织政策和协议的前提下&#xff0c;服务可以正常使用而产生的最佳实践。 传统场景下&#xff0c;服务组件&#xff08;包括基…

QT -20230709

练习&#xff1a; 登录界面增加注册功能(在本地增加用户文件进行比对用户) LoginWindow.h #ifndef LOGINWINDOW_H #define LOGINWINDOW_H#include <QMainWindow> #include <QIcon> #include <QLabel> #include <QLineEdit> #include <QPushButto…

TCP Socket性能优化秘籍:掌握read、recv、readv、write、send、sendv的最佳实践

TCP Socket性能优化秘籍&#xff1a;掌握read、recv、readv、write、send、sendv的最佳实践 博主简介一、引言1.1、TCP Socket在网络通信中的重要性1.2、为什么需要优化TCP Socket的性能&#xff1f; 二、TCP Socket读操作的性能优化2.1、read、recv、readv的功能和用法2.2、提…

有哪些做的问卷调查的工具?

想要洞察市场变化、了解某个特定群体的喜好等情况&#xff0c;使用问卷调查是常见的方法。而互联网的发展&#xff0c;越来越多的人转战网络问卷&#xff0c;而功能各异的问卷工具却让人挑花眼。今天&#xff0c;我们精准针对大家的需求和常见的一些问题&#xff0c;为大家聊一…