:

MySql 中 USING 的用法

发布于:2019-11-27 10:30 作者:song100e 浏览:4 分类:MySQL
using 等价于 in 操作中的 on,例如 a 和 b 根据 id 字段关联,那么以下等价 using(id) 和 on a.id=b.id
select 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)

标签: USING

0

升级 MySQL 5.6 到 8.0.13 记录

发布于:2019-1-24 14:10 作者:song100e 浏览:55 分类:MySQL


MySQL8.0 版本带来很多新特性以及成倍的速度提升,官方建议尽快进行升级!

下面记录我的升级过程:

阅读全文>>

标签: MySQL8

0

InnoDB 存储引擎的三个关键特性

发布于:2018-12-4 17:50 作者:song100e 浏览:65 分类:MySQL

InnoDB存储引擎的三个关键特性:插入缓冲(insert buffer)、二次写(double write)、自适应哈希索引(adaptive hash index)。

  • 插入缓冲(insert buffer)的原理:
            对于非聚集索引的插入和更新,不是每一次直接插入索引页中,而是首先判断插入的非聚集索引页是否在缓冲池中,如果在,则直接插入,否则,先放入一个插入缓冲区中。好似欺骗数据库这个非聚集的索引已经插入到叶子节点了,然后再以一定的频率执行插入缓冲和非聚集索引页子节点的合并操作,这时通常能将多个插入合并到一个操作中,这就大大提高了对非聚集索引执行插入和修改操作的性能。    

            插入缓冲使用的条件:
            1、索引是辅助索引;

            2、索引不是唯一的;

阅读全文>>

0

MySQL 主从复制的原理

发布于:2018-5-8 16:21 作者:song100e 浏览:86 分类:MySQL

主从复制的原理:

分为同步复制和异步复制,实际复制架构中大部分为异步复制。

复制的基本过程如下:
1)
Slave上面的IO进程连接上Master,并请求从指定日志文件的指定位置(或者从最开始的日志)之后的日志内容;

2)
Master接收到来自SlaveIO进程的请求后,通过负责复制的IO进程根据请求信息读取制定日志指定位置之后的日志信息,返回给Slave IO进程。返回信息中除了日志所包含的信息之外,还包括本次返回的信息已经到Master端的bin-log文件的名称以及bin-log的位置;

3)
SlaveIO进程接收到信息后,将接收到的日志内容依次添加到Slave端的relay-log文件的最末端,并将读取到的Master端的 bin-log的文件名和位置记录到master-info文件中,以便在下一次读取的时候能够清楚的告诉Master“我需要从某个bin-log的哪个位置开始往后的日志内容,请发给我

4)
SlaveSql进程检测到relay-log中新增加了内容后,会马上解析relay-log的内容成为在Master端真实执行时候的那些可执行的内容,并在自身执行。

阅读全文>>

0

MySQL 用户添加与授权

发布于:2018-4-17 10:57 作者:song100e 浏览:181 分类: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'; 

0

MySQL 存储PHP session

发布于:2017-4-1 8:44 作者:song100e 浏览:642 分类:MySQL
本博客主要是参考自《深入理解PHP高级技巧、面向对象与核心技术》,希望能给到大家一个思路。
在默认的情况下,PHP会把全部的会话数据保存在服务器上的文本文件里面,这些文件通常都是保存在服务器上的临时目录里边。

那为什么我们要把session会话保存在数据库中呢?

    1,主要原因:提高系统的安全性。在共享服务器上,在没有进行特别的设置,所有的网站站点都会使用同一个临时目录,这意味着数十个程序都在同一个位置对文件进行读写操作。不仅速度下降了,而且别人也有可能窃取到我的站点的用户数据。

    2,把会话数据保存到数据库还可以更方便的搜索web站点会话的更多信息,我们可以查询活动会话的数量(同时在线的用户量),还可以对会话数据进行备份。

    3,假如我的站点同时运行于多个服务器,那么某个用户在一个会话过程中,可能会对不同的服务器发送多个请求,但是会话数据如果保存在某一个服务器上,那么其他服务器就不能使用到这些会话数据。假如我的某一台服务器仅仅是数据库的角色,那你把会话数据全保存在数据库中,不是很方便么?

阅读全文>>

标签: session

0

SELECT INTO 和 INSERT INTO SELECT 两种表复制语句

发布于:2015-9-18 14:54 作者:song100e 浏览:611 分类:MySQL
我们在开发、测试过程中,经常会遇到需要表复制的情况,如将一个table1的数据的部分字段复制到table2中,或者将整个table1复制到table2中...

阅读全文>>

标签: INSERT

0

mysql自定义函数简单示例

发布于:2015-9-2 9:13 作者:song100e 浏览:860 分类:MySQL
这是一个简单的示例,创建一个函数将'2015-09-02 00:00:00'这样格式的datetime时间转化为‘2015年9月2日0时0分0秒’这样的格式:

阅读全文>>

标签: function

0

[转]Mysql之left join、right join、inner join的区别

发布于:2015-5-27 15:32 作者:song100e 浏览:921 分类:MySQL
left join(左联接) 返回包括左表中的所有记录和右表中联结字段相等的记录 
right join(右联接) 返回包括右表中的所有记录和左表中联结字段相等的记录
inner join(等值连接) 只返回两个表中联结字段相等的行

阅读全文>>

标签: JOIN

0