数据库基础知识及概念

数据库结构化的目的:

  • 减少数据冗余
  • 尽量避免数据维护中出现的更新,插入和删除异常。如插入异常如果表中的某一个实体随着另一个实体而存在。更新时更改表中某一个实体的单独属性时,需要对多行进行更改。删除表中某一个实体实有可能导致另一个实体的消失。
  • 节约数据的存储空间。
  • 提高查询效率。

数据库三大范式:

  • 数据库第一范式:是指数据库表中所有字段都是具有单一属性,且单一属性的列是由基本的数据类型(int varchar char等)构成的,设计出来的表都是简单的二维表。
  • 数据库第二范式:是指一张表中只有一个业务主键,即符合第二范式要求的表不能存在非业务主键列存在只对部分主键依赖的关系。
  • 数据库第三范式:是指每一个非主属性既不能部分依赖也不传递依赖于业务主键,即在第二范式的基础上消除了非主键列的传递依赖,每一列非业务主键数据直接和主键相关而不是间接相关。
  • 反范式化设计:反范式化是针对范式化而言的,所谓的 反范式化为了提高性能和读写能力而考虑适当的违反数据库设计的要求进行的违反,允许存在少量的数据冗余,反范式是一种典型的空间换时间。

范式化设计的优点:

  • 可以尽量的减少数据的较少数据冗余。
  • 一般而言当操作数据修改时(insert update ,delete)范式速度比反范式化快。
  • 范式化设计的数据量通常要比反范式化设计要更小

范式化设计缺点

查询时需要对多张表进行关联,从而影响查询性能和多余的cpu消耗。

反范式化设计

优点:

  • 可以有效减少表之间的关联。
  • 更好的进行索引优化。

缺点

  • 存在数据冗余及数据异常。
  • 当对数据修改时需要更高的成本。

脏读,幻读,不可重复读的概念

  • 脏读:是指一个事务可以读取到另一个事务未提交的数据就叫脏读。
  • 幻读:是指对一个事务读取两次,两次得到不一样的记录数。
  • 不可重复读:一个事务读取同一条记录2次,得到的结果不一致。

事务:

  1. 事务是数据库系统区别于其他文件系统的重要特征之一。
  2. 事务是一组具有原子性的sql语句,或是一个独立的工作单元。

数据库的事务的特征:

  1. 原子性:原子性是指一个事务必须是为一个不可分割的最小的工作单位。整个事务所有操作要么全部提交成功,要么全部失败,不可能只执行部分操作。失败就回滚。
  2. 一致性:是指事务将数据库对数据库中数据从一种一致性状态转换到另一种一致性状态,在事务开始之前到事务结束,数据库中的数据的完整性没有破坏。
  3. 隔离性:要求一个事务对数据库中的数据修改,在未提交完成前其他事务是不可见的。
  4. 持久性:事务提交后,对于系统的影响是永久的。

事务隔离级别(低------->高的排序):

  1. 未提交读(Read Uncommitted):未提交读是一种最低的事务隔离级别,几乎什么都不操作,一个事务可以读到另一个事务未提交的结果,可能产生各种并发事务问题。
  2. 提交读(Read committed):是指在事务提交后,其更新的结果才能被其他事务可见。
  3. 可重复读(Repeated Read) : 在一个事务中,对于同一分数据读取结果数据的读取结果是相同的,无论是否有有其他事务对这份数进行操作,以及这个事务是否提交,可以解决脏读和幻读。(Mysql默认的隔离级别)
  4. 可串行化(Serializable): 事务串行化执行,隔离级别最高,牺牲了系统的并发性,有效的解决并发事务的所有问题。

mysql 有四级事务隔离级别 每个级别都有字符或数字编号
在这里插入图片描述
查看全局或会话中的事务隔离级别:
查看:SELECT @@global.tx_isolation global, @@tx_isolation tx;

在这里插入图片描述
手动设置事务隔离级别:


SET @@gloabl.tx_isolation = 0;
SET @@gloabl.tx_isolation = 'READ-UNCOMMITTED';

SET @@gloabl.tx_isolation = 1;
SET @@gloabl.tx_isolation = 'READ-COMMITTED';

SET @@gloabl.tx_isolation = 2;
SET @@gloabl.tx_isolation = 'REPEATABLE-READ';

SET @@gloabl.tx_isolation = 3;
SET @@gloabl.tx_isolation = 'SERIALIZABLE';

DQL DML DPL DCL DDL概念:

  • 数据查询语言 DQL(data query Language) :数据检索语句,用于从表中获取数据。通常最常用的为保留字SELECT,并且常与FROM子句、WHERE子句组成查询SQL查询语句。用法: select clounmName from <tableName/viewName> where conditions
  • 数据操纵语言(DML:Data Manipulation Language): 主要用于对数据库的数据进行一些操作的,如:insert into ,update delete
    用法:
    insert into tableName (colunmName1,colunmName2,colunmName3) values(value1,value2,value3);
    update tableName set colunmName = value where conditons 一定要加where
    delete from tableNmae where conditons 必须加where,不然准备删库跑路吧。
  • 事务处理语言(DPL):事务处理语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION、COMMIT和ROLLBACK。
  • 事务处理语言(DPL):事务处理语句能确保被DML语句影响的表的所有行及时得以更新。TPL语句包括BEGIN TRANSACTION、COMMIT和ROLLBACK。
  • 数据定义语言(DDL)用于在数据库中创建新表或删除表,以及为表加入索引等。如: create tableName (colunm1…); create database databaseName;
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值