首页 > 数据库 >MySQL索引事务

MySQL索引事务

时间:2024-07-03 18:58:09浏览次数:19  
标签:rand 事务 set return name 索引 str MySQL

开启学习之旅吧!活到老~学到老!

文章目录

目录

文章目录

前言

一、索引

1.查看索引

2.创建索引

3.删除索引

3.索引实例

二、事务

1.事务的概念

2.事务的使用


前言

本篇内容主要介绍 MySQL的索引与事务,并附上实例以便大家更容易理解。

一、索引

索引是一种特殊的文件,包含着对数据表里所有记录的引用指针。可以对表中的一列或多列创建索引, 并指定索引的类型,各类索引有各自的数据结构实现。索引所起的作用类似书籍目录,可用于快速定位、检索数据。

1.查看索引

show index from 表名;

主键约束(PRIMARY KEY)、唯一约束(UNIQUE)、外键约束(FOREIGN KEY)会自动创建对应列的索引。

#查看学生表已有的索引
show index from student;

2.创建索引

create index 索引名 on 表名(字段名);

对于非主键、非唯一约束、非外键的字段,可以创建普通索引。

#创建班级表中,name字段的索引
create index idx_classes_name on classes(name);

3.删除索引

drop index 索引名 on 表名;

#删除班级表中name字段的索引
drop index idx_classes_name on classes;

3.索引实例

-- 创建用户表
DROP TABLE IF EXISTS test_user;
 CREATE TABLE test_user (
 id_number INT,
 name VARCHAR(20) comment '姓名',
 age INT comment '年龄',
 create_time timestamp comment '创建日期'
 );
drop function if exists rand_name;

 create function rand_name(n INT, l INT)
 returns varchar(255)
 begin 
 declare return_str varchar(255) default '';
 declare i int default 0;
 while i < n do 
 if i=0 then
 set return_str = rand_string(l);
 else
 set return_str =concat(return_str,concat(' ', rand_string(l)));
 end if;
 set i = i + 1;
 end while;
 return return_str;
 end $$
 delimiter ;

// 产生随机字符串
drop function if exists rand_string;
 delimiter $$
 create function rand_string(n INT)
 returns varchar(255)
 begin 
 declare lower_str varchar(100) default
 'abcdefghijklmnopqrstuvwxyz';
 declare upper_str varchar(100) default
 'ABCDEFJHIJKLMNOPQRSTUVWXYZ';
 declare return_str varchar(255) default '';
 declare i int default 0;
 declare tmp int default 5+rand_num(n);
 while i < tmp do 
 if i=0 then
 set return_str = concat(return_str,substring(upper_str,floor(1+rand()*26),1));
 else
 set return_str = concat(return_str,substring(lower_str,floor(1+rand()*26),1));
 end if;
 set i = i + 1;
 end while;
 return return_str;
 end $$
 delimiter ;

//产生随机数字
drop function if exists rand_num;
 delimiter $$
 create function rand_num(n int)
 returns int(5)
 begin 
 declare i int default 0;
 set i = floor(rand()*n);
 return i;
 end $$
 delimiter ;

//向用户表批量添加数据
drop procedure if exists insert_user;
 delimiter $$
 create procedure insert_user(in start int(10),in max_num int(10))
 begin
 declare i int default 0; 
set autocommit = 0;  
 repeat
 set i = i + 1;
insert into test_user values ((start+i) ,rand_name(2,5),rand_num(120),CURRENT_TIMESTAMP);
 until i = max_num
 end repeat;
 commit;
 end $$
 delimiter ;

//执行存储过程,添加8000000条用户记录
call insert_user(1, 8000000);
create index idx_test_user_id_number on test_user(id_number);

二、事务

1.事务的概念

事务指逻辑上的一组操作,组成这组操作的各个单元,要么全部成功,要么全部失败。 在不同的环境中,都可以有事务。对应在数据库中,就是数据库事务。

2.事务的使用

(1)开启事务:start transaction;

(2)执行多条SQL语句;

(3)回滚或提交:rollback/commit;

说明:rollback即是全部失败,commit即是全部成功。

start transaction;  
 // 阿里巴巴账户减少2000
 update accout set money=money-2000 where name = '阿里巴巴';
//四十大盗账户增加2000
 update accout set money=money+2000 where name = '四十大盗';
 commit;

标签:rand,事务,set,return,name,索引,str,MySQL
From: https://blog.csdn.net/m0_60462557/article/details/137090495

相关文章

  • windows的桌面docker安装mysql5.7
    dockerrun-p3306:3306--namemysql^-vE:/mysql/data:/var/lib/mysql^-vE:/mysql/conf:/etc/mysql/conf.d^-vE:/mysql/log:/var/log/mysql^-eMYSQL_ROOT_PASSWORD=123456^-dmysql:5.7命令解析:dockerrun-p3306:3306--namemysql:创建一个docker容......
  • 小白也能懂的Mysql数据库索引详解
    核心概念主键索引/二级索引聚簇索引/非聚簇索引回表/索引覆盖索引下推联合索引/最左联合匹配前缀索引explain一、[索引定义]1.索引定义在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现......
  • 什么是 MySQL 锁等待?
    本文基于MySQL8.0.32源码,存储引擎为InnoDB。先排队不管是加表锁,还是加行锁,如果不能立即获得锁,加锁事务都需要进入锁等待状态。事务进入锁等待状态,需要用锁结构来排队。和立即获得锁时的锁结构一样,这个锁结构的各属性都已经初始化完成。不同之处在于,它被设置为等待状态。......
  • ETL数据集成丨使用ETLCloud实现MySQL与Greenplum数据同步
    我们在进行数据集成时,MySQL和Greenplum是比较常见的两个数据库,我们可以通过ETLCloud数据集成平台,可以快速实现MySQL数据库与数仓数据库(Greenplum)的数据同步。MySQL数据库:优点:轻量级与高性能:MySQL体积小、启动快,对资源消耗相对较低,适合处理高并发的OLTP(在线事务处理)场景。开源......
  • 服务-mysql
    目录安装范例:二进制安装mysql基础范例:mysql客户端登录,执行脚本范例:管理用户、权限,增改锁范例:查看默认字符集和排序规则常用SQL范例:数据库DDL:CREATE,DROP,ALTER范例:数据表DDL:CREATE,DROP,ALTER范例:DML:INSERT,DELETE,UPDATE范例:DQL单表查询语句范例:DQL多表子查询范例:DQL多表查......
  • Mysql中视图的使用以及常见运算符的使用示例和优先级
    场景基础知识回顾:mysql中视图的基础使用以及常见运算符的使用示例。注:博客:https://blog.csdn.net/badao_liumang_qizhi实现Mysql中视图的使用视图的创建CREATEVIEWstu_viewASSELECT*FROMbus_student;视图查询SELECT*FROMstu_view;查看视图基本信息SHOWTAB......
  • MySQL 中 SQL 查询语句的执行顺序
    在MySQL中,SQL查询的执行顺序通常按照以下顺序进行:FROM:从指定的表中选择数据。WHERE:对数据进行筛选,只选择满足条件的行。GROUPBY:按照指定的列对数据进行分组。SELECT:选择要返回的列或表达式。HAVING:对分组后的数据进行筛选,只选择满足条件的分组。UNION[ALL]ORDERBY:对......
  • 聚簇索引(MySQL-InnoDB引擎下)
    聚簇索引(MySQL-InnoDB引擎下)聚簇索引并不是一种单独的索引类型,而是一种存储方式。顾名思义,聚簇,使得数据行和相邻的键值紧促的存储在一起。(物理上的)聚簇索引的数据分布Mysql内置的存储引擎并不支持选择用于聚簇的索引,主键索引默认就是聚簇索引。聚簇索引的优点:1.可以将相互关......
  • Linux服务器安装MySQL数据库
    首先yum安装的版本比较低,所以先下载一个yum比较新的库文件点击就是下载到本地,如果想在Linux里面下载就需要右击复制链接1.安装MySQL:sudoaptupdatesudoaptinstallmysql-server2.可以通过sudosystemctlstatusmysql命令查看MySQL是否已启动3.设置登录密码......
  • 使用EF 连接 数据库 SQLserver、MySql 实现 CodeFirst
    1.新建项目,下载Nuget安装包创建项目需要注意几点,如果是基于.netframework的项目需要选择相应版本的EF,如果是跨平台则选择EFCore版本。我这里选择的是.netframework版本。红框里面是实现EFCodeFirst需要的包。对应的版本:EntityFramework6.3.0MySql.Data6.8......