数据库基础知识及概念
数据库结构化的目的:
- 减少数据冗余
- 尽量避免数据维护中出现的更新,插入和删除异常。如插入异常如果表中的某一个实体随着另一个实体而存在。更新时更改表中某一个实体的单独属性时,需要对多行进行更改。删除表中某一个实体实有可能导致另一个实体的消失。
- 节约数据的存储空间。
- 提高查询效率。
数据库三大范式:
- 数据库第一范式:是指数据库表中所有字段都是具有单一属性,且单一属性的列是由基本的数据类型(int varchar char等)构成的,设计出来的表都是简单的二维表。
- 数据库第二范式:是指一张表中只有一个业务主键,即符合第二范式要求的表不能存在非业务主键列存在只对部分主键依赖的关系。
- 数据库第三范式:是指每一个非主属性既不能部分依赖也不传递依赖于业务主键,即在第二范式的基础上消除了非主键列的传递依赖,每一列非业务主键数据直接和主键相关而不是间接相关。
- 反范式化设计:反范式化是针对范式化而言的,所谓的 反范式化为了提高性能和读写能力而考虑适当的违反数据库设计的要求进行的违反,允许存在少量的数据冗余,反范式是一种典型的空间换时间。
范式化设计的优点:
- 可以尽量的减少数据的较少数据冗余。
- 一般而言当操作数据修改时(insert update ,delete)范式速度比反范式化快。
- 范式化设计的数据量通常要比反范式化设计要更小
范式化设计缺点
查询时需要对多张表进行关联,从而影响查询性能和多余的cpu消耗。
反范式化设计
优点:
- 可以有效减少表之间的关联。
- 更好的进行索引优化。
缺点:
- 存在数据冗余及数据异常。
- 当对数据修改时需要更高的成本。
脏读,幻读,不可重复读的概念
- 脏读:是指一个事务可以读取到另一个事务未提交的数据就叫脏读。
- 幻读:是指对一个事务读取两次,两次得到不一样的记录数。
- 不可重复读:一个事务读取同一条记录2次,得到的结果不一致。
事务:
- 事务是数据库系统区别于其他文件系统的重要特征之一。
- 事务是一组具有原子性的sql语句,或是一个独立的工作单元。
数据库的事务的特征:
- 原子性:原子性是指一个事务必须是为一个不可分割的最小的工作单位。整个事务所有操作要么全部提交成功,要么全部失败,不可能只执行部分操作。失败就回滚。
- 一致性:是指事务将数据库对数据库中数据从一种一致性状态转换到另一种一致性状态,在事务开始之前到事务结束,数据库中的数据的完整性没有破坏。
- 隔离性:要求一个事务对数据库中的数据修改,在未提交完成前其他事务是不可见的。
- 持久性:事务提交后,对于系统的影响是永久的。
事务隔离级别(低------->高的排序):
- 未提交读(Read Uncommitted):未提交读是一种最低的事务隔离级别,几乎什么都不操作,一个事务可以读到另一个事务未提交的结果,可能产生各种并发事务问题。
- 提交读(Read committed):是指在事务提交后,其更新的结果才能被其他事务可见。
- 可重复读(Repeated Read) : 在一个事务中,对于同一分数据读取结果数据的读取结果是相同的,无论是否有有其他事务对这份数进行操作,以及这个事务是否提交,可以解决脏读和幻读。(Mysql默认的隔离级别)
- 可串行化(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;
数据库基础知识及概念相关推荐
- 数据库基础知识:概念篇
1. 数据库,服务器,表关系 什么是数据库:数据库是数据的集合,具有统一的结构形式并存放于统一的存储介质内,是多种应用数据的集成,并可被各个应用程序所共享. 所谓安装数据库服务器,只不过是在机器上安装 ...
- 数据库基础知识(概念型)
第一章 概念 1.数据:描述事物的符号记录称为数据.特点:数据和关于数据的解释不可分. 2.数据库:长期存储在计算机内.有组织.可共享的大量的数据的集合.数据库中的数据按照一定的数据模型组织.描述和 ...
- 计算机数据库管理基本知识,2015年计算机四级考试《数据库技术》基础知识:概念篇...
2015年计算机四级考试<数据库技术>基础知识:概念篇 信息与数据 1. 信息.物质.能量是组成客观世界并促进社会发展的三大基本要素; 2. 信息(Information)--是客观世界事 ...
- numeric比较大小 数据库_数据库基础知识个人整理版-强烈推荐
<数据库基础知识个人整理版-强烈推荐>由会员分享,可在线阅读,更多相关<数据库基础知识个人整理版-强烈推荐(20页珍藏版)>请在人人文库网上搜索. 1.数据库知识要点总结第一章 ...
- 一幅长文细学GaussDB(二)——数据库基础知识
文章目录 2 数据库基础知识 2.1 数据库管理简介 数据库管理 数据库管理工作范围 对象管理 制定数据库对象命名规范 备份和恢复 灾难恢复 备份方式 数据库安装 数据库卸载 数据库迁移 数据库扩容 ...
- 软考 程序员教程-第三章 数据库基础知识
软考 程序员教程-第三章 数据库基础知识 第三章 数据库基础知识 3.1 基本概念 数据库系统(DataBase System,DBS)由数据库(DataBase,DB).硬件.软件和人员4大部分组成 ...
- oracle数据库sql基础知识,Oracle数据库基础知识为内部培训资料.doc
PAGE 1 课程 IL001100 ORACLE数据库基础知识 ISSUE1.0 开心Java整理 IL001100 ORACLE数据库基础知识 ISSUE1.0 目录 PAGE 1 PAGE 45 ...
- 清华计算机文化基础网站,数据库基础知识清华大学计算机文化基础
<数据库基础知识清华大学计算机文化基础>由会员分享,可在线阅读,更多相关<数据库基础知识清华大学计算机文化基础(32页珍藏版)>请在人人文库网上搜索. 1.第三部分数据库基础( ...
- Mysql数据库基础知识总复习
前言 小亭子正在努力的学习编程,接下来将开启javaEE的学习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ ...
最新文章
- 彻底卸载 RAD Studio 2009/2010/XE+ 的步骤
- 比特币耶稣Roger Ver赠送中国著名经济学家巴曙松1枚比特币现金BCH
- (转)rlwrap真是一个好东西
- c++ string 堆还是栈_5个刁钻的String面试题解析
- 超详细百家大厂面试资料,免费送!
- bitset中_Find_first()与_Find_next()函数
- JVM可创建的最大线程数
- SpringBoot+Redis(实现处理热点数据)
- 一键部署Zabbix客户端
- HTML 标签的 enctype 属性
- [SAE]免费服务器:新浪云服务器SAE的注册与使用
- 用python画卡通图_需要用Python和OpenCV制作一张卡通漫画版的图片
- Quartz 2.4.0 源码解析
- MATLAB强化学习实战(七) 在Simulink中训练DDPG控制倒立摆系统
- 台式计算机怎么进行打印机共享,台式机共享打印机的方法
- mysql 处理emij表情_判断是否emij表情
- 电脑做笔记用什么软件好
- Life begins in Beijin
- 看inux系统中的c语言编译器,Linux系统自定义安装C语言gcc编译器图文详细教程
- 英剧《反击》中有意思的镜头