您的位置:首页 > 数据库

数据库知识点总结(发展,约束,索引,触发器,连接池,视图,事务)

2020-03-01 05:34 190 查看

数据库的发展

数据管理技术的发展经历了以下四个阶段:人工管理阶段、文件系统阶段、数据库阶段和高级数据库技术阶段。

人工管理

50年代中期之前,计算机的软硬件均不完善。硬件存储设备只有磁带、卡片和纸带,软件方面还没有操作系统,当时的计算机主要用于科学计算。这个阶段由于还没有软件系统对数据进行管理,程序员在程序中不仅要规定数据的逻辑结构,还要设计其物理结构,包括存储结构、存取方法、输入输出方式等。

特点:

计算机中没有支持数据管理的软件。
数据组织面向应用,数据不能共享,数据重复。
在程序中要规定数据的逻辑结构和物理结构,数据与程序不独立。
数据处理方式——批处理。


文件系统

这一阶段的主要标志是计算机中有了专门管理数据库的软件——操作系统(文件管理)。

上世纪50年代中期到60年代中期,由于计算机大容量存储设备(如硬盘)的出现,推动了软件技术的发展,而操作系统的出现标志着数据管理步入一个新的阶段。在文件系统阶段,数据以文件为单位存储在外存,且由操作系统统一管理。操作系统为用户使用文件提供了友好界面。文件的逻辑结构与物理结构脱钩,程序和数据分离,使数据与程序有了一定的独立性。用户的程序与数据可分别存放在外存储器上,各个应用程序可以共享一组数据,实现了以文件为单位的数据共享。

但由于数据的组织仍然是面向程序,所以存在大量的数据冗余。而且数据的逻辑结构不能方便地修改和扩充,数据逻辑结构的每一点微小改变都会影响到应用程序。由于文件之间互相独立,因而它们不能反映现实世界中事物之间的联系,操作系统不负责维护文件之间的联系信息。如果文件之间有内容上的联系,那也只能由应用程序去处理。

系统阶段

60年代后,随着计算机在数据管理领域的普遍应用,人们对数据管理技术提出了更高的要求:希望面向企业或部门,以数据为中心组织数据,减少数据的冗余,提供更高的数据共享能力,同时要求程序和数据具有较高的独立性,当数据的逻辑结构改变时,不涉及数据的物理结构,也不影响应用程序,以降低应用程序研制与维护的费用。数据库技术正是在这样一个应用需求的基础上发展起来的。

数据库技术有如下特点:

面向企业或部门,以数据为中心组织数据,形成综合性的数据库,为各应用共享。
采用一定的数据模型。数据模型不仅要描述数据本身的特点,而且要描述数据之间的联系。
数据冗余小,易修改、易扩充。不同的应用程序根据处理要求,从数据库中获取需要的数据,这样就减少了数据的重复存储,也便于增加新的数据结构,便于维护数据的一致性。
程序和数据有较高的独立性。
具有良好的用户接口,用户可方便地开发和使用数据库。
对数据进行统一管理和控制,提供了数据的安全性、完整性、以及并发控制。

数据库的发展趋势

随着信息管理内容的不断扩展,出现了丰富多样的数据模型(层次模型,网状模型,关系模型,面向对象模型,半结构化模型等),新技术也层出不穷(数据流,Web数据管理,数据挖掘等)。

数据库基本结构

数据库的基本结构分三个层次,反映了观察数据库的三种不同角度。

以内模式为框架所组成的数据库叫做物理数据库;以概念模式为框架所组成的数据叫概念数据库;以外模式为框架所组成的数据库叫用户数据库。

(1)物理数据层。 
它是数据库的最内层,是物理存贮设备上实际存储的数据的集合。这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串、字符和字组成。

(2)概念数据层。 
它是数据库的中间一层,是数据库的整体逻辑表示。指出了每个数据的逻辑定义及数据间的逻辑联系,是存贮记录的集合。它所涉及的是数据库所有对象的逻辑关系,而不是它们的物理情况,是数据库管理员概念下的数据库。

(3) 用户数据层。 
它是用户所看到和使用的数据库,表示了一个或一些特定用户使用的数据集合,即逻辑记录的集合。

数据库不同层次之间的联系是通过映射进行转换的。

数据库特点

(1)实现数据共享 
数据共享包含所有用户可同时存取数据库中的数据,也包括用户可以用各种方式通过接口使用数据库,并提供数据共享。

(2)减少数据的冗余度 
同文件系统相比,由于数据库实现了数据共享,从而避免了用户各自建立应用文件。减少了大量重复数据,减少了数据冗余,维护了数据的一致性。

(3)数据的独立性 
数据的独立性包括逻辑独立性(数据库中数据库的逻辑结构和应用程序相互独立)和物理独立性(数据物理结构的变化不影响数据的逻辑结构)。

(4)数据实现集中控制 
文件管理方式中,数据处于一种分散的状态,不同的用户或同一用户在不同处理中其文件之间毫无关系。利用数据库可对数据进行集中控制和管理,并通过数据模型表示各种数据的组织以及数据间的联系。

(5)数据一致性和可维护性,以确保数据的安全性和可靠性 
主要包括:①安全性控制:以防止数据丢失、错误更新和越权使用;②完整性控制:保证数据的正确性、有效性和相容性;③并发控制:使在同一时间周期内,允许对数据实现多路存取,又能防止用户之间的不正常交互作用。

(6)故障恢复 
由数据库管理系统提供一套方法,可及时发现故障和修复故障,从而防止数据被破坏。数据库系统能尽快恢复数据库系统运行时出现的故障,可能是物理上或是逻辑上的错误。比如对系统的误操作造成的数据错误等。

数据库语言(SQL)

SQL是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的SQL语言作为数据输入与管理的接口。

数据库语言分类

SQL语言包括四类种主要程序设计语言类别的语句:数据定义语言(DDL),数据操作语言(DML)及数据控制语言(DCL)还有事务控制语言(TCL)。

数据定义语言(DDL):表结构定义,表结构更改,例如:CREATE、DROP、ALTER等语句。

数据操作语言(DML):增删改查,例如:INSERT(插入)、UPDATE(修改)、DELETE(删除)语句。

数据查询语言(DQL),例如:SELECT语句。(一般不会单独归于一类,因为只有一个语句)。

数据控制语言(DCL):控制用户对数据库操纵的权限:一、域约束。二、键约束。三、非空约束。四、实体完整性约束。五、参照完整性约束。六、用户定义的完整性,例如:GRANT、REVOKE等语句。

事务控制语言(TCL),例如:COMMIT、ROLLBACK等语句。

标准语句

–数据操作

SELECT --从数据库表中检索数据行和列
INSERT --向数据库表添加新数据行
DELETE --从数据库表中删除数据行
UPDATE --更新数据库表中的数据


增:insert into table(字段1,字段2······) values(int,char,varchar,nvarchar······)

删:delete from table where 字段1=value and|or 字段2=value,truncate table 表名。

改:update table set 字段1=value,字段2=value······ where字段1=value and|or 字段2=value

查:select 字段1,字段2······ from table1 笛卡尔积|on筛选器|添加外部行(left join,right join,inner join) where 字段1=value or|and 字段2=value 字段3 like %string% group by 字段 having 字段>|<|<>value order by desc|asc。

数据定义

CREATE TABLE --创建一个数据库表
DROP TABLE --从数据库中删除表
ALTER TABLE --修改数据库表结构
CREATE VIEW --创建一个视图
DROP VIEW --从数据库中删除视图
CREATE INDEX --为数据库表创建一个索引
DROP INDEX --从数据库中删除索引
CREATE PROCEDURE --创建一个存储过程
DROP PROCEDURE --从数据库中删除存储过程
CREATE TRIGGER --创建一个触发器
DROP TRIGGER --从数据库中删除触发器
CREATE SCHEMA --向数据库添加一个新模式
DROP SCHEMA --从数据库中删除一个模式
CREATE DOMAIN --创建一个数据值域
ALTER DOMAIN --改变域定义
DROP DOMAIN --从数据库中删除一个域
 

 


库操作:

一、创建:create database 库名。

二、删除:drop database 库名。

三、更新:alter database 原数据库名称 modify name=新数据库名称。

2、表操作:

一、创建:create table 表名{字段名 类型 约束,······ }

二、删除:drop table 表名。三、更新:alter table oldtable rename to newtable。

3、表结构更改操作:

一、添加字段:alter table 表名 add column 字段 type[(size)] [NOT NULL]。

二、删除字段:alter table 表名 drop column 字段。

三、更改数据类型:alter table 表名 modify 列名 类型。

四、更改字段:alter table 表名 rename column 当前列名 to 新列名。等等。

数据库约束

1、主键约束:primary key

2、唯一约束:unique

3、外键约束:foreign key(涉及级联删除)constraint 外键名 foreign key 当前表列名 references 表名(字段)

4、检查约束:check constraint 约束名 check(表达式)

5、空值约束:NULL/NOT NULL

6、默认约束:default

7、约束操作:

一、删除:drop constraint 约束名。

二、启用:disable constraint 约束名。

三、禁用:enable constraint 约束名。

四、更新:rename constraint 约束名 to 新约束名。

数据库索引

1、索引分类:按存储结构分为聚集索引和非聚集索引,唯一索引。

2、索引的作用:增加数据的查找速度,减少扫描数。(b树)

3、索引创建:create unique|clustered|nonclustered index 索引名 on 表名(column asc|desc)。

4、索引删除:drop index 表名.索引名。

数据库触发器

1、触发器特点:只能通过事件来启动运行,不能直接被调用。

2、触发器作用:数据的维护,数据限制,级联修改等等。

3、触发器结构:

一、触发语句:触发事件update,insert,delete,先后before,after。

二、触发器主体:在触发触发语句时执行SQL语句。

三:触发器限制:通过where 实现

4、触发器语法:create trigger 触发器名 on 表名 for insert|delete|update as begin begin 执行语句 end begin 执行语句 end ······end。

5、触发器操作: 
一、禁用:alter table 表名 disable all triggers。

二、启用:alter table 表名 enable all triggers。

三、删除:drop trigger 触发器名。

数据控制

GRANT –授予用户访问权限 
DENY –拒绝用户访问 
REVOKE –解除用户访问权限

事务控制

COMMIT –结束当前事务 
ROLLBACK –回滚当前事务 
SET TRANSACTION –定义当前事务数据访问特征

程序化SQL

DECLARE –为查询设定游标 
EXPLAN –为查询描述数据访问计划 
OPEN –检索查询结果打开一个游标 
FETCH –检索一行查询结果 
CLOSE –关闭游标 
PREPARE –为动态执行准备SQL 语句 
EXECUTE –动态地执行SQL 语句 
DESCRIBE –描述准备好的查询

数据库的运行机制

数据库执行步骤

一、客户端请求:服务端开辟线程相应用户。

二、用户发起SQL语句查询数据库。

三、查询缓存:记录用户的SQL查询语句,如果挨次查询同样内容,就返回内存。

四、如果缓存没有进入分析器。

五、优化:执行路径的选择,生成执行树。

六、存储引擎:用于管理存储在文件系统。

语法分析器

检测用户命令语法是否正确。原理是将用户的命令进行切片,用空格把多个词分开,获得用户查询的表,内容,权限等。

数据库连接池

一、产生原因:频繁的从硬盘读取数据很慢,所以将数据存在内存中,因此派生出数据库连接池的概念

二、原理:集合、最小连接数、最大连接数、释放时间、最大空闲时间。

数据库事务

1、事务ACID:原子性,一致性,隔离性(数据隔离),持久性。

2、事务隔离级别依据:脏读,不可重复读,幻读。

3、事务分类:显示事务,隐式事务,自动提交事务。

4、事务语法:begin transaction 逻辑语句。

隔离级别 脏读 不可重复读 幻读 
读未提交 YES YES YES 
读已提交 NO YES YES 
可重复读 NO NO YES 
串行化 NO NO NO

数据库视图

1、视图的分类:标准视图,索引视图,分区视图

2、视图的作用:

一、集中数据、简化和定制不同用户对数据库的不同数据的要求。

二、屏蔽数据的复杂性。

三、提供用户需求的数据。

四、具有一定的安全机制。

3、创建视图的语句:create view 视图名(列名1,列名2,······) as SQL语句。

4、视图操作:增删改查与数据表几乎一致。

5、视图可以再创建视图。
--------------------- 
作者:Jurbo 
来源:CSDN 
原文:https://blog.csdn.net/Jurbo/article/details/52334575 
版权声明:本文为博主原创文章,转载请附上博文链接!

  • 点赞 2
  • 收藏
  • 分享
  • 文章举报
站内首发文章 千亩湖畔的故事 发布了0 篇原创文章 · 获赞 6 · 访问量 82 私信 关注
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐