Transaction
Transaction
数据库事务(Database Transaction)是指作为单个逻辑工作单元执行的一系列操作,要么完整地执行,要么完全地不执行。正常情况下,这些操作将顺利进行,最终操作成功。但是,如果在这一系列过程中任何一个环节除了差错,数据库中所有信息都必须保持第一步操作前的状态不变,否则,数据库的信息将会一片混乱而不可预测。
事务并发的场景一般发生在多用户访问同一数据库时。
事务的基本概念概念
事务是一种机制、一个操作序列,包含了一组数据库操作命令,并且把所有的命令作为一个整体一起向系统提交或撤销操作请求,即这一组数据库命令要么都执行,要么都不执行。
事务是一个不可分割的工作逻辑单元,在数据库系统上执行并发操作时,事务是最小的控制单元
事务适用于多用户同时操作的数据库系统的场景,如银行、保险公司及证券交易系统等等,通过事务的整体性以保证数据的一致性,是保证一组操作的平稳性和可预测性的技术,和并发编程中的进程同步概念类似
事务特性事务具有四个特性(ACID):原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Dur ...
Index
Index
索引建立在表上。
MySQL索引什么是索引
索引是MySQL中用于高效获取数据的数据结构。通俗的说,数据库索引好比是一本书的目录,可以直接根据页码找到对应的内容,目的就是为了加快数据库的查询速度
索引是对数据库表中一列或多列的值进行排序的一种结构,使用索引可快速访问数据库表中的特定信息
一种能帮助mysql提高了查询效率的数据结构:索引数据结构
索引的原理
一句话总结:以空间换时间
未添加索引的数据库,在查询时按全文进行搜索,也就是说有多少数据就进行多少次查询,然后找到相应的数据就把它们放到结果集中,直到全文扫描完毕,这样的效率很低,也体现了在大数据中索引的必要性
索引本身也很大而且也有持久化存储的需求,所以其存储在硬盘文件中,一般是单独的索引文件或和数据一起存储在数据文件
索引的分类
主键索引:设定主键后,数据库自动建立索引,InnoDB中为聚簇索引,主键索引列值不能为空(Null)
普通索引:又称单值索引,即一个索引只包含单个列,一个表可以有多个单列索引
唯一索引:指定某一列进行索引,列中的值必须唯一,允许有空值(Null),但只允许有一个空值(Null)
复合索 ...
Database Designment
Database Designment数据库设计是指对于一个给定的应用场景,构造(设计)优化的数据库逻辑模式和物理结构,并据此建立数据库,满足各种用户的应用需求。一般的设计步骤为:
需求分析
概念结构设计
逻辑结构设计
物理结构设计
数据库实施
数据库运行维护
需求分析通过详细调查现实世界要处理的对象(组织、部门、企业等),充分了解原系统(手工系统或计算机系统)工作概况,明确用户的各种需求。其任务是由数据库设计人员和用户双方共同收集信息需求和处理需求;通过仔细分析;将这些需求按一定的规范要求以用户和设计人员都能理解接受的文档形式确定下来。
概念结构设计通过对用户需求进行综合、归纳与抽象,形成一个独立于具体数据库管理系统的概念模型。最常用的概念模型即E-R模型。E-R模型将现实世界中的信息用实体、属性和实体之间的联系表示。一些E-R图的要点如下:
矩形表示实体、椭圆表示属性、零星表示关系
关系是实体间的关系,有三种:1对1、1对n、m对n
属性必须为不可再分的项,不能包含其他属性,不能与其他实体具有关系
逻辑结构设计将概念结构转换成特定DBMS所支持的数据模型的过程。MySQ ...
Stored Procedure & Trigger
Stored Procedure & Trigger存储过程存储过程(Stored Procedure)是一种在数据库中存储复杂程序,以便外部程序调用的一种数据库对象。存储过程是为了完成特定功能的SQL语句集,经编译创建并保存在数据库中,用户可通过指定存储过程的名字并给定参数(需要时)来调用执行。存储过程思想上很简单,就是数据库 SQL 语言层面的代码封装与重用。
优点
封装编译的sql语句,能隐藏复杂的商业逻辑
可以被外部程序直接调用,接受参数并返回值
缺点
存储过程不可被select指令运行
存储过程往往定制化于特定的数据库上,对编程语言的接口没有达成同意规范。当切换到其他厂商的数据库系统时,一般需要重写原有的存储过程
存储过程的性能调校与撰写,受限于各种数据库系统
目前业界几乎不用存储过程,存储过程的功能完全可由编程语言代替
触发器触发器是MySQL提供给程序员和数据分析员来保证数据完整性的一种方法,它是与表事件相关的特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件来触发,比如当对一个表进行操作(insert,delete, update)时就会激活 ...
Basic SQL
Basic SQL数据库语言可分为两个部分,DDL和DML。
DDL(Data Definitoin Language):描述数据库中要存储的现实世界实体(操作表),操作数据库的结构等
DML(Data Manipulation Language):操作数据库存储的对象或记录
DQL(Data Query Language):查询数据库中记录
SQL DDL:数据定义数据库命令
查询数据库
1234--显示当前mysql服务器中所有数据库SHOW DATABASES;--显示创建某一数据库时的语句SHOW CREATE DATABASE 数据库名称;
创建新数据库
12345--字符集为utf-8(默认就是),校验规则utf8_general_ci(不区分大小写,默认就是)--创建数据库名称是使用反引号规避关键字--数据库的字符集和校对规则会成为该数据库下表的默认规则--utf8_bin区分大小写,大小写指的是数据库中记录的字符大小写 CREATE DATABASE 数据库名称 CHARACTER SET 字符集 COLLATE 校验规则;
删除数据库
1DROP DA ...