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

mysql其他对象

一、存储引擎

mysql的存储引擎包括:

InnoDB,MyISAM,Memory(Heap),Archive,CSV,NDB Cluster

常用的只有前两个。

InnoDB与MyISAM的区别

InnoDB

  • 简介:InnoDB是MySQL的默认存储引擎,从MySQL 5.5版本开始被广泛使用。它提供了事务处理、行级锁定和外键约束等高级数据库功能。

  • 特性

    • 支持事务处理(ACID特性):确保数据的一致性、完整性和可靠性。
    • 支持行级锁定:提高了并发性能,避免了对整个表或大部分表的加锁。
    • 支持外键约束:确保数据的引用完整性。
    • 支持多版本并发控制(MVCC):允许读操作不阻塞写操作,提高了并发性能。
    • 提供崩溃恢复功能:能在意外断电或故障时恢复未完成的事务。
  • 适用场景:适用于需要高并发写入操作、数据完整性要求高的应用程序,如银行系统、电子商务网站等。

MyISAM

  • 简介:MyISAM是MySQL中较早的存储引擎,在早期版本的MySQL中被广泛使用。它以其快速的读操作性能而著称。

  • 特性

    • 不支持事务处理和行级锁定,只支持表级锁定。这在一定程度上限制了其并发性能,但在读多写少的场景下表现良好。
    • 读写速度较快,特别是读操作。因为表级锁定减少了写操作的冲突,使得读操作能够更高效地执行。
    • 支持全文索引:适用于需要快速搜索和匹配文本数据的场景。
    • 占用存储空间较小,因为对数据的压缩和文件大小的管理相对简单。
  • 适用场景:适合读多写少的场景,如只读数据报表、静态内容存储等。此外,MyISAM还适用于需要全文搜索功能的场景。

二、视图

视图是一张虚表,行和列数据来自定义视图的查询中使用的表 (基表),并且是在使用视图时动态生成的。
语法结构
CREATE [OR REPLACE] VIEW 视图名称[(列名列表)] AS SELECT语句 [WITH[CASCADED] CHECK OPTION]

[WITH[CASCADED] CHECK OPTION]是视图检查选项,插入、更新或删除操作必须满足所有相关视图的条件。

视图的基本操作
查询视图
SHOW CREATE VIEW 视图名称;
SELECT * FROM 视图名称;
修改视图
方式一:CREATE [OR REPLACE] VIEW 视图名称 AS SELECT语句 [WITH[CASCADED] CHECK OPTION]
方式二:ALTER VIEW 视图名称 AS SELECT语句 [WITH[CASCADED] CHECK OPTION]
删除视图
DROP VIEW [IF EXISTS] 视图名称 [,视图名称]……

视图更新

要使视图可更新,视图中的行与基础表中的行之间必须存在一对一的关系。如果视图包含以下任何一项,则该视
图不可更新:
1. 聚合函数或窗口函数(SUM()、MIN()、MAX()、COUNT()等)
2. DISTINCT
3. GROUP BY
4. HAVING4.
5. UNION 或者 UNION ALL

三、存储过程

1、语法结构:

创建
CREATE PROCEDURE 存储过程名称([参数列表])
BEGIN
-- SQL语句
END;
调用
CALL 名称([参数])

存储过程的查看、删除:

查看
SELECT * FROM INFORMATION_SCHEMA.ROUTINES WHERE ROUTINE_SCHEMA=’库名’
SHOW CREATE PROCEDURE 存储过程名称;
删除
DROP PROCEDURE IF EXISTS 存储过程名称;

2、变量

(1)系统变量

查看系统变量
SHOW [SESSION|GLOBAL] VARIABLES; -- 查看所有系统变量
SHOW [SESSION|GLOBAL] VARIABLES LIKE ‘……’ ; -- 可以通过LIKE模糊匹配方式查找变量
SELECT @@[SESSIOON|GLOBAL] 系统变量名; -- 查看指定变量的值
设置系统变量
SET [SESSIOON|GLOBAL] 系统变量名=值;
SET @@[SESSIOON|GLOBAL] 系统变量名=值;

(2)用户自定义变量

用户定义变量是用户根据需要自己定义的变量,用户变量不用提前声明,在用的时候直接用“@变量名”使用就可以。
其作用域为当前连接。
语法结构
SET @var_name=expr[,@var_name=expr]...;
SET @var_name:=exp [,@var_name :=expr]...;
SELECT @var_name:=expr [,@var_name :=expr]...;
SELECT 字段名 INTO @var_name FROM 表名;
使用
SELECT @var_name;

(3)局部变量

局部变量 是根据需要定义的在局部生效的变量,访问之前,需要DECLARE声明。可用作存储过程内的局部变量和输入参数,局部变量的范围是在其内声明的BEGIN ... END块。
语法结构
DECLARE 变量名 变量类型 [DEFAULT ...];
赋值
SET 变量名=值;
SET 变量名:=值;
SELECT 字段名 INTO 变量名 FROM 表名...;

3、分支语句

(1)if

语法结构:

if - 条件- then -语句 -elseif -条件- then -语句- -else -语句 -end if;

(2)case

case- 条件变量 -when-语句 -then-语句 -end case

4、循环语句

(1)while do

语法结构:

while 条件 do 循环体 end while

条件为真执行循环体

(2)repeat循环

语法结构:

repeat - 循环体 - until - 条件 - end repeat

repeat是有条件的循环控制语句,当满足条件的时候退出循环

(3)loop循环 

无条件循环,通常用来写死循环用。

LEAVE:配合循环使用,退出循环。
ITERATE:必须用在循环中,作用是跳过当前循环剩下的语句,直接进入下一次循环。

 5、参数列表

参数类型三种
1、IN(默认):该类参数作为输入,调用时需要传入值
2、OUT:该类参数作为输出,参数可以作为返回值
3、INOUT:既可以作为输入参数,也可以作为输出参数
语法结构
CREATE PROCEDURE 存储过程名称([IN/OUT/INOUT 参数名 参数类型])
BEGIN
-- SQL语句
END;

四、游标

查询结果为多多列,无法赋值给一个变量,这个时候我们就可以使用游标来存储数据。
声明游标
DECLARE 游标名称 CURSOR FOR 查询语句;
打开游标
OPEN 游标名称;
获取游标记录
FETCH 游标名称 INTO 变量[,变量];
关闭游标
CLOSE 游标名称;
declare e_cursor cursor for select enane,job,sal from t_emp where sal > esal;--给游标赋值
declare exit handler for SQLSTATE '02000’ close e_cursor;--异常处理
open e_cursor; --开启游标
while true do
fetch e_cursor into e_ename,e_job,e_sal;-- 游标赋值给变量,与查询顺序一致
insert into t_emp_pro values (null,e_ename,e_job,e_sal);
end while;
close e_cursor;--关闭游标

条件处理程序

条件处理程序(Handler)可以用来定义在流程控制结构执行过程中遇到问题时相应的处理步骤
handler_action:
CONTINUE:继续执行当前程序
EXIT:终止执行当前程序
condition_value:
SQLSTATE sqlstate_value:状态码,如02000
SQLWARNING:所有以01开头的SQLSTATE代码的简写
NOT FOUND:所有以02开通的SQLSTATE代码的简写
SQLEXCEPTION:所有没有被SQLWARNING或NOT FOUND捕获的SQLSTATE代码的简写

 例如declare exit handler for SQLSTATE '02000' close e_cursor;

  • declare exit handler:声明一个退出时的异常处理器。这意味着当程序执行到这一点之后,如果遇到指定的异常条件,这个处理器将被触发。
  • for SQLSTATE '02000':指定异常处理器要处理的SQL状态码。SQLSTATE '02000' 是一个特定的状态码,代表“无数据”(No Data)。这通常发生在尝试从一个游标(cursor)中获取数据,但游标已经遍历完所有记录时。
  • close e_cursor:当上述条件满足时,执行的操作是关闭名为e_cursor的游标。

五、存储函数

存储函数是有返回值的存储过程,存储函数的参数只能是IN类型的。
语法结构:
CREATE FUNCTION 存储函数名称([参数列表])
RETURNS type [characteristic...]
BEGIN
-- SQL语句
RETURN...;
END;
characteristic说明:
DETERMINISTIC:相同的输入参数总是产生相同的结果
NO SQL:不包含SQL语句。
READS SQL DATA:包含读取数据的语句,但不包含写入数据的语句。

六、触发器

触发器是与表有关的数据库对象,指在 insert/update/delete 之前或之后,触发并执行触发器中定义的SOL语句集合。
创建
CREATE TRIGGER trigger_name
BEFORE/ALTER INSERT/UPDATE/DELETE
ON tbl_name FOR EACH ROW -- 行级触发器
BEGIN
tigger_stmt;
END;
查看
SHOW TRIGGERS;
删除
DROP TRIGGER [schema_name.]trigger_name; -- 如果没有指定schema_name,默认为当前数据库。

相关文章:

mysql其他对象

一、存储引擎 mysql的存储引擎包括: InnoDB,MyISAM,Memory(Heap),Archive,CSV,NDB Cluster 常用的只有前两个。 InnoDB与MyISAM的区别: InnoDB 简介:Inn…...

英语单词之社会生活之聚会

一些关于聚会的单词和短语 句子 English中文What’s the plan?计划是什么?I’m going out with some friends.我要跟几个朋友一起出去。I don’t really feel like going out.我不是很想出去。What time suits you ?你什么时间合适?Where shall we m…...

Qt - 地图相关 —— 1、加载百度在线地图(附源码)

效果图 开始加载地图 1、百度地图开发者网站中注册,获取密钥 2、进入开发文档中 将下图内容保存到本地文件中,文件名为"index.html"文件即可。接着将内容中的“您的密钥”改为刚刚创建应用出来的AK密钥即可。 然后双击打开若在浏览器中正常看到下图右侧地图则说明没…...

Elasticsearch 简单使用

Elasticsearch 安装和基本操作 一、引言 Elasticsearch 是一个基于 Lucene 构建的开源分布式搜索引擎,提供了实时的搜索和数据分析能力。它广泛应用于日志分析、全文搜索、数据可视化等场景。本文将详细介绍 Elasticsearch 的安装步骤及基本操作,包括索…...

基于SpringBoot+Vue+uniapp微信小程序的垃圾分类系统的详细设计和实现(源码+lw+部署文档+讲解等)

项目运行截图 技术框架 后端采用SpringBoot框架 Spring Boot 是一个用于快速开发基于 Spring 框架的应用程序的开源框架。它采用约定大于配置的理念,提供了一套默认的配置,让开发者可以更专注于业务逻辑而不是配置文件。Spring Boot 通过自动化配置和约…...

基于深度学习的车辆车型检测识别系统(YOLOV5)

界面图: 项目简介: 网络:深度学习网络 yoloV5 软件:PycharmAnaconda 环境:python3.8 opencv PyQt5 torch1.9 文件:训练集8000张图片 测试集1000张图片 系统包含所有文件夹 环境文件 UI文件 功能&a…...

Java开发中知识点整理

正则表达式 测试网址 Git 分支和主分支有冲突 先checkout origin/分支把origin/master pull进本地分支 修改冲突MergeCommit and Push...

【css-在一个元素中设置font-size和实际渲染字体大小不一致】

首先,这个不是bug,是Chromium内核提高移动端文本可读性的一个特性,叫做这个特性被称做「Text Autosizer」,又称「Font Boosting」、「Font Inflation」 解决方案: 使用-webkit-text-size-adjust 给元素设置 -webkit-te…...

LabVIEW提高开发效率技巧----用户权限控制

在LabVIEW开发中,用户权限控制是一个重要的设计模块,尤其在多用户系统中,它可以确保数据安全并控制不同用户的操作权限。为了实现用户权限控制,可以通过角色与权限管理模块来进行设计和实施。以下将从多个角度详细说明如何在LabVI…...

如何快速学会盲打

今天就来给大家分享一下如何快速学会盲打 盲打的基本方法和步骤 手指放置:将双手放在键盘上,左手食指放在F键上,右手食指放在J键上,其他手指分别放在相邻的键位上。熟悉键盘布局:学习26个字母的位置,以及…...

如何通过外链组合套餐提升外贸网站的整体表现?

在SEO优化中,单一的外链形式很难覆盖所有需求,特别是对于那些竞争激烈的行业。通过高低搭配的外链组合套餐成为越来越多企业的选择 简单来说,外链组合套餐是将不同质量、不同类型的外链进行合理搭配,从而最大化地提升网站的多维度…...

MySQL—事务

目录 1.事务的简介: 2.使用事务 2.1 开启事务 2.2 自动提交 2.3 使用范围 2.4 事务的属性 1.事务的简介: 介绍事务之前,我们先来看一个经典的场景:银行转账。 假如a想要把自己的账户上的10万块钱转到b账户上,这…...

二、PyCharm基本设置

PyCharm基本设置 前言一、设置中文汉化二、设置代码字体颜色三、设置鼠标滚轮调整字体大小四、修改 PyCharm 运行内存4.1 方式一4.1 方式二 五、显示 PyCharm 运行时内存六、设置代码模版配置的参数有: 七、PyCharm设置背景图总结 前言 为了让我们的 PyCharm 更好用…...

SSH流量秒变HTTPS —— 筑梦之路

背景说明 很多时候对外开放仅有80 443端口,若想要ssh服务器是比较困难的。这里介绍使用opensslHAProxy绕过限制。 解决思路 把SSH流量伪装成HTTPS流量,从443端口传输。 OpenSSL: 一个强大的开源加密工具包,我们用它来给SSH流量加密,让它看起来像HTTPS。 HAProxy…...

tkinter Listbox 列表框实现多列对齐排列并绑定下拉框和滚动条

from tkinter import * from tkinter import ttk, Button, Canvas, Listbox, Entry, LabelFrame, IntVar, Checkbutton, messageboximport win32print root Tk() root.title("tkinter Listbox 列表框实现多列对齐排列") root.geometry(550x450)def callback2(t, eve…...

Kafka 启用 JMX

以下是在 Kafka 服务启动时启用 JMX 的步骤: 找到 Kafka 的启动脚本,通常在 Kafka 安装目录的 bin 子目录下 编辑启动脚本(例如 kafka-server-start.sh),在其中设置 JMX 参数。 在启动脚本中添加以下环境变量设置&a…...

G1(Garbage First)垃圾回收实战

GC过程 G1(Garbage First)是JVM中的一种垃圾回收器,设计用于处理具有大堆内存的应用程序,减少GC停顿时间,并提供更可预测的垃圾回收性能。G1的垃圾回收过程主要分为以下几个阶段: 1. 年轻代垃圾回收&…...

ESP32-IDF 通用定时器 GPTimer

目录 一、基本介绍1、配置结构体1.1 gptimer_config_t1.2 gptimer_event_callbacks_t1.3 gptimer_alarm_config_t 2、常用 API2.1 gptimer_new_timer2.2 gptimer_del_timer2.3 gptimer_set_raw_count2.4 gptimer_get_raw_count2.5 gptimer_get_resolution2.6 gptimer_get_captu…...

C#学习笔记(十)

C#学习笔记(十) 第七章 对象的构造方法与实例方法一、对象的构造方法1. 构造方法初识2. 构造方法的创建3. this关键字4. 构造方法的规范和重载4.1 构造方法的规范 5. 对象初始化器5.1 对象初始化器和构造方法的区别 二、对象的实例方法1. 简单应用2.实例…...

出手!快手可灵开源版,AI视频生成整合包!

在2024年,人工智能领域迎来了一位新星——AI视频生成技术。在这场技术革命中,快手推出的可灵AI无疑是最耀眼的明星之一。然而,其高昂的年费让不少用户望而却步,毕竟数千元的开销对于普通人来说是个不小的负担。 幸运的是&#xff…...

模型参数、模型存储精度、参数与显存

模型参数量衡量单位 M:百万(Million) B:十亿(Billion) 1 B 1000 M 1B 1000M 1B1000M 参数存储精度 模型参数是固定的,但是一个参数所表示多少字节不一定,需要看这个参数以什么…...

SCAU期末笔记 - 数据分析与数据挖掘题库解析

这门怎么题库答案不全啊日 来简单学一下子来 一、选择题(可多选) 将原始数据进行集成、变换、维度规约、数值规约是在以下哪个步骤的任务?(C) A. 频繁模式挖掘 B.分类和预测 C.数据预处理 D.数据流挖掘 A. 频繁模式挖掘:专注于发现数据中…...

srs linux

下载编译运行 git clone https:///ossrs/srs.git ./configure --h265on make 编译完成后即可启动SRS # 启动 ./objs/srs -c conf/srs.conf # 查看日志 tail -n 30 -f ./objs/srs.log 开放端口 默认RTMP接收推流端口是1935,SRS管理页面端口是8080,可…...

【JavaWeb】Docker项目部署

引言 之前学习了Linux操作系统的常见命令,在Linux上安装软件,以及如何在Linux上部署一个单体项目,大多数同学都会有相同的感受,那就是麻烦。 核心体现在三点: 命令太多了,记不住 软件安装包名字复杂&…...

Unsafe Fileupload篇补充-木马的详细教程与木马分享(中国蚁剑方式)

在之前的皮卡丘靶场第九期Unsafe Fileupload篇中我们学习了木马的原理并且学了一个简单的木马文件 本期内容是为了更好的为大家解释木马(服务器方面的)的原理,连接,以及各种木马及连接工具的分享 文件木马:https://w…...

网站指纹识别

网站指纹识别 网站的最基本组成:服务器(操作系统)、中间件(web容器)、脚本语言、数据厍 为什么要了解这些?举个例子:发现了一个文件读取漏洞,我们需要读/etc/passwd,如…...

区块链技术概述

区块链技术是一种去中心化、分布式账本技术,通过密码学、共识机制和智能合约等核心组件,实现数据不可篡改、透明可追溯的系统。 一、核心技术 1. 去中心化 特点:数据存储在网络中的多个节点(计算机),而非…...

rknn toolkit2搭建和推理

安装Miniconda Miniconda - Anaconda Miniconda 选择一个 新的 版本 ,不用和RKNN的python版本保持一致 使用 ./xxx.sh进行安装 下面配置一下载源 # 清华大学源(最常用) conda config --add channels https://mirrors.tuna.tsinghua.edu.cn…...

基于stm32F10x 系列微控制器的智能电子琴(附完整项目源码、详细接线及讲解视频)

注:文章末尾网盘链接中自取成品使用演示视频、项目源码、项目文档 所用硬件:STM32F103C8T6、无源蜂鸣器、44矩阵键盘、flash存储模块、OLED显示屏、RGB三色灯、面包板、杜邦线、usb转ttl串口 stm32f103c8t6 面包板 …...

工厂方法模式和抽象工厂方法模式的battle

1.案例直接上手 在这个案例里面,我们会实现这个普通的工厂方法,并且对比这个普通工厂方法和我们直接创建对象的差别在哪里,为什么需要一个工厂: 下面的这个是我们的这个案例里面涉及到的接口和对应的实现类: 两个发…...