MySQL
木偶跳舞
个人博客
展开
-
mysql 8.0 的坑
member和admin作为表名或字段名时必须带上反单引号``,否则会报语法错误。原创 2020-06-05 15:11:30 · 345 阅读 · 0 评论 -
MySQL 单表分页 Limit 性能优化
主要针对记录非常多的表常用分页sql语句:select * from product limit start, count当起始页较小时,查询没有性能问题,我们分别看下从10, 100, 1000, 10000开始分页的执行时间(每页取20条), 如下:select * from product limit 10, 20 0.016秒select * from product limit 10转载 2016-12-06 18:48:11 · 1881 阅读 · 0 评论 -
mysql 性能优化方法汇总
0、加索引索引建立规则:索引的字段必须是经常作为查询条件的字段;如果索引多个字段,第一个字段要是经常作为查询条件的。如果只有第二个字段作为查询条件,这个索引不会起到作用;索引的字段必须有足够的区分度;Mysql 对于长字段支持前缀索引;1、当只要一行数据时使用 LIMIT 1当你查询表的有些时候,你已经知道结果只会有一条结果,但因为你可能需要去fetch游标,或是你也许会去检查返回的记录数。在转载 2016-08-09 19:26:19 · 338 阅读 · 0 评论 -
mysql 正则表达式
已知MySQL可以通过 LIKE …% 来进行模糊匹配。 MySQL 同样也支持其他正则表达式的匹配, MySQL中使用 REGEXP 操作符来进行正则表达式匹配。实例:查找name字段中以’st’为开头的所有数据:mysql> SELECT name FROM person_tbl WHERE name REGEXP '^st';查找name字段中以’ok’为结尾的所有数据:mysql> SEL转载 2016-09-28 18:16:30 · 724 阅读 · 0 评论 -
MySQL中UNION和UNION ALL的使用
在数据库中,UNION和UNION ALL关键字都是将两个结果集合并为一个,但这两者从使用和效率上来说都有所不同。MySQL中的UNIONUNION在进行表链接后会筛选掉重复的记录,所以在表链接后会对所产生的结果集进行排序运算,删除重复的记录再返回结果。实际大部分应用中是不会产生重复的记录,最常见的是过程表与历史表UNION。如:select * from gc_dfys union select转载 2016-10-24 18:36:05 · 11941 阅读 · 1 评论 -
PHP 文件中存在多个mysql连接的问题
PHP 多个mysql连接的问题 今天在同一个php进程中用mysql_connect新建了两个mysql句柄,这两个句柄都连接同一台数据库,只不过操作的数据库dbname不同,假设这两个句柄分别是$dbhA和$dbhB,它们对应的数据库dbname分别是dbA和dbB。我在$dbhA上操作dbA中的时候缺报错是dbB中没有表xxx。。。起初以为是我应用层逻辑处理在某个地方弄混了两个句柄,翻半天没转载 2016-10-13 18:05:52 · 1256 阅读 · 0 评论 -
数据库多表查询之 where & INNER JOIN
在多表查询中,一些SQL开发人员更喜欢使用WHERE来做join,比如:SELECT a.ID, b.Name, b.Date FROM Customers a, Sales b WHERE a.ID = b.ID;缺点:在上面语句中,实际上是创建了两张表的笛卡尔积,所有可能的组合都会被创建出来。在笛卡尔连接中,在上面的例子中,如果有1000顾客和1000条销售记录,这个查询会先产生1000000个原创 2016-09-22 14:14:18 · 12401 阅读 · 4 评论 -
Sql中 Having与Where的区别
where 子句的作用是在对查询结果进行分组前,将不符合where条件的行去掉,即在分组之前过滤数据,where条件中不能包含聚组函数,使用where条件过滤出特定的行。having 子句的作用是筛选满足条件的组,即在分组之后过滤数据,条件中经常包含聚组函数,使用having 条件过滤出特定的组,也可以使用多个分组标准进行分组。注意:1、HAVING子句必须位于GROUP BY之后ORDER BY之原创 2016-09-20 14:33:54 · 444 阅读 · 0 评论 -
navicat如何连接远程数据库
navicat装在机器A上,ip地址为ipa。mysql数据库装在机器B上,ip地址为ipb。1、进入机器B中mysql数据库的命令行,输入grant all on . to ‘root’@’ipa’ identified by ‘password’;其中ipa为被授权机器A的ip地址,password为机器B中mysql数据库的密码。2、在机器A的navicat中,建立新的连接,输入机器B的i转载 2016-08-18 18:27:40 · 24224 阅读 · 0 评论 -
MySQL数据类型 int(M)中M含义
int(M)我们先来拆分,int是代表整型数据那么中间的M应该是代表多少位了,后来查mysql手册也得知了我的理解是正确的,下面我来举例说明。 MySQL 数据类型中的 integer types 有点奇怪。你可能会见到诸如:int(3)、int(4)、int(8) 之类的 int 数据类型。刚接触 MySQL 的时候,我还以为 int(3) 占用的存储空间比 int(4) 要小, int(4)转载 2016-08-10 16:22:25 · 6718 阅读 · 0 评论 -
linux 下mysql忘记密码解决方法
1转载 2016-08-09 19:30:58 · 354 阅读 · 0 评论 -
MySQL concat、concat_ws、group_concat函数用法
CONCAT(str1,str2,…)返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。参数可以是字段名或具体值注意:如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如:SELECT CONCA转载 2017-05-02 22:06:11 · 4261 阅读 · 0 评论 -
mysql 索引创建与使用
mysql索引作用: 在索引列上,除了有序查找之外,数据库利用各种各样的快速定位技术,能够大大提高查询效率。特别是当数据量非常大,查询涉及多个表时,使用索引往往能使查询速度加快成千上万倍。mysql索引创建规则:1、表的主键、外键必须有索引;2、数据量超过300的表应该有索引;3、经常与其他表进行连接的表,在连接字段上应该建立索引4、经常出现在Where子句中的字段,特别是大表的字段,应转载 2016-06-23 14:09:30 · 833 阅读 · 0 评论 -
OneinStack安装
一、OneinStack包含以下组合lnmp(Linux + Nginx+ MySQL+ PHP)lamp(Linux + Apache+ MySQL+ PHP)lnmpa(Linux + Nginx+ MySQL+ PHP+ Apache):Nginx处理静态,Apache(mod_php)处理动态PHPlnmt(Linux + Nginx+ MySQL+ Tomcat):Nginx处理静态转载 2017-05-07 01:25:10 · 4105 阅读 · 0 评论 -
php pdo公共类
db.class.php :<?phpclass db extends \PDO { private static $_instance = null; protected $dbName = ''; protected $dsn; protected $dbh; public function __construct($dbHost,...原创 2018-02-08 11:34:44 · 586 阅读 · 0 评论 -
lnamp 日志
PHP1、php-fpm慢日志配置文件 php-fpm.conf设置参数:request_slowlog_timeout : 默认 是0,php的慢脚本日志是关闭的,因此设置为大于0的n,表示执行时间超过n的脚本将记录进入slowlog里。slowlog : 慢日志记录路径request_slowlog_timeout 和 slowlog需要同时设置,开启request_slowlog_tim原创 2017-11-20 21:48:08 · 450 阅读 · 0 评论 -
MySQL自定义排序函数 field()
1、mysql in 排序 按in里面的顺序来排序select * from table where id IN (3,6,9,1,2,5,8,7);这样的情况取出来后,其实,id还是按1,2,3,4,5,6,7,8,9,排序的,但如果我们真要按IN里面的顺序排序怎么办?SQL能不能完成?是否需要取回来后再foreach一下?其实可以这样select * from table where id IN转载 2017-09-01 14:36:26 · 1473 阅读 · 0 评论 -
MySql优化建议总结
MySQL逻辑架构:有三层结构: 第一层:客户端通过连接服务,将要执行的sql指令传输过来 第二层 (分为两种方式) 方式一: 服务器解析并优化sql,生成最终的执行计划并执行 方式二: 服务器从缓存中获取查询结果 第三层:存储引擎,负责数据的储存和提取优化建议总结:对于查询缓存查询缓存的空间不要设置的太大原因: 因为查询缓存是原创 2017-09-14 17:41:47 · 976 阅读 · 0 评论 -
mysql日期和时间类型
mysql有5种表示时间值的日期和时间类型, 分别为、DATE,TIME,YEAR,DATETIME,TIMESTAMP。注意: TIMESTAMP类型有专有的自动更新特性TIMESTAMP时间戳在创建的时候可以有多重不同的特性,如:1.在创建新记录和修改现有记录的时候都对这个数据列刷新:TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_转载 2017-08-08 21:54:35 · 321 阅读 · 0 评论 -
PDO::lastInsertId函数返回0的原因
PDO::lastInsertId — 返回最后插入行的ID或序列值PDO::lastInsertId 方法返回是有条件的,默认情况下他是返回 主键且自增长的字段值,否则返回0,而文档中并未说明。php中PDO::lastInsertId的实现 是调用mysql api中的 mysql_insert_id 函数,而该函数有详细说明。下面是php中对mysql_insert_id 函数说明:转载 2017-06-25 13:37:01 · 4342 阅读 · 0 评论 -
mysql 中 find_in_set()
mysql 中 find_in_set() 方法:有时候我们在设计数据库时有以下情况,如:在视频表中有个字段week, 他存储的是视频在周几播放,如某视频只在周1,4,6播放,那么week字段对应的值以 1,4,6 的格式存储那们我们要用sql查找所有视频中周4可以播放的视频 (这个时候不是用like能解决的,使用like可能查到我们不想要的记录)这时就需要 find_in_set()mysq原创 2017-06-10 22:23:13 · 49337 阅读 · 0 评论 -
mysql 优化技巧
count(*) 优化:有时候某些业务场景并不需要完全精确的COUNT值,可以用近似值来代替,EXPLAIN出来的行数就是一个不错的近似值,而且执行EXPLAIN并不需要真正地去执行查询,所以成本非常低。实例:[SQL]select count(name) from aaa;受影响的行: 0时间: 2.957s结果:428396[SQL]EXPLAIN select count(name)转载 2017-05-30 20:27:36 · 661 阅读 · 0 评论 -
LEFT JOIN 多表选择数据(任意join)
如上图所示,a表为上线表,b,c分别为数据总集表,从上线表中查找有效数据(即在a或b表中数据正常)从a中获取存在表b或表c中有效数据获取第一页有效数据,sql语句:select `a`.router,`a`.routerValue,`a`.sort,`b`.subhead `subName`, CONCAT_WS('',`b`.name,`c`.name) as name,CONCAT_WS(''原创 2017-05-02 21:38:42 · 2611 阅读 · 0 评论 -
远程访问MySQL数据库方法
1、 grant all privileges on *.* to wml@192.168.1.184 identified by "111111";原创 2015-06-10 14:20:56 · 1210 阅读 · 0 评论 -
windows下将mysql加入环境变量
1、下载最新版mysql软件,将mysql安装到系统目录中,记录当前安装目录;如安装mysql到C:/program files/mysql目录下2、打开win7系统——计算机——系统属性转载 2016-02-26 17:55:11 · 23741 阅读 · 1 评论 -
PHP MySQL 数据库dml语句与dql语句的操作
数据库操作语句主要分为dml语句和dql语句:数据操作语句(dml)语句:具体是指 UPDATE更新、INSERT插入、DELETE删除。数据查询语句(dql)语句:指 SELECT 数据查询语言如果执行的是dml语句,则返回bool值如果执行的是dql语句,则返回查询结果$res,从$res中取出查询结果主要有一下四种方式:mysql_fetch_row($res) ,返回原创 2015-07-14 11:09:39 · 2181 阅读 · 0 评论 -
PHP连接MySQL数据库中文乱码问题解决方法
要解决PHP数据库乱码问题可以做以下设置:1、数据库里的设置: (1).在MYSQL中新建数据库的时候数据库 选择UTF-8编码既字符集 设定为 utf-8_unicode_ci(Unicode (多语言), 不区分大小写),库里面 表table的 整理 设置为 utf-8_general_ci;表里面的每个字段的 整理 都设置为原创 2015-06-29 15:50:47 · 4526 阅读 · 0 评论 -
mysql 日志
一、记录所有sql语句日志:1、在mysql安装目录下创建 mysql.log 文件,如:C:\Bitnami\nginxstack-1.9.10-0\mysql\log\mysql.log2、在 my.ini 文件中添加语句 log=C:/Bitnami/nginxstack-1.9.10-0/mysql/log/mysql.log ,例:[mysqld]。。。。。log原创 2016-03-03 17:50:56 · 550 阅读 · 0 评论 -
mysql 数据库引擎MyISAM,InnoDB
mysql 数据库引擎主要用一下两种:一种是 MyISAM,一种是 InnoDB (其他也还有几种,但一般不用)MyISAM 发音为 "my-z[ei]m";MyISAM引擎是一种非事务性(不支持事务)的引擎,提供高速存储和检索,以及全文搜索能力,适合数据仓库等查询频繁的应用。MyISAM中,一个table实际保存为三个文件,.frm存储表定义,.MYD存储数据,.MYI存储索引。转载 2016-01-25 12:12:12 · 901 阅读 · 0 评论 -
PHP数据库连接文件
对于PHP程序而言,要经常访问某数据库时,可以将与该数据库的连接过程写成一个PHP文件,每次需要连接数据库时直接调用该文件即可。、例:conn.php:<?php //连接数据库服务器 //此处加@是为了不显示错误信息 $conn=@mysql_connect("localhost","root","111111") or die("数据库服务器连接错误".mysql_e原创 2015-06-23 14:38:27 · 7183 阅读 · 0 评论 -
php数据库编程,php数据库编程步骤
php有三种方式来操作mysql数据库:1.mysql扩展库2.mysqli扩展库3.pdomysql扩展库和mysql数据库的区别:mysql数据库用于存放数据mysql数据库的三层结构示意图: mysql扩展库是一堆函数,是php设计者提供给程序员用于完成对mysql数据库的各种操作(CRUD)。mysql数据库结构中char与varc原创 2015-05-31 13:31:10 · 1083 阅读 · 0 评论 -
mysql 时间戳与日期格式的相互转换
1、UNIX时间戳转换为日期用函数: FROM_UNIXTIME()select FROM_UNIXTIME(1156219870); 输出:2006-08-22 12:11:102、日期转换为UNIX时间戳用函数: UNIX_TIMESTAMP() Select UNIX_TIMESTAMP('2006-11-04 12:23:00');原创 2015-08-31 11:38:37 · 243472 阅读 · 0 评论 -
PHP MySql的dql和dml操作的封装,成为固定的工具类
mysql_class.php:<?php class SqlTool{ private $conn; private $host="localhost"; private $user="root"; private $password="111111"; private $db="test";原创 2015-07-14 20:18:56 · 1267 阅读 · 0 评论 -
Linux下mysql中文乱码问题
安装完的MySQL的默认字符集为 latin1 ,为了要将其字符集改为用户所需要的(比如utf8),就必须改其相关的配置文件;由于linux下MySQL的默认安装目录分布在不同的文件下;不像windows一样放在同一目录下,只需修改其中的my.ini文件,重启后就生效了;所以先来看看linux下MySQL的数据库文件、配置文件和命令文件分别在不同的目录: 1、数据库目录,其所创建的数据原创 2015-04-18 11:15:49 · 452 阅读 · 0 评论 -
linux下C连接mysql查询表信息汉字乱码问题
对于mysql C_API接口的查询问题,在查询之前需要设置读取数据库的编码格式,即在查询语句之前添加以下语句 mysql_query(connection, "set names utf8") 即在执行数据查询之前,要设置一下编码方式!原创 2015-04-18 11:17:03 · 619 阅读 · 0 评论 -
mysql常用命令操作
1、创建用户命令:CREATE USER 'username'@'host' IDENTIFIED BY 'password';2、原创 2016-02-29 10:56:55 · 328 阅读 · 0 评论 -
mysqli 事务常用方法
1、//打开(true)或关闭(false)本次数据库连接的自动命令提交事务模式//参数如果设置为 FALSE,则表示关闭 auto-commit。如果设置为 TRUE,则表示开启 auto-commit(提交任何等待查询)。bool mysqli::autocommit ( bool $mode )2、//回退当前事务bool mysqli::rollback ()3、//提交一个事务b原创 2016-04-20 10:18:08 · 4128 阅读 · 0 评论 -
MySQL批量SQL插入性能优化
对于一些数据量较大的系统,数据库面临的问题除了查询效率低下,还有就是数据入库时间长。特别像报表系统,每天花费在数据导入上的时间可能会长达几个小时或十几个小时之久。因此,优化数据库插入性能是很有意义的。经过对MySQL innodb的一些性能测试,发现一些可以提高insert效率的方法,供大家参考参考。1. 一条SQL语句插入多条数据。常用的插入语句如:转载 2016-04-01 11:29:27 · 346 阅读 · 0 评论 -
高并发系统数据库架构设计
在WEB网站的规模从小到大不断扩展的过程中,数据库的访问压力也不断的增加,数据库的架构也需要动态扩展,在数据库的扩展过程基本上包含如下几步,每一个扩展都可以比上一步骤的部署方式的性能得到数量级的提升。 1、WEB应用和数据库部署在同一台服务器上 一般的小规模的网站采用这种方式,用户量、数据量、并发访问量都比较小,否则单台服务器无法承受,并且在遇到性能瓶颈的时候升级硬件所需要的费用非常高昂,在访问量转载 2016-06-08 11:56:22 · 4082 阅读 · 0 评论 -
Mysql复制表结构、表数据
1、复制表结构及数据到新表CREATE TABLE 新表SELECT * FROM 旧表这种方法会将oldtable中所有的内容都拷贝过来,当然我们可以用delete from newtable;来删除。 不过这种方法的一个最不好的地方就是新表中没有了旧表的primary key、Extra(auto_increment)等属性。需要自己用"alter"添加,而且容易搞错。2、只复制表结构到新表C转载 2016-08-16 11:03:43 · 503 阅读 · 0 评论