mysql数据库第十二课------mysql语句的拔高2------飞高高

作者前言

🎂 ✨✨✨✨✨✨🍧🍧🍧🍧🍧🍧🍧🎂
​🎂 作者介绍: 🎂🎂
🎂 🎉🎉🎉🎉🎉🎉🎉 🎂
🎂作者id:老秦包你会, 🎂
简单介绍:🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂🎂
喜欢学习C语言和python等编程语言,是一位爱分享的博主,有兴趣的小可爱可以来互讨 🎂🎂🎂🎂🎂🎂🎂🎂
🎂个人主页::小小页面🎂
🎂gitee页面:秦大大🎂
🎂🎂🎂🎂🎂🎂🎂🎂
🎂 一个爱分享的小博主 欢迎小可爱们前来借鉴🎂


mysql语句的提高

  • **作者前言**
  • 内置语句
    • with
    • instert into select
    • regexp
  • MySQL高级
    • 视图
    • 事务
  • 总结:

内置语句

with

创建一个 临时表,当有一部分数据在sql中被频繁用到,可以使用with储存临时数据
比如:select emp_no ,age from ( select * from new_employees limit 20 )as a;
括号内的就是一张临时表,这样创建的效果很差,如果下一条sql语句要使用就得再写一次,这样很麻烦,如果使用with来创建临时表就会便捷很多,
上面的代码创建的临时表只要出了这给sql语句范围会被销毁,当我们再使用这张表就会报错,因为这张表不存在,

 with 表格1 as
 (
    select 
        *
    from 
        new_employees
    limit 20
 )
 
 ( select
        emp_no
        ,age
        ,first_name
    from
        表格1
 );
with 表格2 as
 (
    select
        *
    from
        employees
    limit 20
 )
(select
    emp_no
    ,null as age
    ,first_name
from
    表格2) ;

而使用with创建一个临时表,会在内存申请一块空间进行存储,如果创建很多会造成内存很多被占用,造成mysql运行变慢,sql程序运行结束就消毁。而不使用with创建虽然可以减少内存占用,但是使用范围小,怎么创建临时表要看自己怎么来,

with创建多个临时表


  with 表格1 as
 (
    select 
        *
    from 
        new_employees
    limit 20
 )
 , 表格2 as
 (
    select
        *
    from
        employees
    limit 20
 )
  ( select
        emp_no
        ,age
        ,first_name
    from
        表格1
 )
 union all
 (select
    emp_no
    ,null as age
    ,first_name
from
    表格2);

instert into select

通过insert语句,将查询到的数据直接写入到目标表格中
前面我们的往表格插入语句是

insert into 表名(字段)values(内容)

表格创建
create table if not exists`学生表格1`
(
    `id` int  auto_increment not null  primary key  comment '学生id'
    ,`name` varchar(30) not null  default  "无名氏" comment '学生姓名'
    ,`age` int  not null comment'学生年龄'
    ,`date` date  comment '学生入校时间'
   
)engine = InnoDB default charset=utf8 comment= '表格1';

insert into select

insert into  学生表格1
(
     `id`
    ,`name`
    ,`age`
    ,`date`
)
select 
    emp_no
    ,first_name
    ,age
    ,birth_date
from new_employees;

注意一下,这个语句只能在一个数据库内进行数据的写入,不能跨数据库

regexp

下面插播一下符号
正则表达式
在这里插入图片描述
如果有看过我写过python的正则表达式的博客就会知道
*代表匹配0个或者多个字符
+代表至少匹配1个字符
^以…为开头
& 以…为结尾
. 任意一个字符
[]匹配里面的任意一个等
这里不过多介绍

那怎么在mysql使用正则表达式呢

REGEXP 或 regexp

select * from new_employees where first_name regexp "^G*";
select * from new_employees where first_name regexp "^G*";
select * from new_employees where first_name regexp "G+";
select * from new_employees where first_name regexp "z$";
select * from new_employees where first_name regexp "e|z$";

四则运算
在这里插入图片描述

select 
substring(birth_date,6,2) - month(now()) as 月份
,substring(birth_date,9,2) - day(now()) as 日期
,case when substring(birth_date,6,2) - month(now())= 0 and substring(birth_date,9,2) - day(now()) <=7 and substring(birth_date,9,2) - day(now()) >=0
    then "符合"
else "不符合" 
end 是否符合
from new_employees;

substring 字符分割
在数据库第十一课有介绍,

MySQL高级

视图

一张虚拟表,不具备数据储存功能,基本表数据发生了改变,视图也会跟着改变。仅仅是SQL查询
语句的结果集。它能够免去每次需要提取该数据的SQL语句查找时间。
视图的用途就是查询。提高数据复用性,提高了数据安全,更加清晰的展示了数据

简单的理解为视图就是查询语句的copy

   建表语句查询
show create table  学生表格1

视图的创建

create view  视图1 as
select 
    id 
    ,name 
    ,age
from 
    学生表格1;

如果学生表格1里面 的数据有更改,那么视图1里面的内容也会发生更改,就像软链接
在这里插入图片描述
假设屏幕5秒变一次,每变换一次发送一次sql请求,sql语句(还要进行计算等)执行是10秒一次,就会发现 ,请求大于执行,会对服务器造成负担,

使用视图,屏幕发送请求给视图,对计算不沾边,而表格每变化一次,视图就会变化一次,哪怕计算有每隔一段时间执行一次,获取到都是在执行时段的最新数据,
缺点就是如果上一次的sql语句没有执行完,而新一次的sql语句已经开始了,会造成数据的重新计算,

这就需要视图逻辑简单,原数据的更新频率不要太高

事务

例如我需要向张三转账1万块钱。首先,我需要检查自己账户上是否有1万块钱;然后,我的账户会
扣除1万块钱;最后,张三的账户上会增加一万块钱。到此,整个转账过程结束。将分解出来的三个步骤
1.查询
2.扣除自己的钱
3张三的钱增加
必须看作一个整体来执行完成的单位,叫做 事务

四大特性(简称ACID)
原子性(Atomicity)
一个事务必须被视为一个不可分割的最小工作单元,整个事务中的所有操作要么全部提交成功,要么全部失败回滚,对于一个事务来说,不可能只执行其中的一部分操作

一致性(Consistency)
数据库总是从一个状态转换到另一个状态。例如转钱的例子,无论是三步中的哪一个步骤失败,都会在三方显示操作失败。

隔离性(Isolation)
通常来说,一个事务所做的修改在最终提交以前,对其他事务是不可见。

持久性(Durability)
一旦事务提交,则其所做的修改会永久保存到数据库。此时即使系统崩溃,修改的数据也不会丢失。

事务命令
表的引擎类型必须是innodb类型才可以使用事务,show create table table_name; 可以看到表格引擎类型
在这里插入图片描述

-- 开启事务
begin;
start transaction;
-- 提交事务
commit;
-- 回滚事务
rollback;
-- 执行事务流程
begin; -- 开启事务模式
insert into table_name(name) values('zhouzhou'); -- 此时的数据还没有正式写入表中
commit; -- 执行了提交,新增的数据才正式写入表中
-- 如果发现写入的数据有问题可以将commit换成rollback(回滚),撤销这次写入

注意:
1、修改数据命令会自动的触发事务,包括insert、update、delete
2、SQL语句中,能够手动开启事务的原因是:可以进行多次数据的修改,如果成功一起成功,否则一起
会滚到之前的数据

总结:

本次mysql数据库的介绍到这里了,有不懂的小可爱可以私聊我

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【C++】开源:CGAL计算几何库配置使用

&#x1f60f;★,:.☆(&#xffe3;▽&#xffe3;)/$:.★ &#x1f60f; 这篇文章主要介绍CGAL计算几何库配置使用。 无专精则不能成&#xff0c;无涉猎则不能通。——梁启超 欢迎来到我的博客&#xff0c;一起学习&#xff0c;共同进步。 喜欢的朋友可以关注一下&#xff0c;…

【java】mybatis-plus代码生成

正常的代码生成这里就不介绍了。旨在记录实现如下功能&#xff1a; 分布式微服务环境下&#xff0c;生成的entity、dto、vo、feignClient等等api模块&#xff0c;需要和mapper、service、controller等等分在不同的目录生成。 为什么会出现这个需求&#xff1f; mybatis-plus&am…

【计算机视觉|生成对抗】用深度卷积生成对抗网络进行无监督表示学习(DCGAN)

本系列博文为深度学习/计算机视觉论文笔记&#xff0c;转载请注明出处 标题&#xff1a;Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks 链接&#xff1a;[1511.06434] Unsupervised Representation Learning with Deep Conv…

微信小程序中键盘弹起输入框自动跳到键盘上方处理

效果展示 键盘未弹起时 键盘弹起后&#xff1a; 实现方式 话就不多说了 我直接贴代码了 原理就是用你点击的输入框的底部 距离顶部的位置 减去屏幕高度除以2&#xff0c;然后设成负值&#xff0c;再将这个值给到最外层相对定位的盒子的top属性&#xff0c;这样就不会出现顶…

服务器安装JDK

三种方法 方法一&#xff1a; 方法二&#xff1a; 首先登录到Oracle官网下载JDK JDK上传到服务器中&#xff0c;记住文件上传的位置是在哪里&#xff08;我放的位置在/www/java&#xff09;&#xff0c;然后看下面指示进行安装 方法三&#xff1a; 首先登录到Oracle官网下载…

修改IDEA的idea.vmoptions参数导致IDEA无法打开(ReservedCodeCacheSize)

事发原因 Maven导依赖的时候OOM&#xff0c;因此怀疑是内存太小&#xff0c;尝试修改idea.vmoptions的参数&#xff0c;然后发现IDEA重启后打不开了&#xff0c;卸载重装后也无法打开。。。 实际上如果导包爆出OOM的话应该调整下图参数&#xff0c;不过这都是后话了 解决思路…

王道机组难题分析

第四章 指令系统 大端方式&#xff1a;就是高地址存放高位&#xff0c; LSB的意思是&#xff1a;全称为Least Significant Bit&#xff0c;在二进制数中意为最低有效位 MSB的意思是&#xff1a;全称为Most Significant Bit&#xff0c;在二进制数中属于最高有效位 操作数可以理…

HCIP学习--BGP2

目录 前置内容 BGP宣告问题 BGP自动汇总问题 BGP 的认证 BGP的聚合(汇总) 标准的BGP聚合配置 非标准的BGP聚合 路由传递干涉策略 抑制列表 Route-map 分发列表 前缀列表 BGP在MA网络中下一跳问题-ICMP重定向 查看与某个邻居收发的路由 配置 有条件打破IBGP水平…

腾讯云轻量应用服务器镜像应用模板清单大全

腾讯云轻量应用服务器支持多种应用模板镜像&#xff0c;Windows和Linux镜像模板都有&#xff0c;如&#xff1a;宝塔Linux面板腾讯云专享版、WordPress、WooCommerce、LAMP、Node.js、Docker CE、K3s、宝塔Windows面板和ASP.NET等应用模板镜像&#xff0c;腾讯云服务器网分享腾…

04 - 分离头指针情况、理解HEAD和branch

查看所有文章链接&#xff1a;&#xff08;更新中&#xff09;GIT常用场景- 目录 文章目录 1. 分离头指针2. HEAD和branch2.1 branch的一些操作2.2 HEAD 1. 分离头指针 分离头指针detached HEAD是一种HEAD指针指向了某一个具体的 commit id&#xff0c;而不是分支的情况。 切换…

HTTP请求性能分析 - 简单

使用随手可得的工具&#xff0c;尽量少的前置要求&#xff0c;来完成任务。 0. 目录 1. 前言2. 分析工具2.1 基于Chrome DevTools 的Timing2.1.1 关于Network标签页下的Timing部分2.1.2 一些注意项 2.2 基于Curl 命令 3. 剩下的工作 1. 前言 对于业务开发选手而言&#xff0c;…

Vision Transformer模型入门

Vision Transformer模型入门 一、Vision Transformer 模型1&#xff0c;Embedding 层结构详解2&#xff0c;Transformer Encoder 详解3&#xff0c;MLP Head 详解 二、ViT-B/16 网络结构三、Hybrid 模型详解四、ViT 模型搭建参数 一、Vision Transformer 模型 总体三个模块&am…

无涯教程-Perl - getprotobynumber函数

描述 此函数在标量context中将协议NUMBER转换为其对应的名称,在列表context中将其名称和相关信息转换为:($name,$aliases,$protocol_number)。 语法 以下是此函数的简单语法- getprotobynumber NUMBER返回值 此函数针对错误返回undef,否则返回标量context中的协议编号,并在…

HBase API

我们之后的实际开发中不可能在服务器那边直接使用shell命令一直敲的&#xff0c;一般都是通过API进行操作的。 环境准备 新建Maven项目&#xff0c;导入Maven依赖 <dependencies><dependency><groupId>org.apache.hbase</groupId><artifactId>…

Java中创建线程三种方式

继承Thread类创建线程实现Runnable接口创建线程使用Callable和Future创建线程 继承Thread类 /*** 使用集成Thread的方式实现多线程*/ public class Match1 {public static void main(String[] args) {Runner liuxiang new Runner();//创建一个新的线程liuxiang.setName(&quo…

当执行汇编指令MOV [0001H] 01H时,CPU都做了什么?

今天和几位单位大佬聊天时&#xff0c;讨论到一个非常有趣的问题-当程序执行MOV [0001H], 01H计算机实际上都做了哪些工作&#xff1f;乍一看这个问题平平无奇&#xff0c;CPU只是把立即数01H放在了地址为0001的内存里&#xff0c;但仔细想想这个问题远没有那么简单&#xff0c…

matlab解常微分方程常用数值解法1:前向欧拉法和改进的欧拉法

总结和记录一下matlab求解常微分方程常用的数值解法&#xff0c;本文先从欧拉法和改进的欧拉法讲起。 d x d t f ( x , t ) , x ( t 0 ) x 0 \frac{d x}{d t}f(x, t), \quad x\left(t_{0}\right)x_{0} dtdx​f(x,t),x(t0​)x0​ 1. 前向欧拉法 前向欧拉法使用了泰勒展开的第…

基于grpc从零开始搭建一个准生产分布式应用(2) - 工程构建

开始本章之前默认读者已经配置好了以下环境&#xff1a;Intellij IDEA 2022.1.2、JDK 1.8.0_144、Maven 3&#xff0c;另外也建议大家在一些免费代码托管平台开个帐号&#xff0c;这样就可以免费使用git做版本处理了&#xff0c;笔者自己私人使用的是阿里云的云效平台。因为此专…

Docker安装ElasticSearch/ES 7.4.0

目录 前言安装ElasticSearch/ES安装步骤1&#xff1a;准备1. 安装docker2. 搜索可以使用的镜像。3. 也可从docker hub上搜索镜像。4. 选择合适的redis镜像。 安装步骤2&#xff1a;拉取ElasticSearch镜像1 拉取镜像2 查看已拉取的镜像 安装步骤3&#xff1a;创建容器创建容器方…

ESP8266(RTOS SDK)内嵌网页以实现WEB配网以及数据交互

【本文发布于https://blog.csdn.net/Stack_/article/details/131997098&#xff0c;未经允许不得转载&#xff0c;转载须注明出处】 1、执行make menuconfig&#xff0c;将http头由512改为更大的值&#xff0c;否则用电脑浏览器访问正常&#xff0c;但用手机浏览器访问会因为ht…