zoukankan      html  css  js  c++  java
  • 数据库SQL特点数据查询,数据操纵,数据定义,数据控制,建立索引, 事务acid,数据库隔离级别

    数据查询(DQL):select

    数据定义(DDL):create,drop,alter

    数据操纵(DML):insert,update,delete

    数据控制(DCL):grant,revoke

    1)建立索引(索引是B+树实现的)(提高查询效率,加快表与表之间的连接,建立需要存储空间)

    普通索引

    create index stusex on student(ssex);
    create index stusexandname on student(ssex,sname);//多列的

    唯一索引

    create unique index stusno on student(sno);

    删除索引

    drop index stusno on student;

    显示索引

    show index from student;

    2)创建表,修改表

    create table xxx
    (xno int(5) primary key,
    xname char(20) not null unique,
    xscore int(5) default 6);
    alter table xxx
    add xsex char(66);

     事务acid

    • 原子性(Atomicity):事务中包含的操作集合,要么全部操作执行完成,要么全部都不执行。即当事务执行过程中,发生了某些异常情况,如系统崩溃、执行出错,则需要对已执行的操作进行回滚,清除所有执行痕迹。
    • 一致性(Consistency):事务执行前和事务执行后,数据库的完整性约束不被破坏。即事务的执行是从一个有效状态转移到另一个有效状态。
    • 隔离性(Isolation):多个事务并发执行时,彼此之间不应该存在相互影响。隔离程度不是绝对的,每个数据库都提供有自己的隔离级别,每个数据库的默认隔离级别也不尽相同。
    • 持久性(Durability):事务正常执行完毕后,对数据库的修改是永久性的。即事务的修改操作已经记录到了存储介质中。
    • 隔离级别:未提交读、提交读、可重复读、可串行化

    • 未提交读(Read Uncommitted):一个事务过程中可以读取到其他事务对数据的未提交修改。即事务的修改阶段未加排他锁,对其他事务可见。例如事务 T1可能读取到只是事务 T2 中某一步的修改状态,即存在脏读的现象。

    脏读指的是,事务读取到的数据可能是不正确、不合理或者处于非法状态的数据,例如在事务T1读取后,事务T2可能又对数据做了修改,或者事务T2中某些操作违反了一致性约束,作了回滚操作,该情况下事务T1读取到的数据称之为脏数据,该行为称之为脏读。

    • 提交读(Read Committed):一个事务过程中只能读取到其他事务对数据的提交后修改。即事务的修改阶段加了排它锁,直到事务结束才释放,执行读命令那一刻加了共享锁,读完即释放,以此维持事务修改阶段对其他事务的不可见。例如事务T1读取到的只能是事务T2提交完成后的状态。该隔离级别避免了脏读现象,但正是由于事务T1可能读取到的是事务T2修改完成后的数据,以致出现了不可重复读现象。

    不可重复读指的是,对于同一个事务的前后两次读取操作,读取到的内容不同。例如在事务T1读取操作后,事务T2可能对数据做了修改,事务T2修改完成提交后,事务T1又做了读取操作,因为内容已被修改,导致读取到的内容与上一次不同,即存在不可重复读现象。

    • 可重复读(Repeatable Reads):一个事务过程中不允许其他事务对数据进行修改。即事务的读取过程加了共享锁,事务的修改过程加了排它锁,并一直维持锁定状态直到事务结束。因为事务的读取或修改都需要维持整个阶段的锁定状态,所以避免了脏读和不可重复读现象。但是因为只对现有的记录上进行了锁定,并未维持间隙锁/范围锁,导致某些数据记录的插入未受阻拦,即存在幻读现象。

    幻读指的是,事务中前后相同的查询语句,返回的结果集不同。例如在事务T1查询表记录后,事务T2向表中增加了一条记录,当事务T1再次执行相同的查询时,返回的结果集可能不同,即存在幻读现象。

    • 可串行化(Serializable):一个事务过程中不允许其他事务对指定范围数据进行修改。即事务过程中若指定了操作集合的范围,则在可重复读的锁基础上增加了对操作集合的范围锁,通过增加范围锁避免了幻读现象。

    参考:https://www.jianshu.com/p/f3605aacf7cf

  • 相关阅读:
    6-Python爬虫-分布式爬虫/Redis
    ES 查询时 排序报错(fielddata is disabled on text fileds by default ... )解决方法
    Intellij Idea webstorm 激活
    Intellij Idea 配置jdk
    java 获取(格式化)日期格式
    js 跳转 XSS漏洞 预防
    CSS去掉背景颜色
    js对象无法当成参数传递 解决方法
    Elasticsearch java api
    java多条件查询SQL语句拼接的小技巧
  • 原文地址:https://www.cnblogs.com/lhh666/p/11553054.html
Copyright © 2011-2022 走看看