zoukankan      html  css  js  c++  java
  • [JavaEE] 数据库基础

    一.数据库的目的:

      为了更好的让内存中的数据被保存,一个建立在硬盘的数据集合就被建立起来了:数据库

      数据库的类型有:

              网状结构

              层次结构

              关系结构

              非关系结构

      本文主要记载笔者对关系结构型数据库:MySQL的认知

    二.操作语句:

      1.DQL: 数据库的数据查询语言: select , where , group by

      2.DDL: 数据库定义语言: 如 create , drop , alter

      3.DML: 数据库的数据操作语言: 如 delete ,  update , insert

      4.TPL: 数据库的事务操作语言 如:commit , rollback , savepoint等

      5.DCL: 数据库控制语言,主要用于数据库用户的创建,权力的给予等 如: grant revoke

      ps: 笔者认为,数据库主要难度在查询,创建,  查询难度在于多表多要求查询,创建难度在于如何创建一个好的 易查询易维护的表

    三.数据库的创建:

      1.库创建语法:

    create database db_name ;

      2.表创建语法:

    create table tb_name (
      id int primary key auto_increment,
      name varchar(11),
      bornDate date not null      
    );

      笔者认为,一个优秀的表应最少满足第三范式,且索引主键外键的建立要有逻辑和条理性,能便于日后的使用以及使用时尽量减少内存对硬盘IO的影响和操作时间

    四:数据的操作:

      1.增删改

      

    insert into tb_name (column1,column2,column3) values (values1,values2,default);
    delete from tb_name where column1 = values1;
    update tb_name set column1 = values1 where column2 = values2;

       相对而言增删改比较的简单,这里面唯一可能说难的就是where 后面的条件,但这个就是DQL的语句了 也就是查询语句

      2.查询

      

    select * from tb_name;

      这只是个最最最简单的例子,笔者将在有时间的时候对此进行补充,因为笔者也不太行,笔者老菜鸡了,这篇文章只是对笔者自己的学习进行一个框架性的梳理

    四:事务:

      1.ACID

        acid 即 原子性,一致性,隔离性,持久性

        原子性: 一个事务要不然全部成功要不然全部失败

        一致性: 数据库的数据在事务的前后应保持数据的一致,不会无逻辑的增添不会无逻辑的减少

        隔离性: 一个事务不应对另一个正在进行的事务进行影响

        持久性: 事务对数据库的影响是永久的

      2.事务的使用语句:

        

    start transaction # setAutoCommit = 0
    #
    #数据操作语言 如:DML
    #
    commit; #如果成功
    rollback; #如果失败, 还可以使用savePoint 标记一个地方,然后rollbackto 指定的地方

    五:数据库的其他

      MySQL 索引分类:      索引有一个最左匹配特性,所以我认为需要把特征性最大的数据往左边放,能减少匹配的时间和资源的使用

      数据结构:  

          B+树索引     innodb使用

          Hash索引

          Full-Text全文索引

          R-Tree索引

      物理储存:

          聚集索引   innodb使用

          非聚集索引/辅助索引

      逻辑角度:

          主键

          普通

          多列(复合,联合)

          唯一或非唯一    

          空间 : 4种 geometry , point , linestring , polygon

      innodb 在索引方面与myisam有巨大的区别,不过笔者认为使用B+树和聚集性都是innodb的优势所在

      事务并发操作的四种错误:

        更新丢失: A和B同时对一个数据进行更新,但AB都不知道互相的存在 一个劲的做自己的事情,但是总会有一个更新后的数据被覆盖,这就是丢失了一个更新数据

        脏读 : A读取了B更新后的数据,但是A读取完后B回滚了操作,这样就称为A读取了一个脏数据

        不可重复读 :  A对一个数据进行多次读取的时候,B跑进来对这个数据自己进行了更新也没有通知A,这个时候A读取的数据就会有一个不一致的情况出现

        幻读  : A对同一个表进行多行的读取的时候,B来对这些数据进行了一些插入或者删除操作,这个时候A就会在下一次再读取的时候发现多了或少了些东西,就很魔幻,就对自己产生了疑问 嗯? 我也妹去云南吃蘑菇阿

       事务隔离级别:  从低到高

        read uncommited  啥也不是,乱来都,你读你的 我整我的,你读就读了 我写就写了,错了就错了 rm-rf 快跑

        read commited  能解决脏读 你写完了我再来

        repeatable read  能解决重复读  你整个事务结束了我再来

        serializable       能解决幻读  并行变串行, 好嘛 原来还可以大家一起走,只不过窄路不太行,这下好了 全是窄路,就硬挤,就只能让硬件整上去让事务走的速度变快

  • 相关阅读:
    Nodejs 进阶:Express 常用中间件 body-parser 实现解析
    Nodejs进阶:express+session实现简易身份认证
    Node 进阶:express 默认日志组件 morgan 从入门使用到源码剖析
    Nodejs进阶:如何玩转子进程(child_process)
    express+session实现简易身份认证
    你真的了解UIViewController生命周期吗?
    你真的了解UIGestureRecognizer吗?
    你真的了解UIEvent、UITouch吗?
    你真的了解UIScrollView吗?
    你真的了解UITextView吗?
  • 原文地址:https://www.cnblogs.com/Lzzycola/p/13545794.html
Copyright © 2011-2022 走看看