当前位置: 首页 > news >正文

Mysql 笔记2 emp dept HRs

-- 注意事项
-- 1.给数据库和表起名字时尽量选择全小写
-- 2.作为筛选条件的字符串是否区分大小写看设置的校对规则utf8_bin 区分
drop database if exists hrs;
create database hrs default charset utf8 collate utf8_general_ci;use hrs;
drop table if exists tb_emp;
drop table if exists tb_dept;create table tb_dept(
dpno int not null comment '部门编号',
dpname varchar(20) not null comment '部门名称',
dploc varchar(20) not null comment '地址',
primary key (dpno)
);
insert into tb_dept values
(1001,'会计部','北京'),
(1002,'研发部','成都'),
(1003,'销售部','重庆'),
(1004,'运维部','深圳');create table tb_emp(
empno int not null comment '工号',
empname varchar(20) not null comment '姓名',
job varchar(20) not null comment '员工职位',
empmgr int null comment '主管姓名',
sal int not null comment '薪资',
comm int comment '每月补贴',
empsex bool default 1 comment '性别',
dpno int not null comment '所在部门编号',
primary key(empno)
);
-- 自参照完整性
-- 级联更新(delete cascade on update cascade)foreign key dpno 删除和更新都会在tb_emp中删除更新
-- alter table tb_emp add constraint fk_emp_dp foreign key (dpno) references tb_dept(dpno) on delete cascade on update cascade;
alter table tb_emp add constraint fk_emp_dp foreign key (dpno) references tb_dept(dpno) on delete restrict on update restrict;-- 默认不让删除
-- alter table tb_emp add constraint fk_emp_dp foreign key (dpno) references tb_dept(dpno) on delete set null on update restrict;-- 删除后dpno变成null
alter table tb_emp drop foreign key fk_emp_dp;
alter table tb_emp add constraint fk_em_mgrreign foreign key (empmgr) references tb_emp(empno);
alter table tb_emp drop foreign key fk_em_mgrreign;-- 删除自参照约束insert into tb_emp values
(7800,'张三丰','总裁',null,90000,800,1,1001),
(2056,'乔峰','分析师',7800,90000,700,1,1004),
(2567,'杨逍','架构师',7800,80000,800,0,1002),
(2008,'杨不悔','大会计',7800,90000,500,0,1001),
(2643,'周芷若','销售经理',7800,8000,7800,0,1003),
(1352,'杨过','程序员',2567,9000,1000,1,1002),
(1341,'赵敏','会计1',2008,9000,500,0,1001),
(1654,'小昭','会计2',2008,8000,800,0,1001),
(1987,'张翠山','程序员2',2567,8000,600,0,1002),
(1563,'殷素素','运维员1',2056,8000,800,0,1004),
(1744,'叶青梅','销售员1',2643,8000,800,0,1003);

use hrs;
-- alter table tb_emp add column hiredate date ;after mgr/first
-- select * from tb_emp;
-- 查询薪资最高的员工;
-- select empname from tb_emp  where sal=(select max(sal) from tb_emp);
-- 查询员工的姓名和年薪(月薪+补贴)*12
-- select empname, (sal+comm)*12 from tb_emp;
-- 查询有员工的部门编号和人数
-- select dpno, count(dpno) from tb_emp group by dpno;
-- 查询所有部门的名称和人数
-- select dpname,total from tb_dept t1 inner join (select dpno, count(dpno) as total 
-- from tb_emp group by dpno) t2 on t1.dpno=t2.dpno ;
-- select dpname,count(empno) from tb_emp t1 inner join tb_dept t2 on t1.dpno=t2.dpno group by t1.dpno;
-- 查询薪资最高的员工(除Boss)的姓名和工资
-- select empname,(sal+comm) from tb_emp where (sal+comm)=(select max(sal+comm) from tb_emp where empmgr is not null) ;
-- 查询薪水超过平均薪水的员工姓名和工资
-- elect empname,(sal+comm)from tb_emp where (sal+comm)>(select avg(sal+comm) from tb_emp);
-- 查询薪水超过所在部门平均薪水的员工姓名、部门编号和工资
-- select empname,t1.dpno,sal,round(avgsal, 2) from tb_emp t1 inner join 
-- (select dpno,avg(sal) as avgsal from tb_emp group by dpno) t2 on t1.dpno=t2.dpno where sal >avgsal;
-- select  dpno, avg(sal+comm) from tb_emp group by dpno
-- select empname,dpno,(sal+comm) from tb_emp t1 where t1.dpno= (select dpno,avg(sal+comm) from tb_emp group by dpno) t2;
-- 查询部门中薪水最高的人的姓名、工资和所在部门名称
-- select dpno, max(sal) as msal from tb_emp group by dpno;
-- select empname,sal from tb_emp inner join (select * from tb_dept t1 inner join (select dpno, max(sal) as msal from tb_emp group by dpno) t2 on t1.dpno=t2.dpno) t3 where tb_emp.dpno=t3.dpno and tb_emp.sal=t3.msal;

-- SELECT e.empno,e.empname,d.dpno,d.dpname FROM tb_emp e inner JOIN tb_dept d ON e.dpno = d.dpno
-- WHERE (e.dpno, e.sal) IN (SELECT dpno, MAX(sal) FROM tb_emp GROUP BY dpno);
-- SELECT e.empno,e.empname,d.dpno,d.dpname FROM tb_emp e inner JOIN tb_dept d ON e.dpno = d.dpno
-- WHERE exists (select dpno, MAX(sal) FROM tb_emp GROUP BY dpno);
-- select t1.empname,t1.sal,t2.dpname from tb_emp t1 inner join tb_dpt t2 on t1.dpno=t2.dpno where (t1.dpno,t1.sal) in (select dpno,max(sal) from tb_emp group by dpno);
-- select empname,sal, dpname from tb_emp t1 inner join (select dpno, max(sal) as msal from tb_emp group by dpno) t2 on t1.sal=t2.msal and t1.dpno=t2.dpno inner join tb_dpt t3 on t1.dpno=t3.dpno;
-- 查询主管的姓名和职称
-- select empname,job from tb_emp where empno in (select distinct empmgr from tb_emp where empmgr is not null);
-- select empname,job from tb_emp t1 where exists(select 'x' from tb_emp t2 where t1.empno=t2.empmgr);

-- select 
-- 查月薪排名4~6的员工姓名和工资
-- select empname,sal from tb_emp order by sal desc limit 3,3;
-- select empname,sal from tb_emp order by sal desc limit 3 offset 3;
-- select 'x' from tb_temp t2 where t1.empno=t2.empmgr
-- select 'x';
-- dual 伪表不存在的表
-- select 'x' from dual;
-- select 'x' from tb_emp;
-- select 'x' from tb_emp where empno=7800;
-- select 'x' from tb_emp where empno=7900;
-- select 'x' from dual where exists(select empno from tb_emp where empname like '张%')
-- select 'x' from dual where exists(select empno from tb_emp where empname like '赵%')
-- explain 生成执行计划
-- select empno,empname from tb_emp where empno=7800;
-- explain select empno,empname from tb_emp where empname='张三丰';
-- explain select empno,empname from tb_emp where empname like '张%';
-- 索引(index)
-- 索引可以加速查询所以应该在用于查询筛选条件的列上建立索引.
-- 索引会使用额外的存储空间而且会让增删改查变得更慢(因为要更新索引)
-- 所以不能滥用索引
-- create index idx_emp_empname on tb_emp(empname);
-- explain select empno,empname from tb_emp where empname='张三丰';
-- drop index idx_emp_emname on tb_emp;

-- 视图:查询的快照(简化查询操作)
-- 通过视图可以将用户访问权限限制到某些指定的列上
-- 查询所有部门的名称和人数
-- create view vw_dept_emp_count as
-- select dpname ,total from tb_dept t1 left join (select dpno,count(dpno) as total from tb_emp group by dpno) t2 on t1.dpno=t2.dpno;
-- select * from vw_dept_emp_count;
-- drop view vm_dept_emp_count;
-- select * from vw_dept_emp_count
-- 重新定义界定符为$$
-- delimiter $$
-- 创建存储过程
-- deptno 输入参数, out avgsal 输出参数
-- create procedure sp_dept_avg_sal(deptno int,out avgsal float)
-- begin
    -- select avg(sal) into avgsal from tb_emp where dpno=deptno;
-- end$$
-- 将界定符还原回;
-- delimiter ;
-- call sp_dept_avg_sal(1002,@a);
-- select @a from dual;
-- select avg(sal) from tb_emp where dpno=1002
-- 触发器:在执行增删改操作时可以触发其它的级联操作,但是有可能导致“锁表”现象,实际开发中尽量避免使用触发器
/*update tb_dept set dpno=1005 where dpno=1002;
delimiter $$
create trigger tr_dept_update
after update on tb_dept for each row
begin 
    update tb_emp set dpno=new.dpno where dpno=old.dpno;
end $$
delimiter ;*/

-- update tb_dept set dpno=1005 where dpno=1001

-- DCL:授予权限(grant to) 和召回权限(revoke from)
-- HelloKitty可以从xx主机登录%:所有主机,localhost本机,IP:IP 地址的主机
-- create user "Hellokitty"@"120.10.20.30"/"%"/"localhost"
-- drop user "HelloKitty"@'%';
-- create user "helloKitty" @"%" identified by '123123';
-- 将数据库中hrs的所有权限给helloKitty
-- grant all privileges on hrs.* to "helloKitty"@'%';
-- revoke insert,delete,update on hrs.* from "helloKitty"@'%';
-- 事务(transaction) --把多个增删改做成一个不可分割的原子性操作
-- 要么全部都做,要么全都不做
-- begin/start transaction 
delete from tb_emp;
begin;
delete from tb_emp;
-- commit提交(事务中的所有操作都生效)
commit;
-- 回滚(事务中的所有操作都撤销)
rollback;

在MySQL会话中执行SET SQL_SAFE_UPDATES = 0;命令来关闭安全更新模式。注意,这仅影响当前会话,并且在会话结束时将恢复为之前的设置
SET SQL_SAFE_UPDATES = 0;

相关文章:

Mysql 笔记2 emp dept HRs

-- 注意事项 -- 1.给数据库和表起名字时尽量选择全小写 -- 2.作为筛选条件的字符串是否区分大小写看设置的校对规则utf8_bin 区分 drop database if exists hrs; create database hrs default charset utf8 collate utf8_general_ci;use hrs; drop table if exists tb_emp; dro…...

MySQL和Oracle的区别

MySQL和Oracle的区别 MySQL是轻量型数据库,并且免费,没有服务恢复数据。 Oracle是重量型数据库,收费,Oracle公司对Oracle数据库有任何服务。 1.对事务的提交 MySQL默认是自动提交,而Oracle默认不自动提交&#xff0…...

实验12 C语言连接和操作MySQL数据库

一、安装MySQL 1、使用包管理器安装MySQL sudo apt update sudo apt install mysql-server2、启动MySQL服务: sudo systemctl start mysql3、检查MySQL服务状态: sudo systemctl status mysql二、安装MySQL开发库 sudo apt-get install libmysqlcli…...

09篇--图片的水印添加(掩膜的运用)

如何添加水印? 添加水印其实可以理解为将一张图片中的某个物体或者图案提取出来,然后叠加到另一张图片上。具体的操作思想是通过将原始图片转换成灰度图,并进行二值化处理,去除背景部分,得到一个类似掩膜的图像。然后…...

sql-labs(21-25)

第21关 第一步 可以发现cookie是经过64位加密的 我们试试在这里注入 选择给他编码 发现可以成功注入 爆出表名 爆出字段 爆出数据 第22关 跟二十一关一模一样 闭合换成" 第 23 关 第二十三关重新回到get请求,会发现输入单引号报错,但是注释符…...

CTF知识集-命令执行

CTF知识集-命令执行 写在开头可能会用到的提醒 ;可以用%0a来替换 是shell_exec的缩写 ls | tee 1 把ls的输出内容存入1这个文件 shell查看文件的几种方式,tac | more | less | tail | sort | tac | cat | head | od | expand 针对flag 可以用grep { flag.php来…...

基于米尔全志T527开发板的OpenCV进行手势识别方案

本文将介绍基于米尔电子MYD-LT527开发板(米尔基于全志T527开发板)的OpenCV手势识别方案测试。 摘自优秀创作者-小火苗 米尔基于全志T527开发板 一、软件环境安装 1.安装OpenCV sudo apt-get install libopencv-dev python3-opencv 2.安装pip sudo apt…...

Htpp中web通讯发送post(上传文件)、get请求

一、正常发送post请求 1、引入pom文件 <dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5</version></dependency>2、这个是发送至正常的post、get请求 import org…...

【论文阅读笔记】HunyuanVideo: A Systematic Framework For Large Video Generative Models

HunyuanVideo: A Systematic Framework For Large Video Generative Models 前言引言Overview数据预处理数据过滤数据注释 模型架构设计3D Variational Auto-encoder Designtraininginference 统一的图像和视频生成架构Text encoderModel ScalingImage model scaling lawvideo …...

SpringBoot的事务钩子函数

如果需要在A方法执行完成之后做一个不影响主方法运行的动作B&#xff0c;我们需要判断这个A方法是否存在事务&#xff0c;并且使用异步执行动作B&#xff1b; import org.springframework.transaction.support.TransactionSynchronization; import org.springframework.transa…...

源码安装PHP-7.2.19

源码安装PHP-7.2.19 1.解压 tar -xjvf php-7.2.19.tar.bz2.编译 -prefix安装路径 cd php-7.2.19 ./configure --prefix/home/work/study 成功输出 3.make(构建) makemake testmake installlinux对php操作的一些命令 # 进入到php [rootvdb1 study]# cd php/ [rootvdb1 st…...

UE5制作伤害浮动数字

效果演示&#xff1a; 首先创建一个控件UI 添加画布和文本 文本设置样式 添加伤害浮动动画&#xff0c;根据自己喜好调整&#xff0c;我设置了缩放和不透明度 添加绑定 转到事件图表&#xff0c;事件构造设置动画 创建actor蓝图类 添加widget 获取位置 设置位移 创建一个被击中…...

学习日志024--opencv中处理轮廓的函数

目录 前言​​​​​​​ 一、 梯度处理的sobel算子函数 功能 参数 返回值 代码演示 二、梯度处理拉普拉斯算子 功能 参数 返回值 代码演示 三、Canny算子 功能 参数 返回值 代码演示 四、findContours函数与drawContours函数 功能 参数 返回值 代码演示 …...

(2024年最新)Linux(Ubuntu) 中配置静态IP(包含解决每次重启后配置文件失效问题)

Hello! 亲爱的小伙伴们&#xff0c;大家好呀&#xff08;Smile~&#xff09;&#xff01;我是Huazzi&#xff0c;欢迎观看本篇博客&#xff0c;接下来让我们一起来学习一下Ubuntu 中如何配置静态IP吧&#xff01;祝你有所收获&#xff01; 提前对Linux有所了解的小伙伴应该知道…...

DPDK用户态协议栈-TCP Posix API 2

tcp posix api send发送 ssize_t nsend(int sockfd, const void *buf, size_t len, __attribute__((unused))int flags) {ssize_t length 0;void* hostinfo get_host_fromfd(sockfd);if (hostinfo NULL) {return -1;}struct ln_tcp_stream* stream (struct ln_tcp_stream…...

[IT项目管理]项目时间管理(本章节3w字爆肝)

七.项目时间管理 7.1 项目进度的重要性 为什么要重视项目进度&#xff1a;在项目进行的过程之中会遇到变故。但是不论项目中发生了什么&#xff0c;时间总是在流逝&#xff0c;就可能会导致项目不可以在规定的时间完成。 7.2可能影响项目进度的因素 有员工离职个人的工作方…...

【python因果库实战5】使用银行营销数据集研究营销决策的效果5

目录 接触次数的效应 重新定义治疗变量和潜在混杂因素 更深入地审视干预情景 逆概率加权 标准化 总结及与非因果分析的比较 接触次数的效应 我们现在转而研究当前营销活动中接触次数的数量&#xff08;campaign&#xff09;对积极结果发生率的影响。具体来说&#xff0c;…...

【Qt】QWidget中的常见属性及其功能(二)

目录 六、windowOpacity 例子&#xff1a; 七、cursor 例子&#xff1a; 八、font 九、toolTip 例子&#xff1a; 十、focusPolicy 例子&#xff1a; 十一、styleSheet 计算机中的颜色表示 例子&#xff1a; 六、windowOpacity opacity是不透明度的意思。 用于设…...

9 OOM和JVM退出。OOM后JVM一定会退出吗?

首先我们把两个概念讲清楚 OOM是线程在申请堆内存&#xff0c;发现堆内存空间不足时候抛出的异常。 JVM退出的条件如下&#xff1a; java虚拟机在没有守护线程的时候会退出。守护线程是启动JVM的线程&#xff0c;服务于用户线程。 我们简单说下守护线程的功能: 1.日志的记录…...

学习笔记070——Java中【泛型】和【枚举】

文章目录 1、泛型1.1、为什么要使用泛型&#xff1f;1.2、泛型的应用1.3、泛型通配符1.4、泛型上限和下限1.5、泛型接口 2、枚举 1、泛型 Generics 是指在定义类的时候不指定类中某个信息&#xff08;属性/方法返回值&#xff09;的具体数据类型&#xff0c;而是用一个标识符来…...

springboot 百货中心供应链管理系统小程序

一、前言 随着我国经济迅速发展&#xff0c;人们对手机的需求越来越大&#xff0c;各种手机软件也都在被广泛应用&#xff0c;但是对于手机进行数据信息管理&#xff0c;对于手机的各种软件也是备受用户的喜爱&#xff0c;百货中心供应链管理系统被用户普遍使用&#xff0c;为方…...

java 实现excel文件转pdf | 无水印 | 无限制

文章目录 目录 文章目录 前言 1.项目远程仓库配置 2.pom文件引入相关依赖 3.代码破解 二、Excel转PDF 1.代码实现 2.Aspose.License.xml 授权文件 总结 前言 java处理excel转pdf一直没找到什么好用的免费jar包工具,自己手写的难度,恐怕高级程序员花费一年的事件,也…...

Golang dig框架与GraphQL的完美结合

将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用&#xff0c;可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器&#xff0c;能够帮助开发者更好地管理复杂的依赖关系&#xff0c;而 GraphQL 则是一种用于 API 的查询语言&#xff0c;能够提…...

WEB3全栈开发——面试专业技能点P2智能合约开发(Solidity)

一、Solidity合约开发 下面是 Solidity 合约开发 的概念、代码示例及讲解&#xff0c;适合用作学习或写简历项目背景说明。 &#x1f9e0; 一、概念简介&#xff1a;Solidity 合约开发 Solidity 是一种专门为 以太坊&#xff08;Ethereum&#xff09;平台编写智能合约的高级编…...

【电力电子】基于STM32F103C8T6单片机双极性SPWM逆变(硬件篇)

本项目是基于 STM32F103C8T6 微控制器的 SPWM(正弦脉宽调制)电源模块,能够生成可调频率和幅值的正弦波交流电源输出。该项目适用于逆变器、UPS电源、变频器等应用场景。 供电电源 输入电压采集 上图为本设计的电源电路,图中 D1 为二极管, 其目的是防止正负极电源反接, …...

nnUNet V2修改网络——暴力替换网络为UNet++

更换前,要用nnUNet V2跑通所用数据集,证明nnUNet V2、数据集、运行环境等没有问题 阅读nnU-Net V2 的 U-Net结构,初步了解要修改的网络,知己知彼,修改起来才能游刃有余。 U-Net存在两个局限,一是网络的最佳深度因应用场景而异,这取决于任务的难度和可用于训练的标注数…...

一些实用的chrome扩展0x01

简介 浏览器扩展程序有助于自动化任务、查找隐藏的漏洞、隐藏自身痕迹。以下列出了一些必备扩展程序&#xff0c;无论是测试应用程序、搜寻漏洞还是收集情报&#xff0c;它们都能提升工作流程。 FoxyProxy 代理管理工具&#xff0c;此扩展简化了使用代理&#xff08;如 Burp…...

十二、【ESP32全栈开发指南: IDF开发环境下cJSON使用】

一、JSON简介 JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;具有以下核心特性&#xff1a; 完全独立于编程语言的文本格式易于人阅读和编写易于机器解析和生成基于ECMAScript标准子集 1.1 JSON语法规则 {"name"…...

Spring Boot 与 Kafka 的深度集成实践(二)

3. 生产者实现 3.1 生产者配置 在 Spring Boot 项目中&#xff0c;配置 Kafka 生产者主要是配置生产者工厂&#xff08;ProducerFactory&#xff09;和 KafkaTemplate 。生产者工厂负责创建 Kafka 生产者实例&#xff0c;而 KafkaTemplate 则是用于发送消息的核心组件&#x…...

汇编语言学习(三)——DoxBox中debug的使用

目录 一、安装DoxBox&#xff0c;并下载汇编工具&#xff08;MASM文件&#xff09; 二、debug是什么 三、debug中的命令 一、安装DoxBox&#xff0c;并下载汇编工具&#xff08;MASM文件&#xff09; 链接&#xff1a; https://pan.baidu.com/s/1IbyJj-JIkl_oMOJmkKiaGQ?pw…...