数据库原理

数据库原理精讲1

拥有回忆 提交于 2020-01-20 08:41:54
一.数据系统概述 1.1 数据库基本概念 1.2 数据管理技术的发展 1.3 数据库系统的结构 1.4 数据模型 二.数据库基本概念 2.1 什么是数据 1. 数据(Data)是描述事物的符号记录,是指利用物理符号j记录下来的,可以鉴别的信息。 2. 数据是信息存在的一种形势,只有通过解释或处理的数据才能成为有用的信息。 3. 数据(Database,DB)是指 长期储存 在计算机中 有组织 , 可共享 的数据集合。 4. 数据要按照一定的数据模型组织、描述和存储、具有较小的冗余度,较高的数据独立性,系统易于扩展,并可以被多个用户分享。 3.1 数据库中存储数据的三个特点: 1.永久存储 2,有组织 3.可共享 4.1 数据库管理系统及其功能 1.数据库管理系统(DBMS)是专门用于建立和管理数据库的一套软件。介于应用系统和操作系统之间。 2.数据库定义功能 3. 数据库操纵功能 4. 数据库的运行管理功能 5. 数据库的建立和维护功能 6. 数据组织,存储和管理功能 7. 其他功能 5.1练习题: 1、通常,一个完整的数据库系统包括数据库、数据库管理系统及相关实用工 具、( 应用程序 )、数据库管理员和用户。 填空题 2、数据库系统简称( C )。单选题 A:DB——数据库 B:DBMS——数据库管理系统 C:DBS——数据库系统 D:DBA——数据库管理员 1)数据集成

数据库原理复习——完整性约束

廉价感情. 提交于 2020-01-18 03:01:46
数据库完整性约束指的是数据库格式的规范,只有满足完整性约束的记录才被允许加入数据库。 数据库完整性约束大致分为四种,包括域约束,参照完整性约束,实体完整性约束和用户自定义的约束。域约束是最基本的约束,主要限制的是属性的取值范围,在SQL中用check来定义。参照完整性指的是外键都必须存在。实体完整性指的是所有的值都要在主键的值上有值,而且是唯一的。用户自定义的约束则是用户自己定义的。 断言指的是数据库必须满足的条件,域约束和参照完整性是一类特殊的断言。 触发器指的某一个数据库动作只有在某各另外的时间发生时才会发生,定义为trigger。 函数依赖指的是在数据表中,如果Y的值取决于X,那么我们就称Y到X依赖,记做X->Y。其中X可以是一组属性。函数依赖分为局部函数依赖和完全函数依赖,前者就是X中有的属性是不需要的。传递函数依赖指的是函数依赖的连续性。函数依赖是为了刻画数据库表关系结构的合理性,是否高效是否安排合理。 函数依赖的逻辑蕴含指的是函数依赖通过Armstrong定理可以展开,而闭包就是整个展开的合集。 范式是用来衡量数据库关系规范化程度的,1NF指的表中的属性有原子性就可以了。2NF指的是表中的关系不具有局部函数依赖性,3NF表示关系不具有传递依赖性。最小函数依赖集是不含有任何扩张项的函数依赖集合。 然后我们如何使得关系更加合理呢?通过规范化

Mybatis原理分析之一:从JDBC到Mybatis

给你一囗甜甜゛ 提交于 2020-01-16 23:15:47
1.引言 本文主要讲解JDBC怎么演变到Mybatis的渐变过程,重点讲解了为什么要将JDBC封装成Mybaits这样一个持久层框架。再而论述Mybatis作为一个数据持久层框架本身有待改进之处。 2.JDBC实现查询分析 我们先看看我们最熟悉也是最基础的通过JDBC查询数据库数据,一般需要以下七个步骤: (1) 加载JDBC驱动 (2) 建立并获取数据库连接 (3) 创建 JDBC Statements 对象 (4) 设置SQL语句的传入参数 (5) 执行SQL语句并获得查询结果 (6) 对查询结果进行转换处理并将处理结果返回 (7) 释放相关资源(关闭Connection,关闭Statement,关闭ResultSet) 以下是具体的实现代码: Java代码 public static List<Map<String,Object>> queryForList(){ Connection connection = null ; ResultSet rs = null ; PreparedStatement stmt = null ; List<Map<String,Object>> resultList = new ArrayList<Map<String,Object>>(); try { //加载JDBC驱动 Class.forName( "oracle.jdbc

数据库原理复习——不同的数据库体系结构

末鹿安然 提交于 2020-01-15 06:13:48
数据库系统运行在计算机系统上,数据库的体系结构与计算机系统的体系结构密切相关。计算机系统的体系结构结构的各个方面都反应在数据库中,本章主要就是介绍这些系统。 一、集中式系统 集中式系统是指运行在一台计算机上,不与其他计算机系统交互的数据库管理系统,包括PC上的数据库和一些大型高性能多用户的数据库管理系统。这些小型的数据库就是 故障恢复的能力 有限(只有日志和影子数据库),只支持单用户。而大型的DBMS通常是多个处理器共享一个内存,可以实现粗粒度的并行计算。每个处理器上一个查询,从而使多个查询能并行的执行,提高了吞吐量。 客户服务器系统 客户服务器系统指的是人们现在用的都是DBMS服务器而不是本地的那种。 服务器满足那些底层的内容,用户只要管用户模式下的内容就可以了。DBMS的服务又分为两类,第一种是 事务服务器 (也叫查询服务器),用户发送事务请求然后DBMS服务器把结果返回给用户,遵循一个 ODBC接口标准 ,用这个接口就可以连接任何ODBC连接的数据库;另外一种是 数据服务器 ,可以使客户向服务器发出请求,并以 文件或页面 等为单位访问数据,主要用于局域网中,客户和服务器中间的高速连接,这种情况需要把DBMS后端的所有功能都放到客户端。 二、并行数据库 对长事务(数据仓库)和大量短事务(电话公司的计费系统)的快速处理推动了并行DBMS的发展。并行系统主要性能是 吞吐量

JDBC原理及基本操作

落花浮王杯 提交于 2020-01-14 00:24:00
1、JDBC原理 1、JDBC API:提供各种操作访问接口,Connection Statement PreparedStatement ResultSet; 2、JDBC DriverManager:管理不同的数据驱动; 3、各种数据库驱动:相应的数据库厂商提供的数据库驱动,链接直接操作数据库; 2、Java操作数据库(JDBC API) 1、与数据库建立连接; 2、发送SQL语句; 3、返回处理结果; DriverManager //管理jdbc驱动 Connection //连接 Statement //增删改查 PreparedStatement //增删改查 CallableStatement //调用数据库中的 存储过程/存储函数 ResultSet //返回的结果集 JDBC访问数据库的具体步骤: a、导入具体的驱动程序,加载具体的驱动类 ; b、与数据库建立连接 ; c、发送sql,执行; d、处理结果集(查询); 数据库 数据库驱动 MySQL ojdbc - x . jar Oracle mysql - connector - java - x . jar SqlServer sqljdbc - x . jar 3、Java操作MySQL package jdbc ; import java . sql . * ; //import com.mysql

MySQL的InnoDB索引原理详解

自闭症网瘾萝莉.ら 提交于 2020-01-10 16:19:36
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 摘要 本篇介绍下Mysql的InnoDB索引相关知识,从各种树到索引原理到存储的细节。 InnoDB是Mysql的默认存储引擎(Mysql5.5.5之前是MyISAM, 文档 )。本着高效学习的目的,本篇以介绍InnoDB为主,少量涉及MyISAM作为对比。 这篇文章是我在学习过程中总结完成的,内容主要来自书本和博客(参考文献会给出),过程中加入了一些自己的理解,描述不准确的地方烦请指出。 1 各种树形结构 本来不打算从二叉搜索树开始,因为网上已经有太多相关文章,但是考虑到清晰的图示对理解问题有很大帮助,也为了保证文章完整性,最后还是加上了这部分。 先看看几种树形结构: 1 搜索二叉树:每个节点有两个子节点,数据量的增大必然导致高度的快速增加,显然这个不适合作为大量数据存储的基础结构。 2 B树:一棵m阶B树是一棵平衡的m路搜索树。最重要的性质是每个非根节点所包含的关键字个数 j 满足:┌m/2┐ – 1 <= j <= m – 1;一个节点的子节点数量会比关键字个数多1,这样关键字就变成了子节点的分割标志。一般会在图示中把关键字画到子节点中间,非常形象,也容易和后面的 B+树区分。由于数据同时存在于叶子节点和非叶子结点中,无法简单完成按顺序遍历B树中的关键字,必须用中序遍历的方法。 3 B+树

SqlServer索引的原理与应用

a 夏天 提交于 2020-01-01 04:54:44
SqlServer索引的原理与应用 索引的概念 索引的用途:我们对数据查询及处理速度已成为衡量应用系统成败的标准,而采用索引来加快数据处理速度通常是最普遍采用的优化方法。 索引是什么:数据库中的索引类似于一本书的目录,在一本书中使用目录可以快速找到你想要的信息,而不需要读完全书。在数据库中,数据库程序使用索 引可以重啊到表中的数据,而不必扫描整个表。书中的目录是一个字词以及各字词所在的页码列表,数据库中的索引是表中的值以及各值存储位置的列表。 索引的利弊:查询执行的大部分开销是I/O,使用索引提高性能的一个主要目标是避免全表扫描,因为全表扫描需要从磁盘上读取表的每一个数据页,如果有 索引指向数据值,则查询只需要读少数次的磁盘就行啦。所以合理的使用索引能加速数据的查询。但是索引并不总是提高系统的性能,带索引的表需要在数 据库中占用更多的存储空间,同样用来增删数据的命令运行时间以及维护索引所需的处理时间会更长。所以我们要合理使用索引,及时更新去除次优索引。 数据表的基本结构 一个新表被创建之时,系统将在磁盘中分配一段以8K为单位的连续空间,当字段的值从内存写入磁盘时,就在这一既定空间随机保存,当一个 8K用完的时候,数据库指针会自动分配一个8K的空间。这里,每个8K空间被称为一个数据页(Page),又名页面或数据页面,并分配从0-7的页号, 每个文件的第0页记录引导信息,叫文件头

mysql数据库主从同步复制原理

丶灬走出姿态 提交于 2020-01-01 04:27:24
MySQL 的Replication(英文为复制)是一个多MySQL 数据库 做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能、更高可靠性要求的场合。与之对应的是另一个同步技术是MySQL Cluster,但因为MySQL Cluster配置比较复杂,所以使用者较少。 MySQL的Replication是一个异步复制的过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),它是从一个Mysql instance(instance英文为实例)(我们称之为Master)复制到另一个Mysql instance(我们称之slave)。在master与slave之间实现整个复制过程主要由三个线程来完成,其中两个线程(SQL线程和IO线程)在slave端,另外一个线程(IO线程)在master端。 要实现MySQL的Replication,首先必须打开master端的binlog (mysql-bin.xxxxxx)日志功能,否则无法实现mysql的主从复制。因为mysql的整个主从复制过程实际上就是:slave端从master端获取binlog日志,然后再在自己身上完全顺序的执行该日志中所记录的各种SQL操作。 有关具体如何开启mysql的binlog日志功能, MySQL主从复制的基本交互过程,如下: 1、slave端的IO线程连接上master端

mysql数据库主从同步复制原理

时间秒杀一切 提交于 2020-01-01 04:23:57
MySQL的Replication(英文为复制)是一个多MySQL数据库做主从同步的方案,特点是异步复制,广泛用在各种对MySQL有更高性能、更高可靠性要求的场合。与之对应的是另一个同步技术是MySQL Cluster,但因为MySQL Cluster配置比较复杂,所以使用者较少。 MySQL的 Replication是一个异步复制的过程(mysql5.1.7以上版本分为异步复制和半同步两种模式),它是从一个Mysql instance(instance英文为实例)(我们称之为Master)复制到另一个Mysql instance(我们称之slave)。在master与slave之间实现整个复制过程主要由三个线程来完成,其中两个线程(SQL线程和IO线程) 在slave端,另外一个线程(IO线程)在master端。 要实现MySQL的 Replication,首先必须打开master端的binlog (mysql-bin.xxxxxx)日志功能,否则无法实现mysql的主从复制。因为mysql的整个主从复制过程实际上就是:slave端从 master端获取binlog日志,然后再在自己身上完全顺序的执行该日志中所记录的各种SQL操作。 有关具体如何开启mysql的binlog日志功能,请大家自己在网上搜。 MySQL主从复制的基本交互过程,如下: 1

数据库事务概念及实现原理

牧云@^-^@ 提交于 2019-12-29 11:48:04
一.事务基本概念及特性 1. 事务定义与详解 事务是数据库系统中重要的概念,事务的定义:是构成单一逻辑工作单元的操作集合。 一个典型的数据库事务如下所示: BEGIN TRANSACTION //事务开始 SQL1 SQL2 COMMIT/ROLLBACK //事务提交或回滚 关于定义的解释: 数据库事务可以包含一个或多个数据库操作,这些操作构成一个逻辑上的整体。 对于一个事务来说,上述构成的逻辑整体具有原子性,要么全部执行,要么均不 执行。 数据库出现故障以及并发事务存在的情况下依然成立 2.事务4大特性(ACID) 原子性(Atomicity) 事务中所有操作可作为一个整体像原子一样不可分割,要么全部执行成功,要么 全部执行失败。 一致性(Consistency) 指系统数据在事务执行前后,若事务执行成功从一个正确状态迁移到另一个正确 状态。如果失败,回滚到初始时的正确状态。正确状态是指数据当前的状态满足预定的约束,约束既有数据完整性约束(主键等)也有开发者制定业务上的。 隔离性(Isolation) 指在并发环境下,当不同的事务同时操作相同的数据时,每个事务都有各自完整的数据空间,多个事务之间要相互隔离,隔离级别下文再详细介绍。 持久性(Durability) 指事务一旦被提交,它对数据库中的数据的改变就必须永久保存下来,即使发生系统崩溃