一、基本表和视图的区别:
(1)数据库中的数据都是存储在表中的,而视图只是一个或多个表依照某个条件组合而成的结果集,
一般来说你可以用update,insert,delete等sql语句修改表中的数据,而对视图只能进行select操作。
但是也存在可更新的视图,对于这类视图的update,insert和delete等操作最终会作用于与其相关的
表中数据。因此,表是数据库中数据存储的基础,而视图只是为了满足某种查询要求而建立的一个对象。
(2)表是物理存在的,你可以理解成计算机中的文件! 视图是虚拟的内存表,你可以理解成Windows的快捷方式!
二、重点知识点
1. 数据库系统由数据库、数据库管理系统、应用系统和数据库管理员构成。
2. 数据模型的组成要素是:数据结构、数据操作、完整性约束条件(完整性约束:实体完整性、参照完整性、用户自定义完整性)。
3. 实体型之间的联系分为一对一、一对多和多对多三种类型。
4. 常见的数据模型包括:关系、层次、网状、面向对象、对象关系映射等几种。
5. 关系模型的完整性约束包括:实体完整性、参照完整性和用户定义完整性。
6. 阐述数据库三级模式、二级映象的含义及作用。
数据库三级模式反映的是数据的三个抽象层次: 模式是对数据库中全体数据的逻辑结构和特征的描述。内模式又称为存储模式,是对数据库物理结构和存储方式的描述。外模式又称为子模式或用户模式,是对特定数据库用户相关的局部数据的逻辑结构和特征的描述。
数据库三级模式通过二级映象在 DBMS 内部实现这三个抽象层次的联系和转换。外模式面向应用程序, 通过外模式/模式映象与逻辑模式建立联系, 实现数据的逻辑独立性。 模式/内模式映象建立模式与内模式之间的一对一映射, 实现数据的物理独立性。
7.SQL语言
SQL功能 |
动词 |
数据库查询(DML) |
Select |
数据库定义(DDL) |
Create、Drop、Alter |
数据库操纵(DML) |
Insert、Update、Delete |
数据库控制(DCL) |
Grant、Revoke |
(4)关系的三种类型:基本表、查询表、视图表
(5)完整性约束:实体完整性、参照完整性、用户自定义完整性
索引:
1) 字段的离散度越高,越适合做索引;(外键主键)
2) 占用存储空间少的,存储空间固定,越适合作索引;
3) Where、Group by、Order by更适合做索引
4) 更新字段频繁的不适合做,不会出现在 where 子句中的字段不应该创建索引。
应尽量避免在 where 子句中使用 or 来连接条件,否则将导致引擎放弃使用索引而进行全表扫描,如:
select id from t where num=10 or num=20
可以这样查询:
select id from t where num=10
union all
select id from t where num=20
union和union all的区别是,union会自动压缩多个结果集合中的重复结果,而union all则将所有的结果全部显示出来,不管是不是重复。
SQL Server支持的备份类型有四种:
1、完全数据库备份
2、差异备份或称增量备份
3、事务日志备份: 事务日志用以保存数据库数据的变动,包括增删改等操作。
4、数据库文件和文件组备份
https://blog.csdn.net/kenjianqi1647/article/details/82183441
第二节
一、相关概念
1. 主键: 能够唯一地标识一个元组的属性或属性组称为关系的键或候选键。 若一个关系有多个候选键则可选其一作为主键(Primary key)。
2. 外键:如果一个关系的一个或一组属性引用(参照)了另一个关系的主键,则称这个或这组属性为外码或外键(Foreign key)。外键可以为空。
3. 关系数据库: 依照关系模型建立的数据库称为关系数据库。 它是在某个应用领域的所有关系的集合。
二、重要知识点
1. 关系数据库语言分为关系代数、关系演算和结构化查询语言三大类。
2. 关系的 5 种基本操作是选择、投影、并、差、笛卡尔积。
3.关系模式是对关系的描述,五元组形式化表示为:R(U,D,DOM,F),其中
R —— 关系名
U —— 组成该关系的属性名集合
D —— 属性组 U 中属性所来自的域
DOM —— 属性向域的映象集合
F —— 属性间的数据依赖关系集合
4.笛卡尔乘积,选择和投影运算如下
第三节
一、相关概念
1. SQL:结构化查询语言的简称, 是关系数据库的标准语言。SQL 是一种通用的、 功能极强的关系数据库语言, 是对关系数据存取的标准接口, 也是不同数据库系统之间互操作的基础。集数据查询、数据操作、数据定义、和数据控制功能于一体。
2. 数据定义:数据定义功能包括模式定义、表定义、视图和索引的定义。
3. 嵌套查询:指将一个查询块嵌套在另一个查询块的 WHERE 子句或 HAVING 短语的条件中的查询。
二、重要知识点
1. SQL 数据定义语句的操作对象有:模式、表、视图和索引。
2. SQL 数据定义语句的命令动词是:CREATE、DROP 和 ALTER。
3. RDBMS 中索引一般采用 B+树或 HASH 来实现。
4. 索引可以分为唯一索引、非唯一索引和聚簇索引三种类型。
1. 三个范式
即: 属性唯一, 记录唯一, 表唯一
函数依赖:设R(U)是属性集U上的关系模式,X,Y是U的子集。若对于R(U)的任意一个可能的关系r,r中不可能存在两个元组在X上属性值相等,而在Y上属性值不等,则称X函数确定Y或Y函数依赖于X,记作 X->Y
l 第一范式(1NF):每一个分量都必须是不可分的数据项
l 第二范式(2NF):如果关系模式属于第一范式,并且每一个非主属性完全函数依赖于码,则该关系模式属于第二范式。所谓完全函数依赖,指的是如果” Y函数依赖于X( X->Y )” ,并且对于X的任何一个真子集X‘,都有Y函数不依赖于X’。
l 第三范式(3NF):在第二范式的基础上,每一个非主属性既不部分依赖于码也不传递依赖于码。所谓传递函数依赖,指的是如果存在"A → B → C"的决定关系,则C传递函数依赖于A。因此,满足第三范式的数据库表应该不存在如下依赖关系: 关键字段 → 非关键字段x → 非关键字段y
3. 什么是主码?什么是外码?
若关系中某一属性组的值能唯一地标识一个元组,而其子集不能,则称该属性组为候选码,若一个关系有多个候选码,则选定其中一个为主码。
如果F是基本关系R的一个或一组属性,但不是关系R的码,Ks是基本关系S的主码。如果F与Ks相对应,则称F是R的外码。
4. 使用索引查询一定能提高查询的性能吗?为什么?
在数据之外,数据库系统还维护着满足特定查找算法的数据结构,这些数据结构以某种方式引用(指向)数据,这样就可以在这些数据结构上实现高级查找算法。这种数据结构,就是索引。
通常,通过索引查询数据比全表扫描要快.但是我们也必须注意到它的代价. 索引需要空间来存储,也需要定期维护, 每当有记录在表中增减或索引列被修改时,索引本身也会被修改. 这意味着每条记录的INSERT,DELETE,UPDATE将为此多付出4,5 次的磁盘I/O. 因为索引需要额外的存储空间和处理,那些不必要的索引反而会使查询反应时间变慢.使用索引查询不一定能提高查询性能
5. 什么是数据模型?什么是规范化?
数据模型是一种标识实体类型及其实体间联系的模型。典型的数据模型有网状模型、层次模型和关系模型。
从关系数据库的表中,除去冗余数据的过程称为规范化。包括:精简数据库的结构,从表中删除冗余的列,标识所有依赖于其它数据的数据
6. 视图技术在数据库设计中很有用
视图是从一个或几个基本表导出的表,视图是一种虚表,它依赖数据源的实表而存在。数据库中只存放视图的定义,而不存放视图对应的数据,这些数据仍存放在原来的基本表中。视图是供程序员使用数据库的一个窗口,能够简化用户的操作,是用户数据保密的一种手段。为了进行复杂处理、提高运算速度和节省存储空间, 视图的定义深度一般不得超过三层。 若三层视图仍不够用, 则应在视图上定义临时表, 在临时表上再定义视图。
如下两种场景一般会使用到视图:
(1)不希望访问者获取整个表的信息,只暴露部分字段给访问者,所以就建一个虚表,就是视图。
(2)查询的数据来源于不同的表,而查询者希望以统一的方式查询,这样也可以建立一个视图,把多个表查询结果联合起来,查询者只需要直接从视图中获取数据,不必考虑数据来源于不同表所带来的差异。
7、数据库的三级模式结构
1)外模式(子模式)是数据库用户能够看见和使用的局部数据的逻辑结构和特征的描述,是数据库用户的数据视图,是与某一应用有关的数据的逻辑表示。外模式通常是模式的子集,一个数据库可以有多个外模式(视图)
2)模式(逻辑模式)是数据库中全体数据的逻辑结构和特征的描述,是所有用户的公共数据视图,一个数据库只有一个模式。(基本表)
3)内模式(存储模式)是数据库物理结构和存储方式的描述,是数据在数据库内部的组织方式。(存储文件)
8、数据字典:是关系数据库管理系统内部的一组系统表,它记录了数据库中所有的定义信息。关系数据库管理系统在执行SQL的数据定义语句时,实际上是在更新数据字典中的相应信息。
9、数据独立性
l 逻辑独立性:当模式改变时,由数据库管理员对各个外模式/模式的映像作相应的改变,可以使外模式保持不变(应用程序是依据数据的外模式编写的,从而应用程序不必修改,保证了数据与程序的逻辑独立性)
l 物理独立性:当数据库存储结构改变时,由数据库管理员对各模式/内模式的映像作相应的改变,可以使模式保持不变,从而应用程序也不必改变,保证了数据与程序的物理独立性。
10、关系与关系模式、关系数据库的区别:关系是关系模式在某一时刻的状态或内容。关系模式是静态的、稳定的,而关系是动态的、随时间不断变化的,因为关系操作在不断地更新着数据库中的数据。关系数据库是以关系模型为基础的数据库,它利用关系来描述现实世界,一个关系既可以用来描述一个实体及其属性,也可以用来描述实体间的联系。
11、触发器:
是一个特殊的存储过程,它的执行不是由程序调用,也不是手工启动,而是由事件触发,比如对一个表进行增删改(insert、delete、update)操作会激活执行它。
自动激活并执行。
12、简述查询优化策略
² 如果一个表达式中多次出现某个子表达式,应该将该子表达式预先计算出结果保存起来,以免重复计算
² 选择运算尽可能先做
² 尽量避免使用select *
² 避免在索引列上使用计算。WHERE子句中,如果索引列是函数的一部分。优化器将不使用索引而使用全表扫描。
² 避免在索引列上使用IS NULL和IS NOT NULL
13、事务:是用户定义的一个数据库操作序列,这些操作要么全做,要么全不做,是一个不可分割的工作单位。(原子性、一致性、隔离性、永久性)
原子性:事务是一个不可分割的整体,整个事务中的所有操作,要么全部完成,要么全部不完成。
一致性:事务的执行结果必须使数据库从一个一致性状态变到另一个一致性状态。
隔离性:一个事务的执行不能被其他事务所干扰,及在多个事务并发执行与各个事务单独执行的结果一样。
持久性:一个事务一旦提交,它对数据库中数据的改变就是永久的。
14、封锁协议
1)一级封锁协议:事务T在修改数据R之前必须先对其加写锁,直到事务结束才释放(避免丢失修改)
2)二级封锁协议:在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加读锁,读完后即可释放读锁(避免丢失修改和读脏数据)
3)三级封锁协议:在一级封锁协议的基础上增加事务T在读取数据R之前必须先对其加读锁,直到事务结束才释放(避免丢失修改、读脏数据、不可重复读)
4)两段锁协议:在对任何数据进行读写操作之前,首先要先申请并获得对该数据的封锁
在释放一个锁之后,事务不再申请和获得任何其他封锁
15、无损联接分解是将一个关系模式分解成若干个关系模式后,通过自然联接和投影等运算仍能还原到原来的关系模式
16.存储过程是可编程的函数,在数据库中创建并保存,可以由SQL语句和控制结构组成。
一、相关概念和知识点
1.数据依赖:反映一个关系内部属性与属性之间的约束关系,是现实世界属性间相互联系的抽象,属于数据内在的性质和语义的体现。
2. 规范化理论:是用来设计良好的关系模式的基本理论。它通过分解关系模式来消除其中不合适的数据依赖,以解决插入异常、删除异常、更新异常和数据冗余问题。
3. 函数依赖:简单地说,对于关系模式的两个属性子集X和Y,若X的任一取值能唯一确定Y的值,则称Y函数依赖于X,记作X→Y。
4. 非平凡函数依赖:对于关系模式的两个属性子集X和Y,如果X→Y,但Y!⊆X,则称X→Y为非平凡函数依赖;如果X→Y,但Y⊆X,则称X→Y为非平凡函数依赖。
5. 完全函数依赖:对于关系模式的两个属性子集X和Y,如果X→Y,并且对于X的任何一个真子集X',都没有X'→Y,则称Y对X完全函数依赖。
6. 范式:指符合某一种级别的关系模式的集合。在设计关系数据库时,根据满足依赖关系要求的不同,定义为不同的范式。
7. 规范化:指将一个低一级范式的关系模式,通过模式分解转换为若干个高一级范式的关系模式的集合的过程。
8. 1NF:若关系模式的所有属性都是不可分的基本数据项,则该关系模式属于1NF。
9. 2NF:1NF关系模式如果同时满足每一个非主属性完全函数依赖于码,则该关系模式属于2NF。
10. 3NF:若关系模式的每一个非主属性既不部分依赖于码也不传递依赖于码,则该关系模式属于3NF。
11. BCNF:若一个关系模式的每一个决定因素都包含码,则该关系模式属于BCNF。
12. 数据库设计:是指对于一个给定的应用环境,构造优化的数据库逻辑模式和物理结构,并据此建立数据库及其应用系统,使之能够有效地存储和管理数据,满足各种用户的应用需求,包括信息管理要求和数据操作要求。
13. 数据库设计的6个基本步骤:需求分析,概念结构设计,逻辑结构设计,物理结构设计,数据库实施,数据库运行和维护。
14. 概念结构设计:指将需求分析得到的用户需求抽象为信息结构即概念模型的过程。也就是通过对用户需求进行综合、归纳与抽象,形成一个独立于具体DBMS的概念模型。
15. 逻辑结构设计:将概念结构模型(基本E-R图)转换为某个DBMS产品所支持的数据模型相符合的逻辑结构,并对其进行优化。
16. 物理结构设计:指为一个给定的逻辑数据模型选取一个最适合应用环境的物理结构的过程。包括设计数据库的存储结构与存取方法。
1.查询中用到的关键词主要包含六个
并且他们的顺序依次为 select--from--where--group by--having--order by
其中select和from是必须的,其他关键词是可选的,这六个关键词的执行顺序 与sql语句的书写顺序并不是一样的,而是按照下面的顺序来执行
from:需要从哪个数据表检索数据
where:过滤表中数据的条件
group by:如何将上面过滤出的数据分组
having:对上面已经分组的数据进行过滤的条件
select:查看结果集中的哪个列,或列的计算结果
order by :按照什么样的顺序来查看返回的数据