数据库 --- 索引、触发器、事务(存储引擎)

发布时间:2020-07-21 02:25:36 作者:凌若然
来源:网络 阅读:1216

一、数据库  -----   按照数据结构来组织、存储和管理数据的仓库

  主要特点:

二、其他相关

1、索引:作用于表中的某列,并将其进行排序,有助于快速地进行查询。

    索引是对数据库表中一个或多个列的值进行排序的数据结构,是用于提高在数据库表中访问数据的速度的数据库对象。其实索引相当于一本书的目录,如果没有索引,要想在数据库中查找某一特定的值就需要遍历整个数据库表,但是有了索引之后就可以在索引当中查找,有助于更快地获取信息;

    索引可分为聚集索引和非聚集索引;对于 聚集索引:是按照数据存放的物理位置为顺序的;而 非聚集索引中,表数据存储顺序与索引顺序无关;一张表上只能创建一个聚集索引,因为真实数据的物理顺序只可能是一种;如果一张表没有聚集索引,那么它被称为“堆集”,这样的表中的数据行没有特定的顺序,所有的新行将被添加到表的末尾位置。

    一条索引记录中包含的基本信息有:键值(定义索引时指定的所有字段的值)+逻辑指针(指向数据页或另一索引页);根据数据库的功能,可以在数据库设计器中创建三种索引

        当现有数据中存在重复的键值时,大多数数据库不允许将新创建的唯一索引与表一起保存。数据库还可能防止添加将在表中创建重复键值的新数据。

使用语句为:

CREATE UNIQUE INDEX 索引名称
ON 表名称 (列名称,如果为多个列用逗号隔开)

    对于一个简单索引的创建,只需将唯一索引中的UNIQUE去掉就可以了;

    数据库表经常有一列或多列组合,其值唯一标识表中的每一行,该列称为表的主键;

    在数据库关系图中为表定义主键将自动创建主键索引,主键索引是唯一索引的特定类型。该索引要求主键中的每个值都唯一。当在查询中使用主键索引时,它还允许对数据的快速访问;

    在聚集索引中,表中行的物理顺序与键值的逻辑(索引)顺序相同。一个表只能包含一个聚集索引如果某索引不是聚集索引,则表中行的物理顺序与键值的逻辑顺序不匹配。与非聚集索引相比,聚集索引通常提供更快的数据访问速度。

    虽然说建立索引的目的是加快对表中记录的查找排序,但是为表设置索引要付出代价的:一是增加了数据库的存储空间,二是在插入和修改数据时要花费较多的时间(因为索引也要随之变动)。

       数据库索引就是为了提高表的搜索效率而对某些字段中的值建立的目录 ;其各有优缺点:


    1)优点:创建索引可以大大提高系统的性能

    

    2)缺点:


    因此,对于索引的使用和建立,应该视情况而定,比如对于那些查询次数很少或者数据值也比较少的列就不必要建立索引,因为不仅不能提高多少查询速度,反而会耗费一定的空间和降低系统的维护程度。

    语法格式如下:

create or replace index index_name
on emp(empno)
tablespace tablespace_name;

2、触发器:是数据库在进行某种操作之前或之后进行的操作。

(1)触发器是一种特殊类型的存储过程,它在指定的表中的数据进行变化的时候自动生效触发器是一个特殊的事务单元可以引用其他表中的列执行特殊的业务规则或数据逻辑关系

        当出现错误时,可以执行rollback transaction操作将整个触发器以及触发它的T-SQL语句一并回滚(不需显示声明begin transaction);唤醒调用触发器以响应INSERT、UPDATE 或 DELETE 语句。触发器可以查询其它表,并可以包含复杂的Transact-SQL语句。将触发器和触发它的语句作为可在触发器内回滚的单个事务对待。如果检测到严重错误(例如,磁盘空间不足),则整个事务即自动回滚,即撤销。

(2)触发器类型【两种】:

       AFTER触发器:  这种触发器将在数据变动(insert、update、delete动作)完成以后才触发。

对变动的数据进行检查,如果发现错误,则拒绝或回滚变动的数据;

       INSTEAD OF触发器:   这种触发器将在数据变动以前被触发,并取代变动数据的操作(insert、update、delete操作),转而去执行触发器定义的操作;

      在建立触发器时,还必须指定触发操作:insert、update、delete操作,至少指定一种,也可指定多种;


 (3) 创建触发器:

CREATE TRIGGER trigger_name//触发器名称
ON { table | view }//在其上执行的表或视图
[ WITH ENCRYPTION ]//可防止触发器作为SQL Server的一部分发布
{
    { 
        { FOR | AFTER | INSTEAD OF } //触发器类别,决定是after还是instead of
        { [ INSERT ][,] [ DELETE ][,] [ UPDATE ] }//指定激发触发器的关键字
            
            [ WITH APPEND ]
            [ NOT FOR REPLICATION ]//表示当复制进程更改触发器所涉及的表时,不应执行该触发器
            AS//触发器要执行的操作
            [ { IF UPDATE ( column )//测试在指定的列上进行的 INSERT 或 UPDATE 操作,不能用于 DELETE 操作。可以指定多列。
            [ { AND | OR } UPDATE ( column ) ]
            [ ...n ]
            | IF ( COLUMNS_UPDATED(){bitwise_operator//位运算符} updated_bitmask )//测试是否插入或更新了提及的列,仅用于UPDATE和INSERT触发器中
            {comparison_operator//比较运算符}column_bitmask [ ...n ]
        } ]
        sql_statement [ ...n ]//SQL Server不支持在触发器中包含所有的create语句、DROP语句等
    }
}

3、事务:是一个或一组逻辑单元,由多个SQL语句组成,可以对数据库上的对象进行操作。

    (1)事务(Database Transaction) ,是指作为单个逻辑工作单元执行的一系列操作,要么完全地执行,要么完全地不执行。 事务处理可以确保除非事务性单元内的所有操作都成功完成,否则不会永久更新面向数据的资源。通过将一组相关操作组合为一个要么全部成功要么全部失败的单元,可以简化错误恢复并使应用程序更加可靠。

    (2)相关属性

       ①原子性(Atomicity):事务中的所有元素作为一个整体提交或回滚,事务的个元素是不可分的,事务是一个完整操作。
         ②一致性(Consistemcy):事物完成时,数据必须是一致的,也就是说,和事物开始之前,数据存储中的数据处于一致状态。
保证数据的无损
         ③隔离性(Isolation):对数据进行修改的多个事务是彼此隔离的。这表明事务必须是
独立的,不应该以任何方式以来于或影响其他事务。
         ④持久性(Durability):事务完成之后,它对于系统的
影响是永久的,该修改即使出现系统故障也将一直保留,真实的修改了数据库。

(3)三种模型

(4)使用事务的语句:

(5)事务的保存点

  1.           SAVE  TRANSACTION  保存点名称 ——自定义保存点的名称和位置

  2.           ROLLBACK  TRANSACTION  保存点名称 ——回滚到自定义的保存点

4、存储引擎

(1)MySQL中的数据用各种不同的技术存储在文件(或者内存)中,这些技术中的每一种技术都使用不同的存储机制、索引技巧、锁定水平并且最终提供广泛的不同的功能和能力,通过选择不同的技术,能够获得额外的速度或者功能,从而改善应用的整体功能。这些不同的技术以及配套的相关功能在MySQL中被称作存储引擎(也称作表类型)

        MySQL默认配置了许多不同的存储引擎,可以预先设置或者在MySQL服务器中启用。可以选择适用于服务器、数据库和表格的存储引擎,以便在选择如何存储你的信息、如何检索这些信息以及需要数据结合什么性能和功能的时候能提供最大的灵活性。

(2)常用的存储引擎:

   I 、  MyISAM

  II、   InnoDB

   III、    NDBCluster

    注:以上三个存储引擎是目前相对主流的存储引擎,还有其他类似如:Memory,Merge,CSV,Archive等存储引擎的使用场景都相对较少。


    查看当前数据库中各表的引擎

SHOW TABLE STATUS FROMDBname

    创建一个新表时,可以通过在CREATE语句中ENGINE或TYPE选项来告诉MySQL要创建什么类型的表:

CREATE TABLE t (i INT) ENGINE = INNODB;
CREATE TABLE t (i INT) TYPE = MEMORY;

如果省略掉ENGINE或TYPE选项,默认的存储引擎被使用。当MySQL被用MySQL配置向导安装在Windows平台上,InnoDB存储引擎替代MyISAM存储引擎作为默认。当不可用的类型被指定时,自动用InnoDB表来替代。

使用ALTERTABLE语句,把表从一个类型转到另一个类型

ALTER TABLE t ENGINE = MYISAM;
ALTER TABLE t TYPE = BDB;

推荐阅读:
  1. Java数据库连接池(经典)
  2. 面向云数据库,超低延迟文件系统PolarFS诞生了

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

数据库 索引 触发器

上一篇:thinkphp基本知识之起步2

下一篇:ssh后门

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》