读《msyql完全手册》之二:数据库使用

抱歉,这两天忙着看《并行计算》,终于把今天的作业给完成了,这才有时间来继续总结《mysql完全手册》

接下来的是针对数据库使用者的部分:使用。本书中最重要的部分就是这里了,我们本科学过《数据库》的人,虽然可以完全不看这里直接进入开发环节,但是里面很多细微之处不了解,导致开发过程中朦朦胧胧始终找不到感觉,所以还是建议看看这个部分。我看这部分很爽,因为大部分SQL语句都是学过的,同时又能了解里面细微的地方,大浪淘沙,真是一目十行,勾勾划划就翻过去200页。

这里就简单的勾画出我觉得有意思的地方,每个人的看法不一样,有兴趣你可以自己找本看看

第4章 SQL基础
       这部分基本上没有什么特别重要的,有关SQL的历史,倒是有点感触,其发源于SEQUEL1,是IBM公司一个研究项目System/R的部分,后来作为Oracle商业数据库的查询语言形成事实上的标准。不知道中国什么时候可以出IBM和Oracle这样的IT巨鳄,让华夏子孙扬眉吐气一把
       有两个小地方可以注意:insert一个表时候,可以方便的自己制定插入顺序;distinct可以出去重复的记录

第5章 MySQL数据类型
       强烈推荐这个部分,以前自己是胡乱摸索的,建数据库都是在phpMyAdmin下面跟着感觉走,很多类型都不知道为什么这样。下面的一些是我不太清楚的地方,推荐阅读这个章节
       1,char指定长度,不足部分填充,varchar制定最大长度,不足部分省略掉
       2,unsigned修饰符规定字段只保存正的值,可以增大字段保存的范围
       3,zerofill修饰符规定0可以用于填补输出值
       4,float(5,2)规定显示的值不会超过5位数字,小数点后面带有2位数字
       5,char类型不区分大小写,如果查询需要区分大小西,加入关键字binary
       6,text类型是不区分大小写的blob类型
       7,datetime有分隔符,而timestamp有分隔符,其他的差别不大
       8,enum类型类似于单选,set类型类似于多选

第6章 MySQL运算符
       本章不是很重要,通过phpMyAdmin的查询功能都可以猜个七七八八。比较难理解的是NULL,逻辑比较只要出现NULL,整个逻辑表达式都是NULL,比如select 2=NULL(这里的=就是C里面的==),值就是NULL,除非使用运算符<=>(NULL安全的等于)
       另外一个就是字符串匹配,_匹配一个字符,%匹配1个或多个字符

第7章 MySQL函数
       看到这里才知道MySQL的强大,以前我都是在应用层面上做处理,没想到居然可以在数据层就完成这些处理了。虽然强大,我还是推荐大家在应用层面上做,为什么?提高效率,提高代码的易读性。只有纯数据库使用者,没有别的办法的时候,那么再掌握这些命令吧,其余时候,当手册查找就好了。
       分类如下:数学函数,聚合函数,字符串函数,日期和时间函数,加密函数,控制流函数,格式化函数,类型转化函数,系统信息函数。
       稍微有用的是日期函数,加密函数,系统信息函数。做开发的人可以稍微看看,单纯的数据库使用者最好要认真研读一下。
       我学习MySQL主要是开发,所以就不再自己阐述,只列举一个有意思的地方:最大值和最小值
       select greatest(100,88,157,34),返回最大值157
       select least(-2,5,23),返回最小值-2
       select max(age) from user
       select min(age) from user     返回user表中age最大和最小的

累了,先睡了,明天接着下面的目录来

第8章 使用数据库和表
第9章 使用数据
第10章 连接
第11章 子查询
第12章 事务处理

下面一点一点来笔记:

第8章 使用数据库和表
     创建数据库:create database 数据库名;
     选择数据库:use 数据库名;
     删除数据库:drop database 数据库名;
     创建表:        create table table-name(field-definition,field-definition,……) type=table-type;
         举例如下:
         create table uses(
           id INT(4) NOT NULL AUTO_INCREMENT;
           fname varchar(50) NOT NULL;
           INDEX(fname), PRIMARY KEY(id)
         ) type= InnoDB;
         有意思的地方是index和type:index(索引)可以加快数据库搜索速度,如果某个字段需要经常搜索,可以加上索引,数据库会在空闲时刻索引该字段,方便查询,瑕疵是插入删除的时候占用cpu资源。type是数据库保存的格式,现在常用的是MyISAM(优化压缩比例和速度,平台无关)以及InnoDB(目前最完善的表格式),其余的格式还有ISAM,HEAP,BerkeleyDB以及MERGE等
      修改表:     alert table table-name(action field-definition,action field-definition,……);
           这里面的action可以使Add,Drop, Alter, change中的任一个
      删除表:     drop table 表格名
      获取数据库,表,字段和索引的信息
              show databases;
              show tables;
              describe table-name;

第9章 使用数据
      核心所在,但是又不是特别难,浏览即可
      插入,更新和删除   insert, update, delete,truncate
              需要注意的是delete和truncate:delete删除的是记录,即使是delete * from table-name,原来的表仍然存在,清空之后再次插入仍然会记住autoincrement序列,并且继续编号,而truncate是删除表然后重建,所以清空之后再次才入就从1开始
      检索记录:select
              可以使用别名:select 表名as 别名
              对结果排序:order by
              对结果进行分组:group by, having
             使用变量:@变量名:=值

第10章 连接
      还是有必要研读的,之前用到的表都是很小的表,设计数据库也没有用到过多的连接,如果进行很大的应用设计,就十分有必要了
      交叉连接:类似笛卡尔乘积
      内连接: 左右两个表都只保留符合条件
      左连接:    保留左面表全部,右面列出符合条件
      右连接:    保留右面表全部,左面列出符合条件
      自连接:    自己和自己连接,一般用在目录的分级,通过为表另取一个名字来复制表,然后通过其他连接方式在复制品之间进行连接
     
第11章 子查询
     子查询就是一个select查询是另一个查询的附属。从MySql4.1开始可以潜逃多个查询。虽然很有用,但是很大程度上影响了数据库性能,建议通过mysql变量解决或者交给上层应用逻辑实现,所以这章粗略翻过就好了
      使用方法列举如下:
         在一个where或者having字句中使用
         与比较和逻辑操作符一起使用
         与in成员测试一起使用
         与exists布尔测试一起使用
         在一个from字句中使用
         与连接一起使用
         与update和delete查询一起使用

第12章 事务处理
     事务处理就是将一系列mysql语句整合起来作为一个单独的事务单元处理,并且让这个单元具有自动执行的能力。这是MySQL中的一个新特征,仅仅支持InnoDB和BDB类型的数据库。MyISAM可以通过锁的方式模拟实现。在大的数据库系统中(以及我们学习的数据库教程中),数据库对事务处理的支持要考虑到很多的东西,每个事务必须满足ACID四个属性,即原子性、一致性、孤立性和持久性。 事务可能导致数据库资源的性能降低,因为当多个用户访问同一个数据库时候,需要很大的资源来使得事务相互隔离开。所以,从性能角度入手,MySQL开始并没有好好的支持事务。所以这章也只需要了解到这层即可。操作的回滚还是交给数据库管理员操作吧(之三将会讲到数据库管理员的备份工作)

你可能感兴趣的:(msyql)