mysql函数

Mysql日志管理

陌路散爱 提交于 2020-03-10 11:50:17
错误日志 查询日志 慢查询日志 二进制日志 toc error log 错误日志 记录mysql启停错误信息用于排错 general log 普通日志 记录客户端查询日志用于开发 bin log 二进制日志 增量备份 DDL DML DCL 用于备份 relay log 中继日志 接收 replication master 常用于主从复制 slow log 慢查询日志 查询时间超过指定值用于调优 错误日志 Mysql 的错误日志 error log 记录 mysqld 服务进程启动/关闭或运行过遇到的错误日志。 错误日志默认开启(没有开启按照如下方式开启) ## 在配置文件 [mysqld] 标签内增加 log-error=/log/mysql/err.log [root@Mysql ~]# vim /etc/my.cnf [mysqld] ...... log-error=/log/mysql/err.log ## 创建对应目录与日志文件 [root@Mysql ~]# mkdir -p /log/mysql/ [root@Mysql ~]# touch /log/mysql/err.log ## 更改日志文件属主和属组为 mysql [root@Mysql ~]# chown -R mysql.mysql /log/mysql/err.log ## 重启数据库生效 [root

MySQL日志管理

亡梦爱人 提交于 2020-03-10 06:04:53
MySQL日志管理 错误日志 配置方法: vim /etc/my.cnf [mysqld] log-error=/tmp/mysql.log 查看配置方式: show variables like '%log%error%'; 作用: 记录mysql数据库的一般状态信息及报错信息,是我们对于数据库常规报错处理的常用日志。 一般查询日志 配置方法: vim /etc/my.cnf [mysqld] general_log=on general_log_file=/data/mysql/server2.log 查看配置方式: show variables like '%gen%'; 作用: 记录mysql所有执行成功的SQL语句信息,可以做审计用,但是我们很少开启; 可以作为审计功能,一般情况下这个日志不会开,除非有特殊要求 例如:ELK 二进制日志 建议刚部署mysql数据库的时候就开启二进制日志 二进制日志不依赖于存储引擎的,依赖于sql层,记录和sql语句有关的信息 在sql层已经执行完成的语句,如果是事务,应当是已经完成的事务 功能作用:备份和时间点恢复、主从 二进制日志记录了什么? 已提交的数据记录,以事件的形式记录到二进制文件中 二进制记录格式 一定要配置好二进制日志 row(行模式):表中行数据的变化过程,记录数据详细,但对IO要求比较高,记录数据在任何情况下都是准确的

mysql利用find_in_set去查询in的集合

半世苍凉 提交于 2020-03-10 04:39:10
MySQL手册中find_in_set函数的语法: FIND_IN_SET(str,strlist) str 要查询的字符串 strlist 字段名 参数以”,”分隔 如 (1,2,6,8) 查询字段(strlist)中包含(str)的结果,返回结果为null或记录 假如字符串str在由N个子链组成的字符串列表strlist 中,则返回值的范围在 1 到 N 之间。 一个字符串列表就是一个由一些被 ‘,’ 符号分开的子链组成的字符串。如果第一个参数是一个常数字符串,而第二个是type SET列,则FIND_IN_SET() 函数被优化,使用比特计算。 如果str不在strlist 或strlist 为空字符串,则返回值为 0 。如任意一个参数为NULL,则返回值为 NULL。这个函数在第一个参数包含一个逗号(‘,’)时将无法正常运行。 用find_in_set(str,strList)函数去进行处理,一个字段多条件的查询 set @field = ‘xx1,xx2’; select * from table where find_in_set(field,@field); 来源: CSDN 作者: snmlm 链接: https://blog.csdn.net/u011133810/article/details/104758547

MySQL LIKE 子句

末鹿安然 提交于 2020-03-08 21:15:32
MySQL LIKE 子句 我们知道在MySQL中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。 WHERE 子句中可以使用等号 (=) 来设定获取数据的条件,如 "w3cschool_author = 'Sanjay'"。 但是有时候我们需要获取 w3cschool_author 字段含有 "jay" 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。 SQL LIKE 子句中使用百分号(%)字符来表示任意字符,类似于UNIX或正则表达式中的星号 (*)。 如果没有使用百分号(%), LIKE 子句与等号(=)的效果是一样的。 语法 以下是SQL SELECT 语句使用 LIKE 子句从数据表中读取数据的通用语法: SELECT field1, field2,...fieldN FROM table_name1, table_name2... WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue' 你可以在WHERE子句中指定任何条件。 你可以在WHERE子句中使用LIKE子句。 你可以使用LIKE子句代替等号(=)。 LIKE 通常与 % 一同使用,类似于一个元字符的搜索。

MySQL LIKE 子句

最后都变了- 提交于 2020-03-08 21:14:40
我们知道在 MySQL 中使用 SQL SELECT 命令来读取数据, 同时我们可以在 SELECT 语句中使用 WHERE 子句来获取指定的记录。 WHERE 子句中可以使用等号 = 来设定获取数据的条件,如 "runoob_author = 'RUNOOB.COM'"。 但是有时候我们需要获取 runoob_author 字段含有 "COM" 字符的所有记录,这时我们就需要在 WHERE 子句中使用 SQL LIKE 子句。 SQL LIKE 子句中使用百分号 %字符来表示任意字符,类似于UNIX或正则表达式中的星号 *。 如果没有使用百分号 %, LIKE 子句与等号 = 的效果是一样的。 SELECT field1, field2,...fieldN FROM table_name WHERE field1 LIKE condition1 [AND [OR]] filed2 = 'somevalue' 你可以在 WHERE 子句中指定任何条件。 你可以在 WHERE 子句中使用LIKE子句。 你可以使用LIKE子句代替等号 =。 LIKE 通常与 % 一同使用,类似于一个元字符的搜索。 你可以使用 AND 或者 OR 指定一个或多个条件。 你可以在 DELETE 或 UPDATE 命令中使用 WHERE...LIKE 子句来指定条件。 在PHP脚本中使用 LIKE 子句

高性能MySQL之基础架构

喜欢而已 提交于 2020-03-08 12:22:45
原文: 高性能MySQL之基础架构 一、背景 当你手中抓住一件东西不放时,你只能拥有一件东西,如果你肯放手,你就有机会选择更多。与其在别人的生活里跑龙套,不如精彩做自己。人无所舍,必无所成。跌倒了,失去了,不要紧,爬起来继续风雨兼程,且歌且行。 为什么我们需要先学习MYSQL的基础架构先呢? 原因很简单,当我们需要了解一件事物的时候,我们只有站在宏观的层面,才能层层剥丝抽茧的去理解问题。举个例子,我们要看一个框架的源码,一开始就想进去研究,却发现找不着北,原因很简单,因为我们没有鸟瞰全貌,我们根本不知道入口在哪里。因此我们学习MYSQL的时候也是这样。先从高纬度理解问题,最后看到里面有哪些组件,一层层的拆解,这样让我们对mysql有更深入的理解。废话不多说,我们先看总体的逻辑架构图,如下所示。 二、Mysql总体逻辑架构 从图中不难看出,不同的存储引擎共用一个Server层,也就是从连接器到执行器的部分。可以看到Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如触发器、视图等。 需要主意的是存储引擎层负责数据的存储和提取。其架构模式是插件式的,支持InnoDB、MyISAM、Memory等多个存储引擎。现在最常用的存储引擎是InnoDB

Mysql数据查询

纵然是瞬间 提交于 2020-03-08 11:56:51
Mysql查询 数据多次过滤 条件:from、where、group by、having、distinct、order by、limit => 层层筛选后的结果 查: select [distinct] 字段1 [[as] 别名1],...,字段n [[as] 别名n] from [数据库名.]表名 [条件]; 注:一条查询语句,可以拥有多种筛选条件,条件的顺序必须按照上方顺序进行逐步筛选,distinct稍有特殊(书写位置),条件的种类可以不全 可以缺失,但不能乱序 单表查询 distinct 去重 数据为: +------+------+ | x | y | +------+------+ | 1 | 2 | | 2 | 3 | | 3 | 4 | | 1 | 2 | +------+------+ #执行 select distinct * from t1; +------+------+ | x | y | +------+------+ | 1 | 2 | | 2 | 3 | | 3 | 4 | +------+------+ # 总结:distinct对参与查询的所有字段,整体去重(所查的全部字段的值都相同,才认为是重复数据) 常用函数 拼接:concat() | concat_ws() 大小写:upper() | lower() 浮点型操作:ceil() |

MySQL知识-[INSERT语法]

亡梦爱人 提交于 2020-03-08 11:43:56
INSERT语法 INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] VALUES ({expr | DEFAULT},...),(...),... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] 或: INSERT [LOW_PRIORITY | DELAYED | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name SET col_name={expr | DEFAULT}, ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] 或: INSERT [LOW_PRIORITY | HIGH_PRIORITY] [IGNORE] [INTO] tbl_name [(col_name,...)] SELECT ... [ ON DUPLICATE KEY UPDATE col_name=expr, ... ] INSERT 用于向一个已有的表中插入新行。 INSERT...VALUES 和 INSERT...SET 形式的语句根据明确指定的值插入行。 INSERT...SELECT 形式的语句插入从其它表中选出的行。 行应被插入到

MySQL存储过程

穿精又带淫゛_ 提交于 2020-03-07 14:08:00
摘自:https://www.cnblogs.com/l5580/p/5993238.html MySQL5 中添加了存储过程的支持。 大多数SQL语句都是针对一个或多个表的单条语句。并非所有的操作都怎么简单。经常会有一个完整的操作需要多条才能完成 存储过程简单来说,就是为以后的使用而保存的一条或多条MySQL语句的集合。可将其视为批文件。虽然他们的作用不仅限于批处理。 为什么要使用存储过程:优点 1 通过吧处理封装在容易使用的单元中,简化复杂的操作 2 由于不要求反复建立一系列处理步骤,这保证了数据的完整性。如果开发人员和应用程序都使用了同一存储过程,则所使用的代码是相同的。还有就是防止错误,需要执行的步骤越多,出错的可能性越大。防止错误保证了数据的一致性。 3 简化对变动的管理。如果表名、列名或业务逻辑有变化。只需要更改存储过程的代码,使用它的人员不会改自己的代码了都。 4 提高性能,因为使用存储过程比使用单条SQL语句要快 5 存在一些职能用在单个请求中的MySQL元素和特性,存储过程可以使用它们来编写功能更强更灵活的代码 换句话说3个主要好处简单、安全、高性能 缺点 1 一般来说,存储过程的编写要比基本的SQL语句复杂,编写存储过程需要更高的技能,更丰富的经验。 2 你可能没有创建存储过程的安全访问权限。许多数据库管理员限制存储过程的创建,允许用户使用存储过程

Mysql-存储过程

廉价感情. 提交于 2020-03-07 12:43:32
存储过程 什么是存储过程 存储过程是为以后的使用而保存的一条或条SQL语句的集合,类似于批处理 为什么用存储过程 1)简单,把多条SQL语句封装在类似函数的单元中,方便调用和修改 2)安全,通过存储过程限制基础数据的访问,减少数据讹误的机会;   防止了错误,需要执行的步骤越多,就越可能出错,保持了数据的一致性。 3)高性能,存储过程比单独的SQL语句要快 怎么使用存储过程 首先创建一个表 CREATE TABLE students( stu_id INT(10) not NULL AUTO_INCREMENT PRIMARY KEY, stu_name VARCHAR(50) not NULL, age INT(3) not NULL )ENGINE="INNODB", CHARSET="UTF8"; INSERT INTO students VALUES(NULL, "lily", 21); INSERT INTO students VALUES(NULL, "tom", 18); INSERT INTO students VALUES(NULL, "marton", 16); 创建存储过程 栗子1:创建无参数的存储过程 DELIMITER // CREATE PROCEDURE studentage() BEGIN SELECT AVG(age) AS