当前位置: 首页 > 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…...

Leetcode 3576. Transform Array to All Equal Elements

Leetcode 3576. Transform Array to All Equal Elements 1. 解题思路2. 代码实现 题目链接:3576. Transform Array to All Equal Elements 1. 解题思路 这一题思路上就是分别考察一下是否能将其转化为全1或者全-1数组即可。 至于每一种情况是否可以达到&#xf…...

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以? 在 Golang 的面试中,map 类型的使用是一个常见的考点,其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

在 Nginx Stream 层“改写”MQTT ngx_stream_mqtt_filter_module

1、为什么要修改 CONNECT 报文? 多租户隔离:自动为接入设备追加租户前缀,后端按 ClientID 拆分队列。零代码鉴权:将入站用户名替换为 OAuth Access-Token,后端 Broker 统一校验。灰度发布:根据 IP/地理位写…...

论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)

笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...

C++.OpenGL (10/64)基础光照(Basic Lighting)

基础光照(Basic Lighting) 冯氏光照模型(Phong Lighting Model) #mermaid-svg-GLdskXwWINxNGHso {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-GLdskXwWINxNGHso .error-icon{fill:#552222;}#mermaid-svg-GLd…...

BCS 2025|百度副总裁陈洋:智能体在安全领域的应用实践

6月5日,2025全球数字经济大会数字安全主论坛暨北京网络安全大会在国家会议中心隆重开幕。百度副总裁陈洋受邀出席,并作《智能体在安全领域的应用实践》主题演讲,分享了在智能体在安全领域的突破性实践。他指出,百度通过将安全能力…...

涂鸦T5AI手搓语音、emoji、otto机器人从入门到实战

“🤖手搓TuyaAI语音指令 😍秒变表情包大师,让萌系Otto机器人🔥玩出智能新花样!开整!” 🤖 Otto机器人 → 直接点明主体 手搓TuyaAI语音 → 强调 自主编程/自定义 语音控制(TuyaAI…...

OPenCV CUDA模块图像处理-----对图像执行 均值漂移滤波(Mean Shift Filtering)函数meanShiftFiltering()

操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 在 GPU 上对图像执行 均值漂移滤波(Mean Shift Filtering),用于图像分割或平滑处理。 该函数将输入图像中的…...

技术栈RabbitMq的介绍和使用

目录 1. 什么是消息队列?2. 消息队列的优点3. RabbitMQ 消息队列概述4. RabbitMQ 安装5. Exchange 四种类型5.1 direct 精准匹配5.2 fanout 广播5.3 topic 正则匹配 6. RabbitMQ 队列模式6.1 简单队列模式6.2 工作队列模式6.3 发布/订阅模式6.4 路由模式6.5 主题模式…...

RSS 2025|从说明书学习复杂机器人操作任务:NUS邵林团队提出全新机器人装配技能学习框架Manual2Skill

视觉语言模型(Vision-Language Models, VLMs),为真实环境中的机器人操作任务提供了极具潜力的解决方案。 尽管 VLMs 取得了显著进展,机器人仍难以胜任复杂的长时程任务(如家具装配),主要受限于人…...