zoukankan      html  css  js  c++  java
  • 读《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开始并没有好好的支持事务。所以这章也只需要了解到这层即可。操作的回滚还是交给数据库管理员操作吧(之三将会讲到数据库管理员的备份工作)

  • 相关阅读:
    hdoj 5461 Largest Point
    poj 2186 Popular Cows【tarjan求scc个数&&缩点】【求一个图中可以到达其余所有任意点的点的个数】
    [LC] 64. Minimum Path Sum
    [LC] 122. Best Time to Buy and Sell Stock II
    [LC] 121. Best Time to Buy and Sell Stock
    [LC] 91. Decode Ways
    [LC] 62. Unique Paths
    [LC] 674. Longest Continuous Increasing Subsequence
    [LC] 300. Longest Increasing Subsequence
    [LC] 746. Min Cost Climbing Stairs
  • 原文地址:https://www.cnblogs.com/liuchen/p/742259.html
Copyright © 2011-2022 走看看