初识数据库和SQL语言

SQL概述

    结构化查询语言(Structured Query Language)简称SQL,是一种特殊目的的编程语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。

常见的数据库软件名称:DB2、ORACLE、SYBASE、MySQL、SQLSERVER、ACCESS等。

数据库相关概念
数据(Data)
    用来记录信息的可识别符号,是信息的具体表现形式
    数据是对现实世界的事物采用计算机能够识别、存储和处理的方式进行描述,其具体表现形式可以是数字、文本、图像、音频、视频等。
数据库(DB)
    Database,用来存放数据的仓库,只不过该仓库位于该计算机的存储设备上。
数据库系统(DBS)
    Database System,数据库系统由软件、数据库和数据库管理员(DBA)组成。

数据库三大模式

在这里插入图片描述
1.外模式(External Schema)
    对应数据库的升级、外模式包括(子模式 用户模式) 用来描述用户看到或者使用那部分的数据的逻辑结构,用户根据外模式用户数据操作语句或者程序去操作数据库中的数据,外模式的主要特点用来描述组成用户视图各个记录的组成、相互联系、数据的完整性和安全性、数据项的特征等。

2.概念模式
    对应数据库的概念模式,概念模式(概念、逻辑模式)用以描述整个数据库中的逻辑结构、用来描叙现实生活中的实体,以及它们之间的关系、从而定义记录数据项的完整性约束条件以及记录之间的联系是数据项的框架。概念模式是数据库中全体数据的逻辑结构和特征的描叙是所有用户数据的公共数据视图。还包括数据间的一些语义约束,对它的描述可用DBMS中的DDL定义。

3.内模式(Internal Schema)
    内模式对应物理级数据库,内模式是所有模式中的最低层的表示,不同于物理层,假设外存是一个无限性的地址空间,内模式是存储记录的类型,存储域以及表示以及存储记录的物理顺序,指示元索引,和存储路径的等数据的存储组织从而形成一个完整的系统。

数据库的二级映像

    数据库系统的模式、内模式、外模式之间有很大的差别,为了实现用户和数据之间的透明化, DBMS提供了两层映像外模式/模式映像和模式/内模式映像。有了这两层映像.用户就能逻辑地、抽象地处理数据,而不必关心数据在计算机中的具体表示方式与存储方式.正是这两层映像保证了数据库系统中的数据能够具有较高的逻辑独立性和物理独立性。映像实质上是一种对应关系 ,是指映像双方如何进行数据转换,并定义转换规则,这样就能使数据独立性得到保证。
(1)外模式/模式映像
    数据库的每一个外模式都有一个外模式/模式映像,它定义了该外模式与模式之间的对应关系,外模式/模式映像一般是在外模式中描述的。模式描述的是数据的全局逻辑结构,外模式描述的是数据的局部逻辑结构。对应于同一个模式可以有任意多个外模式。对于每一个外模式,数据库系统都有一个外模式/模式映像它定义了该外模式与模式之间的对应关系。这些映像通常包含在各自外模式的描述中。
如果模式需要进行修改, 例如数据库新定义、增加新的关系、 新的属性、改变属性的数据类型等, 那么只需对各个外模式/模式的映像做相应的修改, 使外模式尽量保持不变,而应用程序一般是依据外模式编写的,因此应用程序也不必修改,从而保证了数据与程序的逻辑独立性,这就是数据的逻辑独立性。

(2)模式/内模式映像
    模式/内模式映像是唯一的,因为数据库只有一个模式和内模式,它存在于模式和内模式之间,由于两级模式之间的数据结构可能不一致,甚至可能让别很大。模式/内模式映像定义了模式和内模式之间的对应关系,即数据全局逻辑结构与存储结构之间的对应关系。模式/内模式映像一般是在模式中描述的。当数据库的存储结构改变时,由数据库管理员对模式/内模式映像做相应改变。可以使模式保待不变,因此应用程序也不必改变。这就保证了数据与程序的物理独立性,简称数据的物理独立性。
    在数据库的三级模式结构中,数据库模式即全凡逻辑结构是数据库的中心与关键,它独立于数据库的其他层次。因此设计数据库模式结构时应首先确定数据库的逻辑模式。
    数据库的内模式依赖于它的全局逻辑结构,但独立于数据库的用户视图即外模式,也独立于具体的存储设备。它是将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以实现达到较好的时间与空间效率的目的。
    数据库的外模式面向具体的应用桯序,它定义在逻辑模式之上,但独立于存储模式和存储设备。当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动,所以设计外模式时应充分考虑到应用的扩充性。特定的应用程序是在外模式描述的数据结构上编制的,它依赖于特定的外模式,与数据库的模式和存储结构独立。不同的应用程序有时可以共用同一个外模式。数据库的二级映像保证了数据库外模式的稳定性,从而从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改。
    数据与程序之间的独立性,使得数据的定义和描述可以从应用程序中分离出去。另外,由于数据的存取由DBMS管理,用户不必考虑存取路径等细节,从而简化了应用程序的编制,大大减少了应用程序的维护和修改工作。

数据模型

    模型是现实世界特征的模拟与抽象。数据模型(Data Model)也是一种模型,它是数据库中用于提供信息表示和操作手段的形式构架,是数据库中用来对现实世界进行抽象的工具。由于计算机不可能直接处理现实世界中的具体事务,因此人们必须事先把具体事物转换成计算机能够处理的数据 即首先要数字化,要把现实世界中的人、事、物、概念用数据模型这个工具来抽象、表示和加工处理。
    数据模型按不同的应用层次分为3种类型,分别是概念数据模型(conceptual data model), 逻辑数据侠型(logic data model)和物理数据模型(physical data model)。

1.概念数据模型(conceptual data model)
概念数据模型又称概念模型,是一种面向客观世界、面向用户的模型。与具体的数据库管理系统无关,与具体的计算机平台无关。人们通常先将现实世界中的事物抽象到信息世界,建立所谓的“概念模型”,然后再将信息世界的模型映射到机器世界,将概念模型转换为计算机世界中的模型。因此,概念模型是从现实世界到机器世界的一个中间层次。

2. 逻辑数据模型
逻辑数据模型又称逻辑模型,是一种面向数据库系统的模型、它是概念模型到计算机之间的中间层次。概念模型只有在转换成逻辑模型之后才能在数据库中得以表示。目前,逻辑模型的种类很多,其中比较成熟的包括层次模型、关系模型、网状模型、面向对象模型等。这4种数据模型的根本区别在于数据结构不同。
    (1)层次模型用“树结构”来表示数据之间的联系;
    (2)关系模型用“二维表”来表示数据之间的联系;
    (3)网状模型用“图结构”来表示数据之间的联系;
    (4)面向对象模型用“对象”来表示数据之间的联系。

3.物理数据模型
    物理数据模型又称物理模型,它是一种面向计算机物理表示的模型,此模型是数据模型在计算机物理结构上的表示。
    通常,数据模型由数据结构、数据操纵和完整性约束三部分组成。这也称为数据模型的三大要素。

数据完整性约束

    数据的完整性约束是对数据描述的某种约束条件,关系型数据模型中可以有三类完整性约束:实体完整性、 参照完整性和用户定义的完整性
1.实体完整性(Entity Integrity)
    一个基本关系通常对应现实世界的一个实体集。实体完整性规则:若属性A是基本关系R的主属性,则属性A不能取空值。

2.参照完整性(Referential lntegrity)
    现实世界中的实体之间往往存在某种联系,在关系模型中实体及实体间的联系都是用关系来描述的。这样就自然存在着关系与关系间的引用。
参照完整性规则就是定义外码与主码之间的引用规则。

3. 用户定义的完整性(Use-defined lntegrity)
    实体完整性和参照完整性适用于任何关系数据库系统。除此之外,不同的关系数据库系统根据共应用环境的不同往往还需婓一些特殊的约束条件。
    用户定义的完整性就是针对某一具体关系数据库的约束条件,它反映某一具体应用所涉及的数据必须满足的语义要求。关系模型应提供定义和检验这类完整性的机制,以便用统一的系统方法处理它们,而不要由应用程序承担这一功能。

联机事务处理和联机分析处理

    联机事务处理(Online Transaction Processing,OLTP)是数据库应用系统的最底层的应用, 主要用于完成数据库应用系统的各项业务处理。
    OLTP是数据库应用系统发展中最早也是最迫切要求被实现的一层。它可以直接替代手工劳动,极大地提高工作效率。它的应用需求推动了数据库技术,尤其是关系数据库的发展,而后者又为其提供了强有力的支持。
    随着OLTP系统的成熟,人们一方面在研究数据处理技术还可以带来什么,另一方面又被OLTP产生的大量数据淹没时,E.F.Codd博士提出了联机分析处理(Online Analytical P,ocossing, OLAP)的概念, OLAP是一种软件技术,它使分析人员、 经理和执行官能够迅速、一致、交互地从各个方而观察信息。 以达到深入理解数据的目的。这些信息是由OLTP系统中的原始数据转换过来的,按照用户的理解,它反映了用户环境其实的方方面面,为中层领导和高层决策提供了参考和依据。
    联机事务处理和联机分析处理代表了数括处理技术和数据应用的两个层次:联机事务处理提高了工作效率和工作质量, 联机分析处理从领导和决策出发,全面、真实、直观地反映经营活动的各个方面。

数据仓库

    支持大量数据信息存储的叫做支持数据仓库或数据仓库。当把几个小型数据库集成为一个大型数据库,并为一个较广泛的组织服务时,如果该数据库存储历史数据,提供决策支持 , 提供数据汇总, 提供只读数据, 并且实质上充当所有向它捉供数据的相关成品数据库的数据接收器, 那么它通常被叫做数据仓库(Data Warehouse),
    数据仓库体系结构可以容纳各种格式的内部和外部数据,其中包括各种经营数据、历史数据、现行数据、订阅数据及来自Internet服务商的数据。还必须包括易于访问的元数据。从而能够提供访问和综合来自各种数据商店的数据。 进行复杂的数据分析,创建各种多维数据视图。
    数据仓库概念创始人W.H.lnmon于1996年在《Building the Data Wa,ehouse》中明确给出数据仓库的定义是数据仓库是面向主题的、 完整的、非易失的、随时间变化的、用于支持决策管理的数据集合。

数据仓库主要特征
1.面向主题
    与OLTP 面向应用进行数据组织相对应,数据仓库的数据被划分成一个个的主题域。主题是一个抽象的逻辑概念,是在一个较高层次上将数据分析归类的标识,对应于一个宏观的分析领域,如政策、市场分析等。主题域具有独立性和完整性。数据信息按主题进行组织,为按主题进行决策提供信息。

2.完整性
    数据在进入数据仓库之前,不是简单从各个业务系统中抽取出来的,必须经过系统加工、汇总和整理,从而使数据仓库内的信息是关于企业的、一致的、全局的数据信息。这一步是数据仓库建设中最关键、最复杂的一步,它完成了元数据从面向应用到面向主题的转变。

3.稳定性
    与OLTP系统不同,数据按照一定的周期升级到数据仓库中,包括复杂提取、概括、聚集和老化的过程。数据一旦进入数据仓库以后,在一般情况下长期保留。也就是说,数据仓库基本上是只读的,反映的是历史数据的内容,是不同时点的数据库快照的集合,以及基于这些快照的通过统计、综合和重组所导出的数据,而不是OLTP系统的数据。它所涉及的操作主要是查询操作,用户不能对其进行删除或更新。一且数据超过了数据仓库的数据存储期限,这些数据将从当前的数据仓库中删去。

4.时变性
    数据仓库内的信息包括了企业各个历史时期的数据,而不只是企业当时或某一时间点上的数据,用以支持数据分析,它可提供对数据的瞬时分析并衍生出数据值或对企业的发展历程和未来趋势分析等功能。所谓变化即指数据仓库中存储的大量历史数据、 当前数据和综合数据等,它们处于永远的发展变化中。引起变化的因素包括新的数据内容的引入、旧的数据的删除以及重新综合数据等。

SQL语言

    SQL(Structured Query Language,结构化查询语言)是关系型数据库语言的标准。

DDL(Data Definition Language):数据库模式定义语言,用来实现数据库及数据库对象的创建、更改、和删除操作,关键字:create, alter, drop
DML(Data Manipulation Language):数据操纵语言,用于操纵数据库中的数据,关键字:Insert、delete、update
DCL(Data Control Language):数据库控制语言,主要实现对象的访问权限及对数据库操作事物的控制,关键字:grant、remove、commit、rollback
DQL(Data Query Language):数据库查询语言,关键字:select

SQL数据库的ACID

    ACID指在可靠数据库中,事件应该具有的特性,它不是一种技术,而是一种思想。ACID为原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability)的总称。这个ACID可以分为数据库层面的和业务层面的来讨论,一般业务层面的都可以被转换为数据库层面的。

1. 原子性(Atomicity)
    整个事务是一个不可分割整体,要么全部完成,要么全部不完成,不可能停滞在中间某个环节。事务在执行过程中发生错误,会被回滚(Rollback)到事务开始前的状态,就像这个事务从来没有执行过一样。
    每一条的T-SQL语句都是一个事务,如insert语句、update语句等。用户也可以定义自己的事务,使用TYR-CATCH方法将多条语句合为一个事务,比如银行转账,在A账户中减钱与在B账户中增钱是一个自定义的事务。

2. 一致性(Consistency)
    一致性,即在事务开始之前和事务结束以后,数据库的完整性约束(唯一约束,外键约束,Check约束等)没有被破坏。业务的一致性可以转化为数据库的一致性。

3. 隔离性(Isolation)
    隔离执行事务,多个事务的执行互相不干扰。一个事务不可能获取到另一个事务执行的中间数据。SQL Server利用加锁造成阻塞来保证事务之间不同等级的隔离性。
    事务之间的互相影响的情况分为几种,分别为:脏读(Dirty Read),不可重复读,幻读。
脏读:表示一个事务获取了另一个事务的未提交数据,这个数据有可能被回滚。

不可重复读:表示一个事务执行两次相同的查询,出现了不同的结果,这是因为两次查询中间有另一事务对数据进行了修改。

幻读:是指当事务不是独立执行时发生的一种现象,例如第一个事务对一个表中的数据进行了修改,这种修改涉及到表中的全部数据行。同时,第二个事务也修改这个表中的数据,这种修改是向表中插入一行新数据。那么,第一个事务的用户发现表中还有 没有修改的数据行,就好象发生了幻觉一样。
    为了避免上述几种事务之间的影响,SQL Server通过设置不同的隔离等级来进行不同程度的避免。因为高的隔离等级意味着更多的锁,从而牺牲性能.所以这个选项开放给了用户根据具体的需求进行设置。不过默认的隔离等级Read Commited符合了99%的实际需求.

4. 持久性(Durability)
    在事务完成以后,该事务对数据库所作的更改便持久的保存在数据库之中,并不会被回滚。即使出现了任何事故比如断电等,事务一旦提交,则持久化保存在数据库中。
    SQL SERVER通过write-ahead transaction log来保证持久性。write-ahead transaction log的意思是,事务中对数据库的改变在写入到数据库之前,首先写入到事务日志中。而事务日志是按照顺序排号的(LSN)。当数据库崩溃或者服务器断点时,重启动SQL SERVER,SQL SERVER首先会检查日志顺序号,将本应对数据库做更改而未做的部分持久化到数据库,从而保证了持久性。
    WAL (write-ahead logging)的中心思想是对数据文件的修改必须是只能发生在这些修改已经记录了日志之后 – 也就是说,先写在日志里,提交的时候再由日志保存到永久存储器。在日志记录冲刷到永久存储器之后. 如果我们遵循这个过程,那么我们就不需要在每次事务提交的时候 都把数据页冲刷到磁盘,因为我们知道在出现崩溃的情况下, 我们可以用日志来恢复数据库:任何尚未附加到数据页的记录 都将先从日志记录中重做(这叫向前滚动恢复,也叫做 REDO) 然后那些未提交的事务做的修改将被从数据页中删除 (这叫向后滚动恢复 - UNDO)。

发布了71 篇原创文章 · 获赞 33 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/qq_41490561/article/details/102890308