w1100n
This site is best viewed in Google Chrome
wiloon, 10/15/2015 13:32 | Tag:

http://www.cnblogs.com/vicenteforever/articles/1789613.html Hash 索引结构的特殊性,其检索效率非常高,索引的检索可以一次定位,不像B-Tree 索引需要从根节点到枝节点,最后才能访问到页节点这样多次的IO访问,所以 Hash 索引的查询效率要远高于 B-Tree 索引。可 能很多人又有疑问了,既然 Hash 索引的效率要比 B-Tree 高很多,为什么大家不都用 Hash 索引而还要使用 B-Tree 索引呢?任何事物都是有两面性的,Hash 索引也一样,虽然 Hash 索引效率高,但是 Hash 索引本身由于其特殊性也带来了很多限制和弊端,主要有以下这些。 (1)Hash 索引仅仅能满足”=”,”IN”和”<=>”查询,不能使用范围查询。 由于 Hash 索引比较的是进行 Hash 运算之后的 Hash 值,所以它只能用于等值的过滤,不能用于基于范围的过滤,因为经过相应的 Hash 算法处理之后的 Hash 值的大小关系,并不能保证和Hash运算前完全一样。 (2)Hash 索引无法被用来避免数据的排序操作。 由于 Hash 索引中存放的是经过 … Continue reading

wiloon, 8/14/2015 9:52 | Tag:

http://my.oschina.net/junn/blog/110213 Replace into是Insert into的增强版。在向表中插入数据时,我们经常会遇到这样的情况:1、首先判断数据是否存在;2、如果不存在,则插入;3、如果存在,则更新。 在SQL Server中可以这样处理: if not exists (select 1 from t where id = 1) insert into t(id, update_time) values(1, getdate()) else update t set update_time = getdate() where id = 1 那么 MySQL 中如何实现这样的逻辑呢?MySQL 中有更简单的方法: replace into … Continue reading

wiloon, 6/28/2015 14:19 | Tag:

http://samyubw.blog.51cto.com/978243/223769   Memory存储引擎使用存在内存中的内容来创建表,每个Memory表只实际对应一个磁盘文件,在磁盘中表现为.frm文件。Memory类型的表访问速度非常快,因为它的数据是放在内存中的,并且默认使用hash索引,但是一旦服务关闭,表中的数据就会丢失。 示例:create table memory_tab(id int)engine=memory; 因为memory在mysqld重启后数据就会丢失,为了获得稳定的数据源,可以在启动mysqld时加上—init-file选项,把insert into memory_tab select 或load data infile类似的语句放进去即可。 另外因为memory表是把数据放到内存中的,所以服务器需要有足够的内存来维持所有在同一时间使用的memory表,注意对连接mysqld的所有用户连接 共享 内存表中的数据,根据应用如果不是在所有连接间共享数据,最好在内存表中加入标志各个连接的ID。当不再需要memory数据时,要记得去删除自己连接的数据。 对于内存表的官方说明: The MEMORY storage engine creates tables with contents that are stored in memory. Formerly, these were known as HEAP tables. MEMORY is … Continue reading

wiloon, 6/28/2015 13:52 | Tag:

什么是存储引擎? 关系数据库表是用于存储和组织信息的数据结构,可以将表理解为由行和列组成的表格,类似于Excel的电子表格的形式。有的表简单,有的表复杂,有的表根本不用来存储任何长期的数据,有的表读取时非常快,但是插入数据时去很差;而我们在实际开发过程中,就可能需要各种各样的表,不同的表,就意味着存储不同类型的数据,数据的处理上也会存在着差异,那么。对于MySQL来说,它提供了很多种类型的存储引擎,我们可以根据对数据处理的需求,选择不同的存储引擎,从而最大限度的利用MySQL强大的功能。这篇博文将总结和分析各个引擎的特点,以及适用场合,并不会纠结于更深层次的东西。我的学习方法是先学会用,懂得怎么用,再去知道到底是如何能用的。下面就对MySQL支持的存储引擎进行简单的介绍。 MyISAM 在mysql客户端中,使用以下命令可以查看MySQL支持的引擎:show engines; MyISAM表是独立于操作系统的,这说明可以轻松地将其从Windows服务器移植到Linux服务器;每当我们建立一个MyISAM引擎的表时,就会在本地磁盘上建立三个文件,文件名就是表明。例如,我建立了一个MyISAM引擎的tb_Demo表,那么就会生成以下三个文件: tb_demo.frm,存储表定义; tb_demo.MYD,存储数据; tb_demo.MYI,存储索引。 MyISAM表无法处理事务,这就意味着有事务处理需求的表,不能使用MyISAM存储引擎。MyISAM存储引擎特别适合在以下几种情况下使用: 选择密集型的表。MyISAM存储引擎在筛选大量数据时非常迅速,这是它最突出的优点。 插入密集型的表。MyISAM的并发插入特性允许同时选择和插入数据。例如:MyISAM存储引擎很适合管理邮件或Web服务器日志数据。 InnoDB InnoDB是一个健壮的事务型存储引擎,这种存储引擎已经被很多互联网公司使用,为用户操作非常大的数据存储提供了一个强大的解决方案。我的电脑上安装的MySQL 5.6.13版,InnoDB就是作为默认的存储引擎。InnoDB还引入了行级锁定和外键约束,在以下场合下,使用InnoDB是最理想的选择: 更新密集的表。InnoDB存储引擎特别适合处理多重并发的更新请求。 事务。InnoDB存储引擎是支持事务的标准MySQL存储引擎。 自动灾难恢复。与其它存储引擎不同,InnoDB表能够自动从灾难中恢复。 外键约束。MySQL支持外键的存储引擎只有InnoDB。 支持自动增加列AUTO_INCREMENT属性。 一般来说,如果需要事务支持,并且有较高的并发读取频率,InnoDB是不错的选择。 MEMORY 使用MySQL Memory存储引擎的出发点是速度。为得到最快的响应时间,采用的逻辑存储介质是系统内存。虽然在内存中存储表数据确实会提供很高的性能,但当mysqld守护进程崩溃时,所有的Memory数据都会丢失。获得速度的同时也带来了一些缺陷。它要求存储在Memory数据表里的数据使用的是长度不变的格式,这意味着不能使用BLOB和TEXT这样的长度可变的数据类型,VARCHAR是一种长度可变的类型,但因为它在MySQL内部当做长度固定不变的CHAR类型,所以可以使用。 一般在以下几种情况下使用Memory存储引擎: 目标数据较小,而且被非常频繁地访问。在内存中存放数据,所以会造成内存的使用,可以通过参数max_heap_table_size控制Memory表的大小,设置此参数,就可以限制Memory表的最大大小。 如果数据是临时的,而且要求必须立即可用,那么就可以存放在内存表中。 存储在Memory表中的数据如果突然丢失,不会对应用服务产生实质的负面影响。 Memory同时支持散列索引和B树索引。B树索引的优于散列索引的是,可以使用部分查询和通配查询,也可以使用<、>和>=等操作符方便数据挖掘。散列索引进行“相等比较”非常快,但是对“范围比较”的速度就慢多了,因此散列索引值适合使用在=和<>的操作符中,不适合在<或>操作符中,也同样不适合用在order by子句中。 可以在表创建时利用USING子句指定要使用的版本。例如: create table users ( id smallint unsigned not null … Continue reading

wiloon, 5/25/2015 16:29 | Tag:

select column_key,COLUMN_NAME,column_type,is_nullable,column_comment from INFORMATION_SCHEMA.Columns where table_name=” and table_schema=”   1、显示数据库列表 mysql>show databases; 说明:其中字典库是:information_schema,其中常用字典表: INFORMATION_SCHEMA.SCHEMATA  –数据库中所有数据库信息 INFORMATION_SCHEMA.TABLES  –存放数据库中所有数据库表信息 INFORMATION_SCHEMA.COLUMNS  –所有数据库表的列信息 INFORMATION_SCHEMA.STATISTICS  –存放索引信息 INFORMATION_SCHEMA.USER_PRIVILEGES  — INFORMATION_SCHEMA.SCHEMA_PRIVILEGES INFORMATION_SCHEMA.TABLE_PRIVILEGES INFORMATION_SCHEMA.COLUMN_PRIVILEGES INFORMATION_SCHEMA.CHARACTER_SETS INFORMATION_SCHEMA.COLLATIONS INFORMATION_SCHEMA.COLLATION_CHARACTER_SET_APPLICABILITY INFORMATION_SCHEMA.TABLE_CONSTRAINTS INFORMATION_SCHEMA.KEY_COLUMN_USAGE —存放数据库里所有具有约束的键信息 INFORMATION_SCHEMA.ROUTINES INFORMATION_SCHEMA.VIEWS  –存放所有视图信息 INFORMATION_SCHEMA.TRIGGERS  –触发器信息 2、显示当前连接的数据库 mysql>select database(); … Continue reading

wiloon, 4/4/2015 3:31 | Tag:

一、下载mysql安装包 安装包名称:mysql-5.6.12-win32.zip 下载地址:http://dev.mysql.com/downloads/mysql/ 二、安装mysql 2.1 修改配置文件my.ini 将mysql-5.6.12-win32.zip解压拷贝到F:\ 修改F:\mysql-5.6.12-win32.zip目录下的配置文件my.ini如下: [client] port = 3306 [mysql] [mysqld] bind-address = 0.0.0.0 basedir=D:/apps/mysql-5.6.23-winx64 datadir=D:/apps/mysql-5.6.23-winx64/data max_connections=200 character-set-server=utf8 port=3306   — try to start mysql with console 2.2 安装mysql为windows系统服务 以管理员身份(Run as administrator)启动cmd,切换到目录F:/mysql-5.6.12-win32/bin 如果以普通用户执行该命令会提示Install/Remove of the Service Denied! … Continue reading

wiloon, 2/10/2015 15:21 | Tag:

1.修改配置文件 sudo vim /etc/mysql/my.cnf 把bind-address参数的值改成你的内/外网IP或0.0.0.0,或者直接注释掉这行.   解决MySQL不允许从远程访问的方法 解决方法: 1。改表法。可能是你的帐号不允许从远程登陆,只能在localhost。这个时候只要在localhost的那台电脑,登入mysql后,更改 “mysql” 数据库里的 “user” 表里的 “host” 项,从“localhost”改称“%” mysql -u root -pvmwaremysql>use mysql; mysql>update user set host = ‘%’ where user = ‘root’; mysql>select host, user from user;     mysql>FLUSH   PRIVILEGES 使修改生效.就可以了

wiloon, 1/8/2015 2:33 | Tag:

http://phpcode8.com/lamp/mysql-lamp/mysql-empty-tables.html SELECT concat(‘DROP TABLE IF EXISTS ‘, table_name, ‘;’) FROM information_schema.tables WHERE table_schema = ‘pentaho0’;

wiloon, 5/21/2014 1:33 | Tag:

如果在INSERT语句末尾指定了ON DUPLICATE KEY UPDATE,并且插入行后会导致在一个UNIQUE索引或PRIMARY KEY中出现重复值,则在出现重复值的行执行UPDATE;如果不会导致唯一值列重复的问题,则插入新行。 例如,如果列 a 为 主键 或 拥有UNIQUE索引,并且包含值1,则以下两个语句具有相同的效果: 1 INSERT INTO TABLE (a,c) VALUES (1,3) ON DUPLICATE KEY UPDATE c=c+1; 2 UPDATE TABLE SET c=c+1 WHERE a=1; 如果行作为新记录被插入,则受影响行的值显示1;如果原有的记录被更新,则受影响行的值显示2。 这个语法还可以这样用: 如果INSERT多行记录(假设 a 为主键或 a 是一个 UNIQUE索引列): 1 1.INSERT … Continue reading

wiloon, 5/7/2014 8:22 | Tag:

https://mariadb.com/kb/en/mariadb/general-query-log/   查询日志: 编辑/etc/mysql/my.cnf, 在[mysqld]段下添加以下三行并重启mysql(mysql用户写权限) general-log=1 general-log-file=/data/logs/mysql/mysql.log log-output=file 查看配置:   MySQL日志: 主要包含:错误日志、查询日志、慢查询日志、事务日志、二进制日志; 日志是mysql数据库的重要组成部分。日志文件中记录着mysql数据库运行期间发生的变化;也就是说用来记录mysql数据库的客户端连接状况、SQL语句的执行情况和错误信息等。当数据库遭到意外的损坏时,可以通过日志查看文件出错的原因,并且可以通过日志文件进行数据恢复。 错误日志 在mysql数据库中,错误日志功能是默认开启的。并且,错误日志无法被禁止。默认情况下,错误日志存储在mysql数据库的数据文件中。错误日志文件通常的名称为hostname.err。其中,hostname表示服务器主机名。 错误日志信息可以自己进行配置的,错误日志所记录的信息是可以通过log-error和log-warnings来定义的,其中log-err是定义是否启用错误日志的功能和错误日志的存储位置,log-warnings是定义是否将警告信息也定义至错误日志中。默认情况下错误日志大概记录以下几个方面的信息:服务器启动和关闭过程中的信息(未必是错误信息,如mysql如何启动InnoDB的表空间文件的、如何初始化自己的存储引擎的等等)、服务器运行过程中的错误信息、事件调度器运行一个事件时产生的信息、在从服务器上启动服务器进程时产生的信息。 下面我们来定义mysql错误日志的功能: 一般而言,日志级别的定义没有回话变量都只是在全局级别下进行定义。 mysql> SHOW GLOBAL VARIABLES LIKE ‘%log%’; +—————————————–+———————————–+ | Variable_name | Value | +—————————————–+———————————–+ | back_log | 50 | | binlog_cache_size | 32768 … Continue reading

wiloon, 5/7/2014 1:46 | Tag:

相同 显示 TIMESTAMP列的显示格式与DATETIME列相同。换句话说,显示宽度固定在19字符,并且格式为YYYY-MM-DD HH:MM:SS。 不同 范围 datetime 以’YYYY-MM-DD HH:MM:SS’格式检索和显示DATETIME值。支持的范围为’1000-01-01 00:00:00’到’9999-12-31 23:59:59’TIMESTAMP值不能早于1970或晚于2037 储存 TIMESTAMP 1.4个字节储存(Time stamp value is stored in 4 bytes) 2.值以UTC格式保存( it stores the number of milliseconds) 3.时区转化 ,存储时对当前的时区进行转换,检索时再转换回当前的时区。 datetime 1.8个字节储存(8 bytes storage) 2.实际格式储存(Just stores what you have stored … Continue reading

wiloon, 4/9/2014 2:12 | Tag:

http://blog.csdn.net/xrt95050/article/details/2441458 在使用mysql时,经常遇到表名不符合规范或标准,但是表里已经有大量的数据了,如何保留数据,只更改表名呢?        可以通过建一个相同的表结构的表,把原来的数据导入到新表中,但是这样视乎很麻烦。       能否简单使用一个SQL语句就搞定呢?当然可以,mysql5.0下我们使用这样的SQL语句就可以了。 ALTER  TABLE table_name RENAME TO new_table_name 例如 ALTER  TABLE admin_user RENAME TO a_user

wiloon, 4/9/2014 2:10 | Tag:

  MySQL的大小写敏感性 lower_case_table_names 在 MySQL 中,数据库和表对就于那些目录下的目录和文件。因而,操作系统的敏感性决定数据库和表命名的大小写敏感。这就意味着数据库和表名在 Windows 中是大小写不敏感的,而在大多数类型的 Unix 系统中是大小写敏感的。 奇怪的是列名与列的别名在所有的情况下均是忽略大小写的,而表的别名又是区分大小写的。 要避免这个问题,你最好在定义数据库命名规则的时候就全部采用小写字母加下划线的组合,而不使用任何的大写字母。 或者也可以强制以 -O lower_case_table_names=1 参数启动 mysqld(如果使用 –defaults-file=…\my.cnf 参数来读取指定的配置文件启动 mysqld 的话,你需要在配置文件的 [mysqld] 区段下增加一行 lower_case_table_names=1)。这样MySQL 将在创建与查找时将所有的表名自动转换为小写字符(这个选项缺省地在 Windows 中为 1 ,在 Unix 中为 0。从 MySQL 4.0.2 开始,这个选项同样适用于数据库名)。 当你更改这个选项时,你必须在启动 mysqld 前首先将老的表名转换为小写字母。 换句话说,如果你希望在数据库里面创建表的时候保留大小写字符状态,则应该把这个参数置: lower_case_table_names=0 … Continue reading

wiloon, 1/20/2014 10:43 | Tag:

本文介绍了七种MySQL索引类型。在数据库表中,对字段建立索引可以大大提高查询速度。通过善用这些索引,可以令MySQL的查询和运行更加高效。   AD:2013云计算架构师峰会课程资料下载       索引是快速搜索的关键。MySQL索引的建立对于MySQL的高效运行是很重要的。下面介绍几种常见的MySQL索引类型。   在数据库表中,对字段建立索引可以大大提高查询速度。假如我们创建了一个 mytable表:   CREATE TABLE mytable(   ID INT NOT NULL,   username VARCHAR(16) NOT NULL   );   我们随机向里面插入了10000条记录,其中有一条:5555, admin。   在查找username=”admin”的记录 SELECT * FROM mytable WHERE username=’admin’;时,如果在username上已经建立了索引,MySQL无须任何扫描,即准确可找到该记录。相反,MySQL会扫描所有记录,即要查询10000条记录。   索引分单列索引和组合索引。单列索引,即一个索引只包含单个列,一个表可以有多个单列索引,但这不是组合索引。组合索引,即一个索包含多个列。   … Continue reading

wiloon, 1/20/2014 9:34 | Tag:

先前一直使用MySQL admin 和 phpmyadmin 来管理MySQL数据库,但是这两个软件均有很让人郁闷的地方: MySQL的操作体验不好,用了很久都很不习惯 phpmyadmin用户体验还行,但是访问远程服务器和多服务器时体验和速度欠佳 今天在网上逛了一大圈后发现现在的MySQL客户端已经是相当多了(想当年真是杯具…),试用一圈后觉得还是HeidiSQL最好用。 个人使用感受如下: 体积小,安装文件只有1.7M 速度:操作流畅,终于不卡了 用户体验:,查看表数据和结构只需要切换选项卡即可,不需要复杂鼠标的操作 高级功能,提供查看数据库状态和维护功能 不足:不能图形管理触发器和作业 最后还要注意一点:HeidiSQ是开源免费的 HeidiSQL 是一个功能非常强大的 MySQL 客户端软件,采用 Delphi 开发,支持 Windows 操作系统

wiloon, 1/17/2014 12:43 | Tag:

(1)表tb1有如下数据: 姓名                     语文                        数学                    物理 张三                       68                           89                        99 李四                      90                            66                         78   现在要求写出查询语句得到如下查询结果 name                    subject                       score 张三                       语文                           68 张三                       数学                           89 张三                       物理                            99 李四                       语文                            90 李四                      数学                            66 李四                       物理                            78 sql语句如下: select 姓名 as … Continue reading

wiloon, 1/16/2014 5:04 | Tag:

IF表达式 IF(expr1,expr2,expr3) 如果 expr1 是TRUE (expr1 <> 0 and expr1 <> NULL),则 IF()的返回值为expr2; 否则返回值则为 expr3。IF() 的返回值为数字值或字符串值,具体情况视其所在语境而定。 select *,if(sva=1,”男”,”女”) as ssva from taname where sva != “” 作为表达式的if也可以用CASE when来实现: select CASE sva WHEN 1 THEN ‘男’ ELSE ‘女’ END as ssva … Continue reading

wiloon, 1/16/2014 5:03 | Tag:

mysql CONCAT()函数用于将多个字符串连接成一个字符串 mysql CONCAT(str1,str2,…) 返回结果为连接参数产生的字符串。如有任何一个参数为NULL ,则返回值为 NULL。或许有一个或多个参数。 如果所有参数均为非二进制字符串,则结果为非二进制字符串。 如果自变量中含有任一二进制字符串,则结果为一个二进制字符串。一个数字参数被转化为与之相等的二进制字符串格式;若要避免这种情况,可使用显式类型 cast, 例如: SELECT CONCAT(CAST(int_col AS CHAR), char_col) mysql> SELECT CONCAT(’My’, ‘S’, ‘QL’); -> ‘MySQL’ mysql> SELECT CONCAT(’My’, NULL, ‘QL’); -> NULL mysql> SELECT CONCAT(14.3); -> ‘14.3′ mysql CONCAT_WS(separator,str1,str2,…) CONCAT_WS() 代表 CONCAT … Continue reading

wiloon, 1/16/2014 5:03 | Tag:

今天用到了MySql里的isnull才发现他和MSSQL里的还是有点区别,现在简单总结一下: mysql中isnull,ifnull,nullif的用法如下: isnull(expr) 的用法: 如expr 为null,那么isnull() 的返回值为 1,否则返回值为 0。 mysql> select isnull(1+1); -> 0 mysql> select isnull(1/0); -> 1 使用= 的null 值对比通常是错误的。 isnull() 函数同 is null比较操作符具有一些相同的特性。请参见有关is null 的说明。 IFNULL(expr1,expr2)的用法: 假如expr1   不为   NULL,则   IFNULL()   的返回值为   expr1; 否则其返回值为   expr2。IFNULL()的返回值是数字或是字符串,具体情况取决于其所使用的语境。 mysql>   SELECT   IFNULL(1,0); ->   … Continue reading

wiloon, 1/16/2014 5:00 | Tag:

coalesce函数表示可以返回参数中的第一个非空表达式,当你有N个参数时选取第一个非空值(从左到右)。 实例一: select coalesce(null,”carrot”,”apple”) 返回结果:carrot 实例二: select coalesce(1,”carrot”,”apple”) 返回结果:1 友情提示:coalesce里的参数如果是字符串的话,务必用单引号或者双引号廓起来; 这些语句可以直接在mysql里运行。   http://hi.baidu.com/luoganet/item/7ec497dec10c88e2795daa1f

next page
辽ICP备14012896