MYSQL入门全套

mysql简介 1、什么是数据库 ? 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今六十多年前,随着信息技术和市场的发展,特别是二十世纪九十年代以后,数据管理不再仅仅是存储和管理数据,而转变成用户所需要的各种数据管理的方式。数据库有很多种类型,从最简单的存储有各种数据的表格到能够进行海量数据存储的大型数据库系统都在各个方面得到了广泛的应用。 主流的数据库有:sqlserver,mysql,Oracle、SQLite、Access、MS SQL Server等,本文主要讲述的是mysql 2、数据库管理是干什么用的? a. 将数据保存到文件或内存 b. 接收特定的命令,然后对文件进行相应的操作 PS:如果有了以上管理系统,无须自己再去创建文件和文件夹,而是直接传递 命令 给上述软件,让其来进行文件操作,他们统称为数据库管理系统(DBMS,Database Management System) mysql安装 MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),MySQL数据库系统使用最常用的数据库管理语言–结构化查询语言(SQL)进行数据库管理。在 WEB 应用方面MySQL是最好的 RDBMS (Relational Database Management System,关系数据库管理系统) 应用软件之一。 使用mysql必须具备一下条件   a. 安装MySQL服务端   b. 安装MySQL客户端   b. 【客户端】连接【服务端】   c. 【客户端】发送命令给【服务端MySQL】服务的接受命令并执行相应操作(增删改查等) 1、下载地址:http://dev.mysql.com/downloads/mysql/ 2、安装 windows安装请参考:http://www.cnblogs.com/lonelywolfmoutain/p/4547115.html linux下安装:http://www.cnblogs.com/chenjunbiao/archive/2011/01/24/1940256.html 注:以上两个链接有完整的安装方式,撸主也是参考他的安装的,安装完以后mysql.server start启动mysql服务 mysql操作 一、连接数据库 mysql -u user -p 例:mysql -u root -p 常见错误如下: ERROR 2002 […]

如何导入导出MySQL数据库

1. 概述 MySQL数据库的导入,有两种方法: 1) 先导出数据库SQL脚本,再导入; 2) 直接拷贝数据库目录和文件。 在不同操作系统或MySQL版本情况下,直接拷贝文件的方法可能会有不兼容的情况发生。 所以一般推荐用SQL脚本形式导入。 下面分别介绍两种方法。 2. 方法一 SQL脚本形式 操作步骤如下: 2.1. 导出SQL脚本 在原数据库服务器上,可以用phpMyAdmin工具,或者mysqldump(mysqldump命令位于mysql/bin/目录中)命令行,导出SQL脚本。 2.1.1 用phpMyAdmin工具 导出选项中,选择导出“结构”和“数据”,不要添加“Drop DATABASE”和“Drop TABLE”选项。 选中“另存为文件”选项,如果数据比较多,可以选中“gzipped”选项。 将导出的SQL文件保存下来。 2.1.2 用mysqldump命令行 命令格式 mysqldump -u用户名 -p 数据库名 > 数据库名.sql 范例: mysqldump -uroot -p abc > abc.sql (导出数据库abc到abc.sql文件) 提示输入密码时,输入该数据库用户名的密码。 2.2. 创建空的数据库 通过主控界面/控制面板,创建一个数据库。假设数据库名为abc,数据库全权用户为abc_f。 2.3. 将SQL脚本导入执行 同样是两种方法,一种用phpMyAdmin(mysql数据库管理)工具,或者mysql命令行。 2.3.1 用phpMyAdmin工具 从控制面板,选择创建的空数据库,点“管理”,进入管理工具页面。 在”SQL”菜单中,浏览选择刚才导出的SQL文件,点击“执行”以上载并执行。 注意:phpMyAdmin对上载的文件大小有限制,php本身对上载文件大小也有限制,如果原始sql文件 比较大,可以先用gzip对它进行压缩,对于sql文件这样的文本文件,可获得1:5或更高的压缩率。 gzip使用方法: […]

bash下利用trap捕捉信号

我在之前的文章里写了myisam读数据压缩的情况,最近决定把它用在生产环境上,所以避免不了写一个“安全”的处理脚本放在DB服务器上,这就引入了本文所讨论的话题。 我希望这个bash脚本在退出的时候做一些事情,包括: 它启动的切到后台的job需要被杀死; 一些临时文件的清理。 在这个脚本里我用到了trap这个命令,关于它,你可以man一下,我这里就不啰嗦了。直接上示例代码: $ cat test_trap.sh declare -i run_terminate=0 trap “run_terminate=1” SIGINT SIGTERM # 启动io监控,IO较大时不进行压缩 vmstat 1 >> ./a.log & while [ ${run_terminate} -eq 0 ] do # 核心代码 sleep 30 done for pid in $(ps -ef | awk -v p=${$} ‘{if ($3 == p){print $2}}’) do kill -9 ${pid} > /dev/null done […]

mysql数据压缩性能对比(二)

在上一篇文章中,我们用生产环境的真实数据与真实SQL测试了archive和myisampack两种方式下的性能对比情况。我们得到一个对这个测试case有效的结论,那就是在240万数据量的情况下,采用archive引擎将使得某些查询慢得无法忍受! 那么,原因是什么呢? 我们知道,mysql提供archive这种存储引擎是为了降低磁盘开销,但还有一个前提,那就是被归档的数据不需要或者很少被在线查询,偶尔的查询慢一些也是没关系的。鉴于上述原因,archive表是不允许建立自增列之外的索引的。 有了这个共识,我们拿一条测试SQL来分析一下不用索引前后的查询性能差别为什么这么大。在我们的测试SQL中有这么一条: SELECT c1,c2,…,cn FROM mysqlslap.rpt_topranks_v3 WHERE … AND partition_by1 = ‘50008090’ ORDER BY added_quantity3 DESC LIMIT 500 我们前边说过,测试的这个表在partition_by1这个字段上建立了索引,那么,我们初步判断在基准表和myisampack表上,这个查询应该用到了partition_by1的索引;EXPLAIN一下: mysql> EXPLAIN -> SELECT … FROM mysqlslap.rpt_topranks_v3 -> WHERE … AND partition_by1 = ‘50008090’ -> ORDER BY added_quantity3 DESC -> LIMIT 500\G *************************** 1. ROW *************************** id: 1 select_type: SIMPLE TABLE: rpt_topranks_v3 TYPE: REF […]

mysql的数据压缩性能对比(一)

数据魔方需要的数据,一旦写入就很少或者根本不会更新。这种数据非常适合压缩以降低磁盘占用。MySQL本身提供了两种压缩方式——archive引擎以及针对MyISAM引擎的myisampack方式。今天对这两种方式分别进行了测试,对比了二者在磁盘占用以及查询性能方面各自的优劣。至于为什么做这个,你们应该懂的,我后文还会介绍。且看正文: 1. 测试环境: 软硬件 一台 64位 2.6.18-92 内核Linux开发机,4G内存,4个2800Mhz Dual-Core AMD Opteron(tm) Processor 2220 CPU。 MySQL放在一块7200转SAT硬盘,未做raid; MySQL未做任何优化,关闭了query cache,目的在于避免query cache对测试结果造成干扰。 表结构 2424753条记录,生产环境某一个分片的实际数据; 分别建立了(partition_by1,idx_rank) 和 (partition_by1,chg_idx)的联合索引,其中partition_by1为32长度的varchar类型,用于检索;其余两个字段均为浮点数,多用于排序; autokid作为子增列,充当PRIMARY KEY,仅作为数据装载时原子性保证用,无实际意义。 2. 测试目的: 压缩空间对比 压缩率越大,占用的磁盘空间越小,直接降低数据的存储成本; 查询性能对比 压缩后查询性能不应该有显著降低。Archive是不支持索引的,因此性能降低是必然的,那么我们也应该心里有个谱,到底降低了多少,能不能接受。 3. 测试工具: mysqlslap 官方的工具当然是不二之选。关于mysqlslap的介绍请参考 官方文档。 测试query 截取生产环境访问topranks_v3表的实际SQL共9973条,从中抽取访问量较大的7条,并发50,重复执行10次。命令如下: ./mysqlslap –defaults-file=../etc/my.cnf -u**** -p**** -c50 -i10 -q ../t.sql –debug-info 4.测试结论 比较项 磁盘空间 耗时(秒) CPU Idle LOAD 并发 基准表(MyISAM) 403956004 […]

利用临时表,加快存储过程的执行速度。

利用临时表,加快存储过程的执行速度。 背景:  一个博客网站访问流量表,每天有大约100万条数据插入,记录每个博客及网站的访问情况。表结构:mysql> show fields from blog_track;+—————-+————–+——+—–+———+—————-+| Field          | Type         | Null | Key | Default | Extra          |+—————-+————–+——+—–+———+—————-+| track_id       | int(11)      | NO   | PRI | NULL    | auto_increment | | track_ip       | char(15)     | YES  |     | NULL    |                | | track_date     | datetime     | NO   | MUL |         |                | | track_page     | […]

DreamCoder for MySQL 4.4.2 crack 破解 Patch KEYGEN

DreamCoder for MySQL。   本人一直在使用navicat作为Mysql client,不过navicat写存储过程不太方便,每次写存储过程时都切换到mysql administrator,终于给我发现了一个好东东DreamCoder for MySQL,看了看官网的介绍,抱着一试的态度下载了企业版,感觉非常好,特别在写存储过程,很好很强大。哈哈。。分享给大家。  终于找到破解版了,Thanks god~下载:企业版 http://www.sqldeveloper.net/download/installer_dreamcoder_for_mysql_enterprise.exe专业版 http://www.sqldeveloper.net/download/installer_dreamcoder_for_mysql_professional.exe标准版 http://www.sqldeveloper.net/download/installer_dreamcoder_for_mysql_standard.exe免费版 http://www.sqldeveloper.net/download/installer_dreamcoder_for_mysql_free.exe     破解程序:http://www.strongd.net/dl/DreamCoder_for_MySQL_Enterprise_v4.4.Patch.LaZzy.tPORt.zip    

Mysql日期和时间函数不求人

对于每个类型拥有的值范围以及并且指定日期何时间值的有效格式的描述见7.3.6 日期和时间类型。  这里是一个使用日期函数的例子。下面的查询选择了所有记录,其date_col的值是在最后30天以内:  mysql> SELECT something FROM table  WHERE TO_DAYS(NOW()) – TO_DAYS(date_col) <= 30;  DAYOFWEEK(date)  返回日期date的星期索引(1=星期天,2=星期一, ……7=星期六)。这些索引值对应于ODBC标准。  mysql> select DAYOFWEEK(‘1998-02-03’);  -> 3  WEEKDAY(date)  返回date的星期索引(0=星期一,1=星期二, ……6= 星期天)。  mysql> select WEEKDAY(‘1997-10-04 22:23:00’);  -> 5  mysql> select WEEKDAY(‘1997-11-05’);  -> 2  DAYOFMONTH(date)  返回date的月份中日期,在1到31范围内。  mysql> select DAYOFMONTH(‘1998-02-03’);  -> 3  DAYOFYEAR(date)  返回date在一年中的日数, 在1到366范围内。  mysql> select DAYOFYEAR(‘1998-02-03’);  -> 34  MONTH(date)  返回date的月份,范围1到12。  mysql> select MONTH(‘1998-02-03’);  -> 2  DAYNAME(date)  返回date的星期名字。  mysql> select DAYNAME(“1998-02-05”);  -> ‘Thursday’  MONTHNAME(date)  返回date的月份名字。  mysql> select MONTHNAME(“1998-02-05”);  -> ‘February’  QUARTER(date)  返回date一年中的季度,范围1到4。  mysql> select QUARTER(’98-04-01′);  -> 2  WEEK(date)     WEEK(date,first)  对于星期天是一周的第一天的地方,有一个单个参数,返回date的周数,范围在0到52。2个参数形式WEEK()允许 你指定星期是否开始于星期天或星期一。如果第二个参数是0,星期从星期天开始,如果第二个参数是1, 从星期一开始。  mysql> select WEEK(‘1998-02-20’);  -> 7  mysql> select WEEK(‘1998-02-20’,0);  -> 7  mysql> select WEEK(‘1998-02-20’,1);  -> 8  YEAR(date)  返回date的年份,范围在1000到9999。  mysql> select YEAR(’98-02-03′);  -> 1998  HOUR(time)  […]

求助:Unknown collation ‘gbk_chinese_ci’ in table

将数据库文件打包成zip形式之后,传到linux服务器上 访问页面时,出现这样的问题 Unknown collation ‘gbk_chinese_ci’ in table ‘law_homepageset.frm’ definition – Execute Query False! Select * From law_homepageset limit 0,1; 请问这是怎么了 ?未知校队字符集? 等高手帮忙解决     解决办法: 重新编译一遍mysql,加上参数:–with-extra-charsets=gbk,gb2312,utf8即可

五款常用mysql slow log分析工具的比较

mysql slow log 是用来记录执行时间较长(超过long_query_time秒)的sql的一种日志工具. 启用 slow log 有两种启用方式:1, 在my.cnf 里 通过 log-slow-queries[=file_name] 2, 在mysqld进程启动时,指定–log-slow-queries[=file_name]选项 比较的五款常用工具mysqldumpslow, mysqlsla, myprofi, mysql-explain-slow-log, mysqllogfilter mysqldumpslow, mysql官方提供的慢查询日志分析工具. 输出图表如下: 主要功能是, 统计不同慢sql的 出现次数(Count),  执行最长时间(Time),  累计总耗费时间(Time),  等待锁的时间(Lock),  发送给客户端的行总数(Rows),  扫描的行总数(Rows),  用户以及sql语句本身(抽象了一下格式, 比如 limit 1, 20 用 limit N,N 表示). mysqlsla, hackmysql.com推出的一款日志分析工具(该网站还维护了 mysqlreport, mysqlidxchk 等比较实用的mysql工具) 整体来说, 功能非常强大. 数据报表,非常有利于分析慢查询的原因, 包括执行频率, 数据量, 查询消耗等. 格式说明如下: 总查询次数 (queries total), 去重后的sql数量 (unique) […]