MySQL
diligentyang
主要研究PHP编程,网站后端开发,网站维护,mysql。会熟练使用CI框架。yii入门级。
展开
-
PDO概述特点及安装
PDO概述: PDO是PHP Data Object (PHP数据对象)的简称,它是与PHP5.1版本一起发行的。目前支持的数据库包括Firebird、FreeTDS、Interbase、MySQL、MS SQL Server、ODBC、Oracle、Postgre SQL、SQLite和Sybase。有了PDO用户不必再使用mysql_*函数,oci_*函数或者mssql_*函数,也不原创 2016-03-29 16:49:23 · 2466 阅读 · 0 评论 -
MySQL数值运算符和函数
对于普通加减法运算,此处不予详细讲解,如下例:mysql> SELECT 3+4;+-----+| 3+4 |+-----+| 7 |+-----+1 row in set (0.03 sec)CEIL和FLOORCEIL为向上取整,只要有小数位,不管是几,直接入一位。例如:mysql> SELECT CEIL(3.01);原创 2016-09-08 15:54:47 · 26750 阅读 · 0 评论 -
MySQL InnoDB索引介绍及优化(初学者)
什么是索引?索引(index)翻译为一个目录,用于快速定位我们想要找的数据的位置。例如:我们把一个数据库比作一本书,而索引(index)就是书中的目录,此刻要找到书的某个感兴趣的内容,我们一般是不会整本书翻完再去确认该内容在哪里,而是通过书的目录,定位到该内容章节所在页数,最后直接翻到该页面。我们来看看在数据库中的索引:全表扫描 VS 索引扫描以字典为例,全表扫描就是如果我们查找某个字时,那么通读一转载 2016-11-11 12:40:39 · 6616 阅读 · 1 评论 -
【MySQL】多版本并发控制
MySQL的大多数事务型存储引擎的实现都不是简单的行级锁。基于提升并发性能的考虑,它们一般都同时实现了多版本并发控制(MVCC)。不仅是MySQL,包括Oracle,PostgreSQL等其他数据库系统也都实现了MVCC,但各自的实现机制不尽相同,因为MVCC没有一个统一的标准。可以认为MVCC是一个行级锁的一个变种,但是它在很多情况下避免了加锁操作,因此开销更低。虽然实现机制有所不同,但大都实现了原创 2017-02-17 14:50:52 · 1950 阅读 · 0 评论 -
【MySQL】MySQL的存储引擎
在创建表时可以指定表的类型,也就是表的存储引擎。表的存储引擎决定了数据如何存储及如何访问,还有事务如何存储。表的存储引擎在很大程度上影响着处理SQL语句所需的存储空间和速度。不同的存储引擎所具有的特点也有所不同,有些存储引擎在处理很多复杂的SELECT语句时非常适合,而另一些则在实现快速更新时比较适合。InnoDBInnoDB是MySQL的默认事务型引擎,也是最重要,使用最广泛的存储引擎。它被设计用原创 2017-02-19 18:36:25 · 1248 阅读 · 0 评论 -
【MySQL】MySQL的数据类型优化
选择优化的数据类型MySQL支持的数据类型非常多,选择正确的数据类型对于获得高性能至关重要。不管存储那种类型的数据,下面几个原则都有助于做出更好的选择。更小的通常更好一般情况下,应该尽量使用可以正确存储数据的最小数据类型(例如只需要存0-200,tinyint unsigned更好)。更小的数据类型通常更快,因为它们占用更少的磁盘、内存和CPU缓存,并且处理时需要的CPU周期也更少。简单就好简单数据原创 2017-02-20 19:21:49 · 1712 阅读 · 0 评论 -
MySQL数据类型--日期时间
时间日期数据类型总概况MySQL中有多种表示时间日期的数据类型,主要有YEAR、TIME、DATE、DATETIME、TIMESTAMP等。每一种数据类型都有存储的时间日期格式、以及取值范围,因此在使用时间日期数据类型的时候需要选取最佳的数据类型。下图列出了几种数据类型:1、YEAR year用于存储年,存储时只需要一个字节,插入数据时可以使用各种格式指定YEAR值。常见的插入格式解析: a、四原创 2017-01-22 20:46:07 · 1374 阅读 · 0 评论 -
【MySQL】MySQL逻辑架构
如果能在头脑中构建一副MySQL各组件之间如何协同工作的架构图,就会有助于深入理解MySQL服务器。最上层的服务并不是MySQL所独有的,大多数基于网络的客户端/服务器的工具都有类似的架构。比如连接处理、授权认证、安全等等。第二层架构是MySQL比较有意思的部分。大多数MySQL的核心服务功能都在这一层,包括查询解析、分析、优化、缓存以及所有内置函数(例如,日期,时间,数学和加密函数),所有跨存储引原创 2017-02-15 19:05:38 · 1853 阅读 · 1 评论 -
SQL视图
视图视图是虚拟的表。与包含的数据表不一样,视图只包含使用时动态检索的数据查询。作为视图,他不包含任何列或数据,包含的只是一个查询。为什么使用视图?1:重用sql语句。2:简化复杂的sql操作。在编写查询后,可以方便的重用它而不必知道其基本查询的细节。3:使用表的一部分而不是整个表。4:保护数据。可以授予用户访问表的特定部分的权限,而不是对整个表进行访原创 2016-09-17 10:16:21 · 1955 阅读 · 0 评论 -
【MySQL】重构查询方式
摘自《高性能的MySQL》在优化有问题的查询时,目标应该是找到一个更优的方法获得实际需要的结果–而不一定总要从MySQL获取一模一样的结果集。有时候可以查询转换一种写法让其返回一样的结果,但是性能更好。但也可以通过修改应用代码,用另一种方式完成查询,最终达到一样的目的。这里我们将介绍如何通过这种方式来重构查询,并展示何时需要使用这样的技巧。用一个复杂的查询还是多个简单的查询。设计查询的时候一个需要原创 2017-03-22 20:05:25 · 1823 阅读 · 0 评论 -
【MySQL】并发控制
无论何时,只有有多个查询需要在同一时刻修改数据,都会产生并发控制的问题。这里讨论MySQL在两个层面的并发控制:服务器层与存储引擎层。并发控制是一个内容庞大的话题,有大量的理论文献对其进行详细的论述。在此只是简要地讨论MySQL如何控制并发读写。以unix系统的email box为例子,典型的mbox文件格式是非常简单的。一个mbox邮箱中的所有邮件都串行在一起,彼此首尾相连。这种格式对于读取和肥西原创 2017-02-15 20:12:45 · 1962 阅读 · 0 评论 -
【MySQL】MySQL关键字作为列名表名的处理方式
面试被问到一个问题,假如MySQL中的关键字在查询语句中作为列明或者表名出现,应该怎么处理。例如select desc from t;一脸懵逼。尴尬。于是乎,自己私下做了一个实验,发现了其中原因,特此分享。创建t表,包含两个字段,id和desc插入了三条数据mysql> use test;Database changedmysql> select desc from t;ERROR 1064原创 2017-05-05 17:54:51 · 26317 阅读 · 1 评论 -
【MySQL】记一次数据去重
有时候,因为开发时,考虑不当,会造成数据重复。背景:前几天做项目的时候,有一个给ip打标签的操作,但是当数据数量多了以后,发现,同一个ip被打了两次相同的标签,导致数据显示重复,然而,已经使用了一段时间了,只能在原有数据库上删除重复数据,然后修改添加标签的逻辑了,去重操作如下:mysql> select * from vip_port_tag;+-------+----------------+-原创 2017-08-19 15:57:00 · 1222 阅读 · 0 评论 -
【MySQL】count使用姿势
数据表描述mysql> select vip,port,status from vip_full limit 10;+----------------+------+--------+| vip | port | status |+----------------+------+--------+| 123.125.52.231 | 80 | 0 ||原创 2017-08-19 16:08:43 · 1537 阅读 · 1 评论 -
MySQL常用的日期时间函数
前三个较为简单此处不再做详细说明mysql> SELECT NOW();+---------------------+| NOW() |+---------------------+| 2016-09-08 16:12:01 |+---------------------+1 row in set (0.04 sec)mysql> SELECT原创 2016-09-08 16:25:27 · 2186 阅读 · 0 评论 -
mysql慢查日志
在MySQL的性能优化中,我们时常需要用到慢查日志,并以此来分析,进行性能的优化。 MySQL的慢查询日志是MySQL提供的一种日志记录,它用来记录在MySQL中响应时间超过阀值的语句,具体指运行时间超过long_query_time值的SQL,则会被记录到慢查询日志中。long_query_time的默认值为10,意思是运行10S以上的语句。默认情况下,Mysql数据库并不启动原创 2016-08-04 08:48:18 · 1833 阅读 · 0 评论 -
MySQL字符函数
CONCAT()和CONCAT_WS()字符连接mysql> SELECT CONCAT('mysql','5.6');+-----------------------+| CONCAT('mysql','5.6') |+-----------------------+| mysql5.6 |+-----------------------+1 row i原创 2016-09-07 14:08:33 · 1971 阅读 · 0 评论 -
PDO连接数据库及DSN详解
PDO构造函数 在PDO中,要建立与数据库的连接需要实例化PDO的构造函数,PDO构造函数的语法如下:__construct(string $dsn[,string $username[,string $password[,array $driver_options]]])参数说明如下dsn:数据源名,包括主机名,端口号和数据库名称。username:连接数据库的用户名原创 2016-03-29 17:19:28 · 20798 阅读 · 0 评论 -
PDO中执行SQL语句
exec()方法exec()方法返回执行后受影响行数,语法如下:int PDO::exec(string statement)参数statement是要执行的SQL语句。该方法返回执行查询时受影响的行数,通常情况下用于INSERT,DELETE和UPDATE语句中。例如:$dbms='mysql';//数据库类型$dbName='admin';//使用的数据库$us原创 2016-03-30 20:59:35 · 13641 阅读 · 0 评论 -
PDO中获取结果集
fetch()方法fetch()方法用于获取结果集的下一行,语法如下:mixed PDOStatement::fetch([int fetch_style][,int cursor_orientation[,int cursor_offset]]])参数fetch_style控制结果集的返回方式PDO::FETCH_ASSOC -- 关联数组形式PDO::FETCH_NUM原创 2016-03-31 14:56:42 · 8609 阅读 · 0 评论 -
PDO中事物处理
事务 (Transaction) 是操作数据库中很重要的一个功能, 它可以让你预定一条, 或者一系列 SQL 语句, 然后一起执行,并且在执行的过程中, 如果其中的某条执行失败, 可以回滚所有已更改的操作. 如果执行成功, 那么这一系列操作都会永久有效. 事务很好的解决了在操作数据库的时候不同步的问题. 同时, 通过事务去执行大数据量的时候, 执行效率可以提高很多很多. 在PDO中原创 2016-04-01 20:08:59 · 1790 阅读 · 0 评论 -
PDO中捕获SQL语句中的错误
使用默认模式-----PDO::ERRMODE_SILENT在默认模式中设置PDOStatement对象的errorCode属性,但不进行其他任何操作。例如:通过prepare()和execute()方法向数据库中添加数据,设置PDOStatement对象的erroCode属性,手动检测代码中的错误,操作步骤如下。$dbms='mysql';//数据库类型$dbName=原创 2016-04-01 16:06:15 · 8520 阅读 · 3 评论 -
Windows下MySQL忘记了密码怎么修改
如果在Windows下忘记了MySQL的密码,可以这样做:1.关闭正在运行的MySQL服务:在CMD中输入net stop mysql或者在Windows+r 调出运行窗口输入services.msc,在服务中手动停止mysql服务例如方法1:C:\Users\Administrator>net stop mysqlMySQL 服务正在停止.MySQL 服务已成功停止。原创 2016-04-05 16:35:45 · 4458 阅读 · 0 评论 -
PDO防止sql注入的机制
上面这段代码就可以防范sql注入。为什么呢?当调用 prepare() 时,查询语句已经发送给了数据库服务器,此时只有占位符 ? 发送过去,没有用户提交的数据;当调用到 execute()时,用户提交过来的值才会传送给数据库,他们是分开传送的,两者独立的,SQL攻击者没有一点机会。原创 2016-03-29 11:12:46 · 4551 阅读 · 0 评论 -
mysql5.7.11解压版安装配置
mysql5.7.11解压版安装配置配置完环境变量之后先别忙着启动mysql,我们还需要修改一下配置文件(如果没有配置,之后启动的时候就会出现图中的错误哦!:错误2 系统找不到文件),mysql-5.6.1X默认的配置文件是在my-default.ini,或者自己建立一个my.ini文件,原创 2016-03-20 21:07:19 · 7017 阅读 · 0 评论 -
mysql性能优化之max,count优化
注:在执行SQL语句前加上explain可以查看MySQL的执行计划 数据库:MySQL官方提供的sakila数据库Max优化:例如:查询最后支付时间 explain select max(payment_date) from payment \G;查询的类型为simple,没有用到任何索引,扫描行数为1万多行,用时0.02sec优化方法: 在payment_date列建立索引create i原创 2016-08-06 22:16:27 · 12071 阅读 · 4 评论 -
MySQL中join用法解析
MySQL中join用法解析实例数据库如下: student表:mysql> select * from student;+-----------+-----------+------+------+-------+| Sno | Sname | Ssex | Sage | Sdept |+-----------+-----------+------+------+---原创 2016-08-07 15:30:45 · 2919 阅读 · 0 评论 -
MySQL自定义函数
位运算符位运算符是指对二进制位从低位到高位对齐后进行运算。 符号 作用 举例 个人理解 & 按位与 $m & $n 全1为1,否则为0 | 按位或 $m | $n 全0为0,有1为1 ^ 按位异或 $m | $n 不同为1,相同为0 ~ 按位取反 ~$m << 向左移位 $m << $n >>原创 2016-09-09 09:31:16 · 1924 阅读 · 0 评论 -
mysql数据类型
数据类型是指列、存储过程参数、表达式和局部变量的数据特征,它决定了数据的存储格式,代表了不同的信息类型。比如float[(7,2)]意思就是说,一共7位,小数点后面2位,那么这个数所表示的最大数,就为99999.99选取原则,选择最合适而不是最大的(数据类型越大,占用空间越大)。原创 2016-09-04 13:50:46 · 1775 阅读 · 0 评论 -
mysql如何删除表中的重复行并保留id较小(或者较大)的记录
在实际录入数据库的过程中,如果数据量比较大的话,难免会因为一些原因,而录入多条重复的记录,那么应该如何操作才能删除重复行,并且保留一条id较大,或者较小的记录呢。 在本例中所用数据表结构如下所示tdb_goods 表中数据重复如图所示 首先第一步,利用group by分组查出每组中数目大于2的(即重复记录的)内容mysql> SEL原创 2016-09-07 09:28:04 · 5333 阅读 · 1 评论 -
【Swoole】用swoole简单实现MySQL连接池
MySQL连接池在传统的网站开发中,比如LNMP模式,由Nginx的master进程接收请求然后分给多个worker进程,每个worker进程再链接php-fpm的master进程,php-fpm再根据当前情况去调用其worker进程然后处理PHP,如果需要MySQL,在与MySQL建立连接,这个时候,如果有1000个请求打过来,就需要与MySQL建立1000个连接。如果请求达到万级或者百万级,这时原创 2017-10-21 17:24:00 · 16395 阅读 · 5 评论