随笔分类 -  mysql

mysql之索引
摘要:一、索引是什么?比如我们要在字典中找某一字,如何才能快速找到呢?那就是通过字典的目录。对数据库来说,索引的作用就是给‘数据’加目录。 二、索引算法设有N条随机记录,不用索引,平均查找N/2次,那么用了索引之后呢?tree(二叉树)索引 log2Nhash(哈希)索引 1三、优缺点优点:加快了查询的速度(select)缺点:降低了增删改的速度(update/delete/insert) 增加了表的文件大小(索引文件甚至可能比数据文件还大)四、索引的使用原则不过得使用索引;索引条件列(where后面最频繁的条件比较适宜索引)索引散列值,过于集中的值不要索引例如:给性别列 ’男‘,’女‘... 阅读全文

posted @ 2012-07-18 07:57 郑志伟 阅读(887) 评论(0) 推荐(0)

mysql之数据库备份与恢复
摘要:备份与恢复系统运行中,增量备份与整体备份。例如:每周日整体备份一次,周一到周六只备份当天。如果周五的数据出了问题,可以用周日的整体+周一、周二、周三、周四来恢复。备份的工具:有第三方的收费备份工具,目前我们所学的是系统自带的备份功能,mysqldump。mysqldump 可以导出库、表。备份:例1:导出muagua库下面的goods表mysqldump -u用户名 -p密码 库名 表1 表2 表3 > 地址/备份文件名称导出的是建表语句及insert语句。例2:导出mugua库下面的所有表mysqldump -u用户名 -p密码 库名 > 地址/备份文件名称例3:如何以库为单位导 阅读全文

posted @ 2012-07-11 22:54 郑志伟 阅读(1289) 评论(0) 推荐(0)

mysql之存储引擎
摘要:1.存储引擎概念打比方说:一部电影有mp4,wmv,avi,flv...等格式。同样的一部电影在硬盘上有不同的存储格式,所占的空间与清晰程度也各不一样。那么我们表里的数据存储在硬盘上,是如何存储的呢?存储的方式也有很多种。对于用户来说,同样一张表的数据,无论用什么引擎来存储,用户看到的数据都是一样的,但对于服务器来说是有区别的。数据库对同样的数据,有着不同的存储方式和管理方式,在mysql中,称为存储引擎。2.存储引擎与其特点特点 Myisam InnoDB批量插入的速度 高 低事务安全 不支持 支持... 阅读全文

posted @ 2012-07-11 20:47 郑志伟 阅读(2576) 评论(0) 推荐(1)

mysql之触发器before和after的区别
摘要:我们先做个测试:接上篇日志建的商品表g和订单表o和触发器假设:假设商品表有商品1,数量是10;我们往订单表插入一条记录:insert into o(gid,much) values(1,20);会发现商品1的数量变为-10了。这就是问题的所在,因为我们之前创建的触发器是after,也就是说触发的语句是在插入订单记录之后才执行的,这样我们就无法判断新插入订单的购买数量。先讲一下after和before的区别:after是先完成数据的增删改,再触发,触发的语句晚于监视的增删改操作,无法影响前面的增删改动作;也就是说先插入订单记录,再更新商品的数量;before是先完成触发,再增删改,触发的语句先于 阅读全文

posted @ 2012-07-05 23:16 郑志伟 阅读(26381) 评论(5) 推荐(10)

mysql之触发器trigger
摘要:触发器(trigger):监视某种情况,并触发某种操作。触发器创建语法四要素:1.监视地点(table) 2.监视事件(insert/update/delete) 3.触发时间(after/before) 4.触发事件(insert/update/delete)语法:create trigger triggerNameafter/before insert/update/delete on 表名for each row #这句话在mysql是固定的beginsql语句;end;注:各自颜色对应上面的四要素。首先我们来创建两张表:#商品表create table g( id int prima. 阅读全文

posted @ 2012-07-04 23:05 郑志伟 阅读(152542) 评论(27) 推荐(44)

mysql之字符集与校对集
摘要:一、字符集1.mysql的字符集设置非常灵活可以设置服务器默认字符集;数据库默认字符集;表默认字符集;列字符集;如果某一级别没有指定字符集,则继承上一级。查看所有字符集语句:show character set;2.以表声明为utf-8为例,最终存储在表中的数据为utf-8 ①我们要告诉服务器,我给你发送的数据是什么编码?character_set_client ②告诉字符集转换器,转换成什么编码?character_set_connection ③查询的结果用什么编码?character_set_results 如果以上三者都为字符集N,可简写为set names N;3.什么情况下会出现乱 阅读全文

posted @ 2012-06-25 00:54 郑志伟 阅读(3987) 评论(0) 推荐(2)

mysql之视图
摘要:1.什么是视图?视图是由查询结果形成的一张虚拟表。2.什么时候要用到视图?如果某个查询结果出现的非常频繁,也就是,要经常拿这个查询结果来做子查询3.视图的创建语法:createview视图名asselect 语句;4.使用视图有什么好处呢?①简化查询语句 比如:有一张商品表,我们经常要查每个栏目下商品的平均价格 select cat_id,avg(shop_price) from goods gropy by cat_id; 这时候我们就可以创建一张视图: create view avgPrice asselect cat_id,avg(shop_price) from goods gropy 阅读全文

posted @ 2012-06-23 23:04 郑志伟 阅读(29789) 评论(1) 推荐(5)

mysql之列的增删改
摘要:我们先来看创建一张表的语法create table tableName( 列名 列类型 [列属性] [默认值], -->把这整行看成是 列声明的一条语句 ......);1.增加列语法:alter tableNameadd列声明新增加的列默认放到表中的最后一列,如果要让新增的列放到具体位置可以这样:alter tableName add列声明after已有列名如果要让新增的列排到最前面,可以这样:alter tableName add列声明first2.修改列语法:alter talbeNamechange被改变的列列声明3.删除列语法:alter tableNamedrop列名 阅读全文

posted @ 2012-06-23 23:03 郑志伟 阅读(763) 评论(0) 推荐(1)

mysql之union
摘要:今天来写写union的用法及一些需要注意的。union:联合的意思,即把两次或多次查询结果合并起来。要求:两次查询的列数必须一致推荐:列的类型可以不一样,但推荐查询的每一列,想对应的类型以一样可以来自多张表的数据:多次sql语句取出的列名可以不一致,此时以第一个sql语句的列名为准。如果不同的语句中取出的行,有完全相同(这里表示的是每个列的值都相同),那么union会将相同的行合并,最终只保留一行。也可以这样理解,union会去掉重复的行。如果不想去掉重复的行,可以使用union all。如果子句中有order by,limit,需用括号()包起来。推荐放到所有子句之后,即对最终合并的结果来排 阅读全文

posted @ 2012-06-23 23:02 郑志伟 阅读(66359) 评论(4) 推荐(3)

mysql之左连接与右连接
摘要:左连接:select 列1,列2,列N fromtableAleft jointableBon tableA.列 = tableB.列(正常是一个外键列) [此处表连接成一张大表,完全当成一张普通表看]where,having,group by ...照常写。右连接:select 列1,列2,列N fromtableArightjointableBon tableA.列 = tableB.列(正常是一个外键列)[此处表连接成一张大表,完全当成一张普通表看]where,having,group by ...照常写。内连接:select 列1,列2,列N fromtableAinnerjointa 阅读全文

posted @ 2012-06-23 23:02 郑志伟 阅读(44972) 评论(0) 推荐(0)

mysql之select+五种子句的理解
摘要:select 可以包含很复杂,很丰富的逻辑,最能考验一个人的逻辑思维能力和sql语句的掌握程度,我是这么认为,以前的很多次面试几乎都死在它手上,所以才有了今天的这篇日志,下定决心把它学好。where 表达式我们要这样理解,表达式放在表中的哪一行成立,哪一行就取出来=,>,<,>=,<=,!=/<>,and,or,between and,in,notgroup by分组,一般和统计函数配合使用才有意义max,min,avg,count,sumhaving 表达式数据在表中,表在硬盘或内存以文件形式存在和where区别:where 是针对表文件发挥作用的。查询出 阅读全文

posted @ 2012-06-22 22:41 郑志伟 阅读(1813) 评论(0) 推荐(1)

mysql学习笔记
摘要:今天开始学习mysql数据库了,也是第一次在这里写技术笔记,相信好记忆不如烂笔头,就以此来见证自己的成长吧!首先安装mysql服务器的过程这里就不啰嗦啦,相信大家都懂的,直接进入主题吧,欢迎那些也是刚开始学习mysql数据库的来一起探讨,是高手的话就发表下意见咯,小弟在这里虚心请教!一、入门语句:首先打开运行对话框-->输入cmd-->回车1.连接到mysql服务器:mysql -h localhost -u 用户名(通常都是root) -p 密码;如果不写 -h localhost,默认是连接到本地的mysql服务器,比如在我的电脑:mysql -uroot-pmysql;2.查 阅读全文

posted @ 2012-06-21 22:27 郑志伟 阅读(853) 评论(1) 推荐(1)

导航