mysql数据库的慢查询日志是非常重要的一项调优辅助日志,但是mysql默认记录的日志格式阅读时不够友好,这是由mysql日志记录规则所决定的,捕获一条就记录一条,虽说记录的信息足够详尽,但如果将浏览慢查询日志做为一项日常工作,直接阅读mysql生成的慢查询日志就有可能比较低效了。

0.目录

创建函数:

除了操作系统命令直接查看slowlog外,mysql自己也提供了一个阅读slowlog的命令行工具:mysqldumpslow,该命令行提供了一定的分析汇总功能,可以将多个类似的SQL语句抽象显示成一个,不过功能还是有些简陋,除此之外,还有不少的第三方工具,可用于分析mysql慢查询日志,其中,三思用了一阵子mysqlsla,感觉简单又易用。

1.前言

CREATE FUNCTION[dbo].[split](@str NVARCHAR(max),@spliter NVARCHAR(10))
--@str:目标字符串
--@spliter:分隔符
RETURNS @tb TABLE(ch NVARCHAR(max))
AS
BEGIN
DECLARE @Num INT,@Pos INT, @NextPos INT
SET @Num = 0
SET @Pos = 1
WHILE(@Pos <= LEN(@str))
BEGIN
SELECT @NextPos = CHARINDEX(@spliter, @str, @Pos)
IF (@NextPos = 0 OR @NextPos IS NULL)
SELECT @NextPos = LEN(@str) + 1
INSERT INTO @tb VALUES(RTRIM(LTRIM(SUBSTRING(@str, @Pos, @NextPos - @Pos))))
SELECT @Pos = @NextPos+1
END
RETURN
END
GO

mysqlsla不仅仅可用来处理慢查询日志,也可以用来分析其它日志比如二进制日志,普通查询日志等等,其对sql语句的抽象功能非常实用,参数设定简练易用,很好上手。

2.通过SSMS删除

使用方式:

当前mysqlsla的最新版本为2.03,可以下拉到官网下载,地址如下:
http://hackmysql.com/scripts/mysqlsla-2.03.tar.gz

3.通过SQL语句删除

  • 3.1
    删除单行数据
  • 3.2
    删除所有行数据
  • 3.3
    删除表和数据库
SELECT * FROM dbo.split('1,2,3,4',',') --注:多行单列的数据表

mysqlsla是perl编写的脚本,运行mysqlsla需要perl-DBI和per-DBD-Mysql两模块的支持,因此在运行mysqlsla前需要首先安装DBI模块和相应的数据库DBD驱动,而默认情况下linux不安装这两个模块,需要自行下载安装,下载地址如下:

1.前言

增删改查都是对数据的操作,其中“删”对应的SQL语句便是“delete”,也就是“删除”的意思。
本篇主要介绍数据的删除,分别使用SSMS/SQL对数据进行删除操作。

测试语句:

DBI的编译安装步骤如下:
# tar xvfz DBI-1.608.tar.gz
# cd DBI-1.608
# perl Makefile.PL
# make
# make test
# make install

2.通过SSMS删除

2.1选择 数据库->SSMSTest->表->dbo.student
右键单击dbo.student选择编辑前200行。右键单击选择删除,想删哪行删哪行。
图片 1
2.2选择
数据库->SSMSTest->表,右键单击直接删除整个表,连带着数据也删除了。不过要注意表有没有外键约束,有的话不能删除主表。欲删主表,先删子表。
图片 2

IF object_id(N'[dbo].[split]') IS NOT NULL --检查函数【[dbo].[split]】是否存在
BEGIN
    DROP FUNCTION [dbo].[split] --删除函数
END
GO


CREATE FUNCTION[dbo].[split](@str NVARCHAR(max),@spliter NVARCHAR(10))
--@str:目标字符串
--@spliter:分隔符
RETURNS @tb TABLE(ch NVARCHAR(max))
AS
BEGIN
DECLARE @Num INT,@Pos INT, @NextPos INT
SET @Num = 0
SET @Pos = 1
WHILE(@Pos <= LEN(@str))
BEGIN
SELECT @NextPos = CHARINDEX(@spliter, @str, @Pos)
IF (@NextPos = 0 OR @NextPos IS NULL)
SELECT @NextPos = LEN(@str) + 1
INSERT INTO @tb VALUES(RTRIM(LTRIM(SUBSTRING(@str, @Pos, @NextPos - @Pos))))
SELECT @Pos = @NextPos+1
END
RETURN
END
GO

SELECT * FROM dbo.split('1,2,3,4',',')

DROP FUNCTION [dbo].[split]
GO

DBD-mysql驱动模块的编译安装步骤如下:
# tar xvfz DBD-mysql-4.011.tar.gz
# cd DBD-mysql-4.011
# perl Makefile.PL
# make
# make install

3.通过SQL语句删除

说明:

需要注意,在安装DBD-mysql时需要用到mysql_config,该命令包含在MySQL-devel安装包中,如果当前系统中没有安装该软件,需要首先安装MySQL-devel,否则DBD-mysql在编译过程中会出现错误。

3.1 删除单行数据

SQL语句delete的语法如下:

DELETE FROM 表名称 WHERE 列名称 = 值

例如:

delete from student where sno = '0001'

  1、仅支持文本字符串分隔!!!

发表评论

电子邮件地址不会被公开。 必填项已用*标注