MySQL sum if 案例
发布于:2020-11-16 13:40 作者:song100e 浏览:392 分类:MySQLSUM(IF(`hosts`.state = 0, 1, 0)) AS hostNomal ,这个语句,当 hosts.state 的值为 0 时,和加 1,不为 0 时,和加 0。类似于程序里的三元表达式。
MySQL回表
发布于:2020-4-9 8:48 作者:song100e 浏览:289 分类:MySQL 回表就是先通过数据库索引扫描出数据所在的行,再通过行主键id取出索引中未提供的数据,即基于非主键索引的查询需要多扫描一棵索引树。
因此,可以通过索引先查询出id字段,再通过主键id字段,查询行中的字段数据,即通过再次查询提供MySQL查询数据。
MySql 中 USING 的用法
发布于:2019-11-27 10:30 作者:song100e 浏览:309 分类:MySQLusing 等价于 in 操作中的 on,例如 a 和 b 根据 id 字段关联,那么以下等价 using(id) 和 on a.id=b.idselect a.name, b.age from test as a join test2 as b on a.id=b.id select a.name, b.age from test as a join test2 as b using(id)
升级 MySQL 5.6 到 8.0.13 记录
发布于:2019-1-24 14:10 作者:song100e 浏览:351 分类:MySQLInnoDB 存储引擎的三个关键特性
发布于:2018-12-4 17:50 作者:song100e 浏览:358 分类:MySQLInnoDB存储引擎的三个关键特性:插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)。
- 插入缓冲(insert buffer)的原理:
插入缓冲使用的条件:
1、索引是辅助索引;
2、索引不是唯一的;
MySQL 主从复制的原理
发布于:2018-5-8 16:21 作者:song100e 浏览:395 分类:MySQL主从复制的原理:
分为同步复制和异步复制,实际复制架构中大部分为异步复制。
复制的基本过程如下:1)、Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;
2)、Master接收到来自Slave的IO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave 的IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;
3)、Slave的IO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我”;
4)、Slave的Sql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。
MySQL 用户添加与授权
发布于:2018-4-17 10:57 作者:song100e 浏览:497 分类:MySQL一,添加用户
命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password';
说明: username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.
例子:CREATE USER 'qingsong'@'%' IDENTIFIED BY '123456';
二,授权
命令: GRANT privileges ON databasename.tablename TO 'username'@'host'
说明: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.
例子:
1,GRANT SELECT, INSERT ON test.user TO 'qingsong'@'%';
2,GRANT ALL ON *.* TO 'qingsong'@'%';
注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
三.设置与更改用户密码
命令: SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");
例子: SET PASSWORD FOR 'qingsong'@'%' = PASSWORD("123456");
四.撤销用户权限
命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';
例子: REVOKE SELECT ON *.* FROM 'qingsong'@'%';
五.删除用户
命令: DROP USER 'username'@'host';
命令: CREATE USER 'username'@'host' IDENTIFIED BY 'password';
说明: username - 你将创建的用户名, host - 指定该用户在哪个主机上可以登陆,如果是本地用户可用localhost, 如果想让该用户可以从任意远程主机登陆,可以使用通配符%. password - 该用户的登陆密码,密码可以为空,如果为空则该用户可以不需要密码登陆服务器.
例子:CREATE USER 'qingsong'@'%' IDENTIFIED BY '123456';
二,授权
命令: GRANT privileges ON databasename.tablename TO 'username'@'host'
说明: privileges - 用户的操作权限,如SELECT , INSERT , UPDATE 等(详细列表见该文最后面).如果要授予所的权限则使用ALL.;databasename - 数据库名,tablename-表名,如果要授予该用户对所有数据库和表的相应操作权限则可用*表示, 如*.*.
例子:
1,GRANT SELECT, INSERT ON test.user TO 'qingsong'@'%';
2,GRANT ALL ON *.* TO 'qingsong'@'%';
注意:用以上命令授权的用户不能给其它用户授权,如果想让该用户可以授权,用以下命令:
GRANT privileges ON databasename.tablename TO 'username'@'host' WITH GRANT OPTION;
三.设置与更改用户密码
命令: SET PASSWORD FOR 'username'@'host' = PASSWORD('newpassword');
如果是当前登陆用户用SET PASSWORD = PASSWORD("newpassword");
例子: SET PASSWORD FOR 'qingsong'@'%' = PASSWORD("123456");
四.撤销用户权限
命令: REVOKE privilege ON databasename.tablename FROM 'username'@'host';
例子: REVOKE SELECT ON *.* FROM 'qingsong'@'%';
五.删除用户
命令: DROP USER 'username'@'host';
MySQL 存储PHP session
发布于:2017-4-1 8:44 作者:song100e 浏览:927 分类:MySQL本博客主要是参考自《深入理解PHP高级技巧、面向对象与核心技术》,希望能给到大家一个思路。
在默认的情况下,PHP会把全部的会话数据保存在服务器上的文本文件里面,这些文件通常都是保存在服务器上的临时目录里边。
在默认的情况下,PHP会把全部的会话数据保存在服务器上的文本文件里面,这些文件通常都是保存在服务器上的临时目录里边。
那为什么我们要把session会话保存在数据库中呢?
1,主要原因:提高系统的安全性。在共享服务器上,在没有进行特别的设置,所有的网站站点都会使用同一个临时目录,这意味着数十个程序都在同一个位置对文件进行读写操作。不仅速度下降了,而且别人也有可能窃取到我的站点的用户数据。
2,把会话数据保存到数据库还可以更方便的搜索web站点会话的更多信息,我们可以查询活动会话的数量(同时在线的用户量),还可以对会话数据进行备份。
3,假如我的站点同时运行于多个服务器,那么某个用户在一个会话过程中,可能会对不同的服务器发送多个请求,但是会话数据如果保存在某一个服务器上,那么其他服务器就不能使用到这些会话数据。假如我的某一台服务器仅仅是数据库的角色,那你把会话数据全保存在数据库中,不是很方便么?SELECT INTO 和 INSERT INTO SELECT 两种表复制语句
发布于:2015-9-18 14:54 作者:song100e 浏览:917 分类:MySQL我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中...
1 2