首页 > 数据库 >MYSQL的常用实用功能

MYSQL的常用实用功能

时间:2022-12-27 12:01:20浏览次数:40  
标签:实用功能 name 常用 update 索引 MYSQL 主键 order select

(1)show create table
比如 >>desc 'order' 能够看到order表中的字段名称、字段类型、字段长度、是否允许为空,是否主键、默认值等信息。不能看到该表的索引信息
查看字段和索引数据直观呈现,例如:
show create table `order`;
我们能够看到非常完整的建表语句,表名、字段名、字段类型、字段长度、字符集、主键、索引、执行引擎等都能看到。

(2)create table ... select  

快速备份表。

通常情况下,可以分两步走:

  1. 创建一张临时表
  2. 将数据插入临时表

创建临时表可以使用命令:
create table order_2022121820 select * from `order`;

执行完之后,就会将order_2022121820表创建好,并且将order表中的数据自动插入到新创建的order_2022121820中,一个命令就能轻松搞定表备份

(3)explain

我们优化一条sql语句的性能,需要查看索引执行情况。

答:可以使用explain命令,查看mysql的执行计划,它会显示索引的使用情况

例如:explain select * from `order` where code='002';

索引失效的常见原因: 

 

(4)show processlist
线上sql或者数据库出现了问题。比如出现了数据库连接过多问题,或者发现有一条sql语句的执行时间特别长。

答:我们可以使用show processlist命令查看当前线程执行情况

(5)mysqldump
使用mysqldump工具,该工具会将数据查出来,转换成insert语句,写入到某个文件中,相当于数据备份

备份远程数据库中的数据库:
mysqldump -h 192.22.25.226 -u root -p123456 dbname > backup.sql

(6)防止重复数据的做法很多,比如:加唯一索引加分布式锁等,

但这些方案,都没法做到让第二次请求也更新数据,它们一般会判断已经存在就直接返回了。

这种情况可以使用on duplicate key update语法。

该语法会在插入数据之前判断,如果主键或唯一索引不存在,则插入数据。如果主键或唯一索引存在,则执行更新操作。

INSERT  INTO `brand`(`id`, `code`, `name`, `edit_date`) VALUES (123, '108', '苏三', now(3)) on duplicate key updatename='苏三',edit_date=now(3);

但需要注意的是,在高并发的场景下使用on duplicate key update语法,可能会存在死锁的问题,所以要根据实际情况酌情使用。

(7)select ... for update

MYSQL数据库自带了悲观锁,它是一种排它锁,根据锁的粒度从大到小分为:表锁间隙锁行锁

在我们的实际业务场景中,有些情况并发量不太高,为了保证数据的正确性,使用悲观锁也可以。

比如:用户扣减积分,用户的操作并不集中。但也要考虑系统自动赠送积分的并发情况,所以有必要加悲观锁限制一下,防止出现积分加错的情况发生。

这时候就可以使用MYSQL中的select ... for update语法了

例如:

begin;
select * from `user` where id=1 
for update;

//业务逻辑处理

update `user` set score=score-1 where id=1;
commit;


(8)char_length 通过该函数就能获取字符长度
例:
select * from brand where name like '%苏三%' order by char_length(name) asc limit 5;

(9)group_concat

把name相同的code拼接在一起,放到另外一列中该怎么办呢?

答:使用group_concat函数。

 select name,group_concat(code) from `user` group by name;

 

 

 



 

 

 

 


   

标签:实用功能,name,常用,update,索引,MYSQL,主键,order,select
From: https://www.cnblogs.com/wangqian1002/p/17007759.html

相关文章

  • Mysql到TiDB迁移,双写数据库兜底方案
    作者:京东零售石磊TiDB作为开源NewSQL数据库的典型代表之一,同样支持SQL,支持事务ACID特性。在通讯协议上,TiDB选择与MySQL完全兼容,并尽可能兼容MySQL的语法。因......
  • Mysql到TiDB迁移,双写数据库兜底方案
    作者:京东零售石磊TiDB作为开源NewSQL数据库的典型代表之一,同样支持SQL,支持事务ACID特性。在通讯协议上,TiDB选择与MySQL完全兼容,并尽可能兼容MySQL的语法。因此,......
  • 嵌入式:ARM常用开发编译软件介绍
    编译器介绍1、ADS1.2ADS(ARMDeveloperSuite),是在1993年由Metrowerks公司开发是ARM处理器下最主要的开发工具。他的前身是SDT,SDT是ARM公司几年前的开发环境软件,目前SDT早已......
  • python连接mysql数据库(2)——批量插入数据
      1、需要插入多条数据,一天一条,time的格式为yyyy-mm-dd00:00:00使用pandas插件包,取某一段时间的日粒度,然后进行日期格式化,使用strftime   2、每条开头有唯......
  • 常用的js正则验证整理
    原文链接:点我一、校验数字的js正则表达式1数字:^[0-9]*$2n位的数字:^\d{n}$3至少n位的数字:^\d{n,}$4m-n位的数字:^\d{m,n}$5零和非零开头的数字:^(0|[1-9][0-9]*)......
  • Mysql回表、索引覆盖、聚簇索引、非聚簇索引
    (22条消息)MySQL的回表查询与索引覆盖_李歘歘的博客-CSDN博客_回表查询和覆盖索引......
  • MySQL数据库视图:视图定义、创建视图、修改视图
    视图是指计算机数据库中的视图,是一个虚拟表,其内容由查询定义。同真实的表一样,视图包含一系列带有名称的列和行数据。但是,视图并不在数据库中以存储的数据值集形式存在。行和......
  • MySQL SQL克隆
    克隆blog表及其数据--创建table将老表中的值复制到新表中CREATETABLEblog_copySELECT*FROMblogSELECT*FROMblog_copycopy后......
  • 常用网页播放器代码(1)
    WMP加入了ActiveX解码器控件,不仅可以放曲子,还能放Flash和其它视频文件<objectalign=middleclassid="CLSID:22d6f312-b0f6-11d0-94ab-0080c74c7e95"class=OBJECTid=Med......
  • 将mysql数据库批量导出为word三线表格形式
    1、更换字体和字体大小BaseFontbfComic0=BaseFont.createFont("C:\\Windows\\Fonts\\simsunb.ttf",BaseFont.IDENTITY_H,BaseFont.NOT_EMBEDDED);Fontfont=newF......