MySQL

在MySQL中使用通配符时应该注意的问题

现象:有一个表 action_conf,数据如下: 如果想获取以exp_site_10_开头的en_name的记录,sql语句该如何写? so easy!select en_name from action_conf where en_name like 'exp_site_10_%' 很自信的在idb中执行了这条sql,就会发现结果并不是所预期的。 你会发现,执行上面的sql会把所有以 exp_site_10开头的记录都列出来了。 原因: 其实,这都是sql中的通 [详细]

MySQL数据库中的安全设置方案

随着网络的普及,基于网络的应用也越来越多。网络数据库就是其中之一。通过一台或几台服务器可以为很多客户提供服务,这种方式给人们带来了很多方 便,但也给不法分子造成了可乘之机。由于数据都是通过网络传输的,这就可以在传输的过程中被截获,或者通过非常手段进入数据库。由于以上原因,数据库安全 就显得十分重要。因此,本文就以上问题讨论了MySQL数据库在网络安全方面的一些功能。 帐户安全帐户是MySQL最简单的安全措施。每一帐户都由用户名、密码以及位置(一般由服务器名、IP或通配符)组成。如用户john从 [详细]

几个常见的MySQL的可优化点归纳总结

索引相关 1. 查询(或更新,删除,可以转换为查询)没有用到索引 这是最基础的步骤,需要对sql执行explain查看执行计划中是否用到了索引,需要重点关注type=ALL, key=NULL的字段。 2. 在索引字段上施加函数to_char(gmt_created, ‘mmdd') = '0101′正确的写法gmt_created between to_date(“20090101″, “yyyymmdd”) and to_date(“20090102″, “yyyymmdd”)3. 在索 [详细]

一个优化MySQL查询操作的具体案例分析

问题描述 一个用户反映先线一个SQL语句执行时间慢得无法接受。SQL语句看上去很简单(本文描述中修改了表名和字段名): SELECT count(*) FROM a JOIN b ON a.`S` = b.`S` WHERE a.`L` > '2014-03-30 00:55:00' AND a.`L` < '2014-03-30 01:00:00' ; 且查询需要的字段都建了索引,表结构如下:CREATE TABLE `a` ( `L` timestamp NOT NULL DEFAULT [详细]

PHP中常用的几个 mysql操作

显示数据库或表: 复制代码 代码如下: show databases;//然后可以use database_name; show tables;更改表名: 复制代码 代码如下: alter table table_name rename new_t;添加列 : 复制代码 代码如下: alter table table_name add column c_n column attributes;删除列: 复制代码 代码如下: alter table table_name drop column [详细]

分析一个MySQL的异常查询的案例

问题 用户工单疑问:相同的语句,只是最后的limit行数不同。奇怪的是,limit 10 的性能比limit 100的语句还慢约10倍。 隐藏用户表信息,语句及结果如下SELECT f1 , SUM(`f2`) `CNT` FROM T WHERE f1 IS NOT NULL AND f3 = '2014-05-12' GROUP BY f1 ORDER BY `CNT` DESC LIMIT 10;执行时间3 min 3.65 secSELECT f1 , SUM(`f2`) `CNT` [详细]

从零开始搭建MySQL MMM架构

云平台是个好东西,MySQL-mmm的典型配置是需要五台机器,一台作为mmm admin,两台master,两台slave。一下子找五台机器真不容易,何况还要安装同样的操作系统。而有了cloud,简单几步就有了完备的实验环境:四台数据库服务器和一台管理服务器(Memory:8G,CPU:2G,Disk:128G,64bit RHEL6)。在此,向为付出辛劳搭建云平台的同事们表示由衷的感谢:-)下面言归正传,开始全新的MySQL mmm之旅。 下面要配置的MySQL Cluster环境包含四台数 [详细]

MySQL中查询的有关英文字母大小写问题的分析

mysql数据库在做查询时候,有时候是英文字母大小写敏感的,有时候又不是的,主要是由mysql的字符校验规则的设置决定的,通常默认是不支持的大小写字母敏感的。 1. 什么是字符集和校验规则? 字符集是一套符号和编码。校对规则是在字符集内用于比较字符的一套规则。任何一个给定的字符集至少有一个校对规则,它可能有几个校对规则。要想列出一个字符集的校对规则,使用SHOW COLLATION语句。校对规则一般有这些特征: 两个不同的字符集不能有相同的校对规则。 每个字符集有一个默认校对 [详细]

mysql中的保留字段产生的问题

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server versio····这句话对于咱们并不陌生,无非就是多了“,”之类的问题。但是你如果无意之中添加了一个mysql中的保留字段作为数据库中存贮的字段名,悲剧就这样发生了。 前几天因为功能的临时变更,需要给数据表添加一个字段用来区别导入的批次,我就在mysql中添加了group字段,没想到我的噩梦就此展开····· [详细]

MySQL存储数据乱码的问题解析

mysql的字符集设置有多个层级,在mysql中存储中文,如果不能正确设置字符集,很容易出现数据乱码。今天就有一个用户反馈他数据库中的数据下午1点多开始出现了乱码。在这里,我分享下具体问题的排查过程,以及解决的办法。 (1) 排除客户端设置导致的显示乱码 如果用户设置的mysql character_set_client跟客户端显示的字符集不一致,很容易导致中文数据乱码。 设置session字符集为utf8:set names utf8,设置客户端显示字符集为utf8,然后从表中select [详细]

MySQL的增删查改语句用法示例总结

1.创建列 alter table tablename add colname type not null default '0′; 例:alter table mmanapp_mmanmedia add appid_id integer not null default 372;2.删除列alter table tablename drop column colname; 例:alter table mmanapp_mmanmedia drop column appid_ [详细]

Mysql经典的“8小时问题”

假设你的数据库是mysql,如果数据源配置不当,将可能发生经典的“8小时问题”。原因是mysql在默认情况下,如果发现一个连接的空闲时间超过8小时,将会在数据库端自动关闭这个连接。而数据源并不知道这个连接已经关闭了,当它将这个无用的连接返回给某个dao时,dao就会报无法获取connection异常。 如果采用dbcp的默认配置,由于testOnBorrow属性的默认值是true,数据源在将连接交给dao前,会事先检测这个连接是否是好的,如果连接有问题(在数据库端被关闭),则会取一个其 [详细]

介绍一个针对C++程序的MySQL访问库soci

一直以来,笔者都在不停寻找一种更人性化的数据库访问方式(并不是说默认的方式不好,而是有时候的确在模块化设计中不太方便)。 后来有幸在php中找到codeigniter的ActiveReord,详细参考这篇文章: 抽离CodeIgniter的数据库访问类! 然而c++却始终用着最原始的方式,昨天趁着项目要用的机会,在网上搜索了好久,总算让我找到两套c++的数据库访问框架: soci litesql 两套代码我都拿下来看了一下,litesql实现了一套完整的代码自动生成,功能强大,但是 [详细]

浅谈mysql数据库中的using的用法

mysql中using的用法为: using()用于两张表的join查询,要求using()指定的列在两个表中均存在,并使用之用于join的条件。 示例: 复制代码 代码如下: select a.*, b.* from a left join b using(colA); 等同于: 复制代码 代码如下: select a.*, b.* from a left join b on a.colA = b.colA;以上所述就是本文的全部内容,希望大家能够喜欢。 [详细]

解决MySQL无法远程连接的方法

在远程主机上,我开启了mysql 服务,用 phpmyadmin 可以打开,比如说用户名为 root,密码为 123456。不过用 Mysql 客户端远程连接时却报了错误,比如 Mysql-Front 报了如下错误。Access denied for user ‘root'@'121.42.8.33′(using password:YES)比较奇怪,phpmyadmin 可以正常访问,而 Mysql-Front 为什么无法连接呢?可能的原因,应该就是 IP 限制了,phpmyadmin在连接时 [详细]