数据库课堂笔记

1.char类型就是所有数据都一样长,若与输入的数据与不满长度,只能用空格补充至预设定长度;

2.varchar则输入有多长,最后数据就多长

3.同一属性的数据类型要一致(参照完整性)

4.删除一个数据库

USE 数据库名称;
DROP DATABASE 数据库名称;

课本知识教学

第一章

1.1数据库系统概述

1.1.1四个基本概念

1.数据:数据是数据库中存储的基本对象。

        ·定义:描述事物的符号记录

        ·种类:数字、文字、图形、图像、音频、视频、学生的档案记录等;

        ·数据与语义是不可分的。

2.数据库(DB)

        ·定义:数据库是长期存储在计算机内、有组织的、可共享大量数据的集合。

        ·基本特征:按一定的数据模型组织、描述和存储;可为各用户共享、冗余度较小、数据独立性较高、易扩展

3.数据库管理系统(DBMS)(系统软件)

        ·位于用户与操作系统之间的一层数据管理软件,是一个基础的且大型复杂的软件系统

        ·数据定义功能:提供数据定义语言(DDL),定义数据库中的数据对象

        ·数据组织、存储和管理

4.数据库系统(DBS)

       (包括人和物)           

        数据库系统=数据库+数据库管理系统(及其应用开发工具)+应用程序+数据库管理员

        其中数据库管理系统是数据库系统的核心。

1.1.2数据管理技术的产生和发展

1.人工管理阶段

2.文件系统阶段

3.数据库系统阶段

1.2数据模型(重点考)

1.2.1两类数据模型

一、概念模型

        也称为信息模型,按用户的观点来对数据和信息建模,用于数据库设计。

        

二、逻辑模型和物理模型(数据模型)

        主要包括网状模型、层次模型、关系模型、面向对象数据模型、对象关系数据模型、半结构化数据模型等。其中物理模型是对数据最底层的抽象,在磁盘或磁带上的存储方式和存取方式。

 1.2.2概念模型

1.信息世界中的基本概念

(1)实体

        客观存在且可互相区别的事物称为实体。可以具体也可以抽象。

(2)属性

        实体所具有的某一特性称为属性。

(3)码(key)

        唯一标识实体的属性称为码。(一个实体可具有多个属性)

(4)实体型

(5)实体集

        同一类型实体的集合。

(6)联系

        ·实体内部的联系通常指组成实体的各属性之间的联系

        ·实体之间的联系通常是指不同实体集之间的联系。

        ·实体之间的联系有一对一、一对多和多对多等。

2.概念模型的一种表示方法:实体-联系法

        该方法用E-R图,E-R方法也称为E-R模型。

        ·一对多联系转为多方的关系模型

        ·多对多联系转为关系模型(主码有俩?)

1.2.3数据模型的组成要素

        (1)数据结构

                描述数据库的组成对象以及对象之间的关系。

        (2)数据操作

                对数据库中各种对象(型)的实例(值)允许执行的操作的集合,包括操作及有关的操作规则。

        (3)数据的完整性约束条件

                数据的完整性约束条件是一组完整性规则。

1.2.4常用的数据模型

        主要的逻辑数据模型有:

                ·层次模型

                ·网状模型

                ·关系模型(会考ER转关系模型)

1.2.7 关系模型

        用二维表来表示数据,表≈关系

        ·关系:一个关系对应一张表

        ·元组:表中的一行是一个元组

        ·属性:表中的一列是一个属性

        ·码:码键。表中某个属性组,可唯一确定一个元组。

        ·域:一组具有相同数据类型的值的结合。属性的取值范围来自某个域。

        ·分量:元组中的一个属性值。

        ·关系模型:对关系的描述,一般表示为

                关系名(属性1,属性2,...,属性n)

关系模型要求必须是规范化的,关系的每一个分量必须是一个不可分的数据项。

1.3数据库系统的结构

1.3.1数据库系统模式的概念

        “型”和“值”的概念

                ·型:对某一类数据的结构和属性的说明(对数据库的描述)

                ·值:是型的一个具体赋值(数据库的内容)

        模式

                ·数据库逻辑结构和特征的描述

                ·是型的描述,不涉及具体值

                ·反映的是数据的结构及其联系

                ·模式是相对稳定的

        实例

                ·模式的一个具体值,同一个模式可以有很多个实例

                ·反映数据库某一时刻的状态

                ·同一个模式可以有很多实例

                ·实例随数据库中的数据的更新而变动

1.3.2数据库系统的三级模式结构

        1.模式(全局模式/逻辑模式)

                数据库中全体数据的逻辑结构和特征的描述,所有用户的公共数据视图

             模式的定义:

                ·数据的逻辑结构(数据项的名字、类型、取值范围)

                ·数据之间的联系

                ·数据有关的安全性、完整性要求

             模式的地位:是数据库系统模式结构的中间层

                 ·一个数据库只有一个模式

                ·对数据库集体描述

                ·与数据的物理存储细节和硬件环境无关

                ·与具体的应用程序、开发工具及高级程序设计语言无关

        2.外模式(子模式/用户模式)

               数据库用户(包括程序员和最终用户)使用的局部数据的逻辑结构和特征的描述

                ·可以有多个
               ·数据库用户的数据视图,是与某一应用有关的数据的逻辑表示

模式与外模式的关系:一对多

        ·外模式通常是模式的子集

        ·一个数据库可以有多个外模式。

        ·对模式中同一数据,在外模式中的结构、类型、长度、保密级别都可以不同。

        3.内模式(物理模式/存储模式)

                ·是数据物理结构和存储方式的描述

                ·是数据在数据库内部的组织方式

(记录的存储方式(例如,顺序存储,按照B树结构存储,按hash方法存储等) 索引的组织方式 数据是否压缩存储 数据是否加密 数据存储记录结构的规定)

                ·一个数据库只有一个内模式

1.3.3 数据库的二级映像功能与数据独立性

三级模式是对数据的三个抽象级别

二级映像在数据库管理系统内部实现这三个抽象层次的联系和转换

        1.外模式/模式映像

                ·每一个外模式,数据库系统都有一个外模式/模式映像;

                ·映像定义通常包含在各自外模式的描述中

                ·数据的逻辑独立性

                        ·当模式改变时,有数据库管理员对各个外模式/模式的映像作相应的改变,可以使外模式保持不变。

                        ·应用程序是依据数据的外模式编写,应用程序不必修改,保证了数据与程序的逻辑独立性。

        2.模式/内模式映像

                ·定义了数据全局逻辑结构与存储结构之间的对应关系。

                ·数据库中模式/内模式映象是唯一的

                ·该映象定义通常包含在模式描述中

                ·数据的物理独立性

                        ·当数据库的存储结构改变了(例如选用了另一种存储结构),数据库管理员修改模式/内模式映象,使模式保持不变。

                        ·应用程序不受影响。保证了数据与程序的物理独立性,简称数据的物理独立性。

数据库的模式

1.全局逻辑结构是数据库的中心与关键

2.独立于数据库的其他层次

3.设计数据库模式结构时应首先确定数据库的逻辑模式

数据库的内模式

1.依赖于它的全局逻辑结构

2.独立于数据库的用户视图,即外模式

3.独立于具体的存储设备  

4.将全局逻辑结构中所定义的数据结构及其联系按照一定的物理存储策略进行组织,以达到较好的时间与空间效率

数据库的外模式

1.面向具体的应用程序

2.定义在逻辑模式之上

3.独立于存储模式和存储设备

4.当应用需求发生较大变化,相应外模式不能满足其视图要求时,该外模式就得做相应改动

5.设计外模式时应充分考虑到应用的扩充性

特定的应用程序

1.在外模式描述的数据结构上编制的

2.依赖于特定的外模式

3.与数据库的模式和存储结构独立

4.不同的应用程序有时可以共用同一个外模式

数据库的二级映像

1.保证了数据库外模式的稳定性

2.从底层保证了应用程序的稳定性,除非应用需求本身发生变化,否则应用程序一般不需要修改

第二章

2.1关系数据结构及形式化定义

数据模型三要素:关系数据模型由关系数据结构、关系操作集合和关系完整性约束条件组成。

2.1.1关系(二维表,是有限集合)

        1.域:一组具有相同数据类型的值的集合

        2.笛卡尔积:给定一组域,允许其中某些域是相同的。D1XD2X....XDN。所有域的所有取值的一个组合。不能重复

                笛卡尔积中每一个元素(d1,d2,...,dn)叫作一个n元组或简称元组。

                笛卡尔积可表示为一个二维表,表中每行对应一个元组,表中每列对应一个域。

        3.关系

           (1)

                D1×D2×…×Dn的子集叫作在域D1,D2,…,Dn上的关系,表示为:

                                        R(D1,D2,…,Dn)          

                R:关系名

                n:关系的目或度

                关系是笛卡尔积的子集。

         (2)元组:关系中每个元素是关系中的元组,通常用t表示

         (3)单元关系与二元关系

                当n=1时,是单元关系或一元关系;当n=2时,二元关系。

          (4)属性

                 关系中不同列可以对应相同的域,为了加以区分,必须对每列起一个名字,称为属性。n目关系有n个属性。

          (5)码

                ·候选码:若关系中的某一属性组的值能唯一地标识一个元组,则称该属性组为候选码。(不唯一,有最小性)

                ·全码:关系模式所有属性组是这个关系模式的候选码

                ·主码:若一个关系有多个候选码,选定一个作为主码(任意性)

                ·主属性:候选码的诸属性称为主属性,不包含在任何候选码中的属性称为非主属性或非码属性。

          (6)三类关系

                ·基本关系(基本表或基表):实际存在的表,是实际存储数据的逻辑表示

                ·查询表:查询结果对应的表

                ·视图表:由基本表或其他视图表导出的表,是虚表,不对应实际存储的数据

           (7)基本关系的六条性质

                1.列是同质的。

                2.不同列可出自同一个域。

                3.行、列均无顺序性:顺序可以任意交换。

                4.任意两个元组的候选码不能相同。

                5.分量必须取原子值,即每一个分量都必须是不可分的数据项。(不允许表中有表)

  

2.2关系操作

2.2.1基本的关系操作

        常用的关系操作:(1)查询操作(读):选择、投影、连接、除、并、差、交、笛卡尔积

                                           其中,选择、投影、并、差、笛卡尔积是物种基本操作(无法被替代)

                                        (2)数据更新(写):插入、删除、修改

        关系操作的特点:

                集合操作方式:操作的对象和结果都是集合,一次一集合的方式。

2.3关系的完整性

        实体完整性参照完整性:是关系模型必须满足的完整性约束条件,即关系的两个不变性,有关系系统自动支持。

        用户自定义完整性:应用领域需要遵循的约束条件,体现了具体领域中的语义约束。

2.3.1实体完整性

·若属性A是基本关系R的主属性,则主属性A不能取空值

·实体完整性规则说明

(1)实体完整性规则是针对基本关系而言的。一个基本表通常对应现实世界一个实体集。

(2)现实世界中的实体是可区分的,即它们具有某种唯一性标识。

(3)关系模型中以主码作为唯一性标识。

(4)主码中的属性即主属性不能取空值。

2.3.2参照完整性

1.关系间的引用

        在关系模型中实体及实体间的联系都是用关系来描述的,自然存在着关系与关系间的引用。

2.外码

        设F是基本关系R的一个或一组属性,但不是关系R的码。如果F与基本关系S的主码Ks相对应,则称F是R的外码。

        基本关系R称为参照关系;基本关系S称为被参照关系或目标关系。

        ·关系R和S不一定是不同的关系;

        ·目标关系S的主码Ks和参照关系的外码F必须定义在同一个(或一组)域上;

        ·外码不一定要与相应的主码同名。当外码与相应的主码属于不同关系时,往往取相同的名字,以便于识别。

3.参照完整性规则(好难理解)

        若属性F是基本关系R的外码它与基本关系S的主码Ks相对应(基本关系R和S不一定是不同的关系),则对于R中每个元组在F上的值必须为:

        ·或取空值(F的每个属性值均为空值)

        ·或等于S中某个元组的主码值

·一个参照完整性将两个表中的相应元组联系起来。

·对被参照表和参照表进行增删改操作时有可能破坏参照完整性,必须进行检查。

参照完整性的总结概括如下:

1.提供的是被参照的;

2.参照别人的在参照关系中时外码;

3.外码(指参照关系中的属性)取值是被参照关系中出现过的,但外码也可以是空的

4.什么会破坏参照完整性呢?

        (1)对参照关系进行插入/修改;

        (2)对被参照关系进行修改/删除。

5.对4的应对措施(参照完整性的违约处理):

        (1)拒绝执行;

        (2)级联操作;

        (3)设置为空值;

2.3.3用户定义的完整性

        ·针对某一具体关系数据库的约束条件,反映某一具体应用所涉及的数据必须满足的语义要求;

        ·关系模型应提供定义和检验这类完整性的机制,以便用统一的系统的方法处理它们,而不需由应用程序承担这一功能;

简而言之的举例:

        学号---》实体完整性

        学号位数---》用户自定义完整性

2.4关系代数

        关系代数是一种抽象的查询语言,他用对关系的运算来表达查询。

        运算对象是关系,结果也是关系。

        

·投影可以自动去掉重复元组

·连接:(1)自然连接;(2)等值连接;(3)自身连接;(4)外连接;(5)左外连接;(6)右外连接

(1)自然连接:相同属性的连在一起,去掉重复属性,没有的也去掉;(特殊的等值连接)

(2)等值连接:和自然连接相比多了重复的属性列;θ为“=”;

(3)自身连接:类似笛卡尔积,同一表内不同行之间进行连接操作。

(4)外连接:相同属性值相连,去掉重复列,没有的地方用NULL填充;

(5)左外连接:左外连接返回左表中所有的行,以及右表中满足连接条件的行。如果右表中没有匹配的行,则返回 NULL 值。

(6)右外连接:右外连接返回右表中所有的行,以及左表中满足连接条件的行。如果左表中没有匹配的行,则返回 NULL 值。

·除运算:要包含全部相集(除数的全部相集) 。通常在查询“全部”时会用到。

第三章

3.1 SQL概述

3.1.2 SQL的特点

1.综合统一;

2.高度非过程化;(不用算法,只用指令即可)

3.面向集合的操作方式;(一次一集合)

4.以同一种语法结构提供多种使用方式;(嵌入式)

5.语言简洁,易学易用

3.3 数据定义

3.3.1 基本表的定义、删除与修改

1.PRIMARY KEY主码

2.UNIQUE 约束,表示属性值唯一

3.FOREIGN KEY(外码)REFERENCES 被参照表(被参照列)

##建立一个“课程”表Course
	CREATE TABLE Course
          (Cno   CHAR(4) PRIMARY KEY,
           Cname  CHAR(40) UNIQUE,            
           Cpno     CHAR(4),               	                      
           Ccredit  SMALLINT,
           FOREIGN KEY (Cpno) REFERENCES  Course(Cno) 
          ); 

##建表,用户自定义完整性
Create table player  --球员表
{
   nation char(20),  --代表国
   number int  check (number between 1 and 23 ) ,   --号码
   name char(20),   --姓名
   age int, --年龄
   position char(10)  check (position in (‘守门员‘, ‘后卫’,’中场’,’前锋’ )),     --位置
   primary key (nation,number),  –定义主码
}
##定义多个主码
Create table join  --参加表
{
  nation char(20),  --代表国
  number int ,     --号码
  matchid  int,  --比赛编号
  time int, check (time between 0 and 120 ) , --出场时间
  goal int         --进球数
  primary key (nation,number,matchtype)  –定义主码
  foreign key (nation,number)  references  player (nation,number)
  foreign key (matchid)  references  match (matchid)
} 

4.修改基本表

 ALTER TABLE <表名> [ ADD[COLUMN] <新列名> <数据类型> [ 完整性约束 ] ]

[ ADD <表级完整性约束>]

[ DROP [ COLUMN ] <列名> [CASCADE| RESTRICT] ]

[ DROP CONSTRAINT<完整性约束名>[ RESTRICT | CASCADE ] ]

[ALTER COLUMN <列名><数据类型> ] ;

 <表名>是要修改的基本表

·ADD子句用于增加新列新的列级完整性约束条件新的表级完整性约束条件

·DROP COLUMN子句用于删除表中的列

        ·如果指定了CASCADE短语,则自动删除引用了该列的其他对象

        ·如果指定了RESTRICT短语,则如果该列被其他对象引用,关系数据库管理系统将拒绝删除该列

·DROP CONSTRAINT子句用于删除指定的完整性约束条件

·ALTER COLUMN子句用于修改原有的列定义,包括修改列名和数据类型

5.删除基本表

     DROP TABLE <表名>[RESTRICT| CASCADE];

RESTRICT:删除表是有限制的。

        ·欲删除的基本表不能被其他表的约束所引用

        ·如果存在依赖该表的对象,则此表不能被删除

CASCADE:删除该表没有限制。

        ·在删除基本表的同时,相关的依赖对象一起删除

3.3.2 索引的建立与删除

建立索引的目的:加快查询速度

语句格式 CREATE [UNIQUE] [CLUSTER] INDEX <索引名> ON <表名>(<列名>[<次序>][,<列名>[<次序>] ]…);

·<表名>:要建索引的基本表的名字

·索引:可以建立在该表的一列或多列上,各列名之间用逗号分隔

·<次序>:指定索引值的排列次序,升序:ASC,降序:DESC。缺省值:ASC

·UNIQUE:此索引的每一个索引值只对应唯一的数据记录

·CLUSTER:表示要建立的索引是聚簇索引

一张表只能有一个聚速索引

·ALTER INDEX <旧索引名> RENAME TO <新索引名>

·DROP INDEX <索引名>;

3.4 数据查询

1. between and是闭区间;

2. %代表任意长度,_代表单个字符;

3.集合查询操作主要包括:并操作UNION(输出要相同)、交操作INTERSECT和差操作EXCEPT。

UNION ALL保留重复元组。

3.5 数据更新

1. 插入元组

INSERT

INTO <表名>[(<属性列1>....)]

VALUES(<变量1>.....);

2. 修改数据 

 UPDATE<列名>

SET<列名>=<表达式>...

[WHERE<条件>];

3. 删除数据

 DELETE

FROM <表名>

[WHERE<条件>];

3.7 视图(安全性+独立性)

视图的特点:

1.虚表,是一个或几个基本表(或视图导出的表)

2.只存放视图的定义,不存放视图对应的数据

3.基表中的数据发生变化,从视图中查询出的数据也改变

4.表可以创建视图,视图也可以建视图,但视图不建表

5.在视图插入元组,元组可插入基本表中(实际是对底层基本表操作)

3.7.1 定义视图

1.建立视图

CREATE  VIEW  <视图名>  [(<列名>  [,<列名>]…)]

AS  <子查询>

[WITH  CHECK  OPTION];(对视图更新时是否检查)(确保符合预期)

####建立信息系选修了1号课程的学生的视图(包括学号、姓名、成绩)。
CREATE VIEW IS_S1(Sno,Sname,Grade)
AS 
SELECT Student.Sno,Sname,Grade
FROM  Student,SC
WHERE  Sdept= 'IS' AND
       Student.Sno=SC.Sno AND
       SC.Cno= '1';

行列子集视图: 

        若一个视图是从单个基本表导出的,并且只是去掉了基本表的某些行和某些列,但保留了主码,我们称这类视图为行列子集视图

只有行列子集视图肯定能更新。

2. 删除视图

DROP  VIEW  <视图名>[CASCADE];

·该语句从数据字典中删除指定的视图定义

·如果该视图上还导出了其他视图,使用CASCADE级联删除语句,把该视图和由它导出的所有视图一起删除

·删除基表时,由该基表导出的所有视图定义都必须显式地使用DROP VIEW语句删除

3.7.2 查询视图
3.7.3 更新视图(不是所有视图都能更新)
3.7.4 视图的作用(简答题)

1.视图能够简化用户的操作

2.视图使用户能以多种角度看待同一数据

3.视图对重构数据库提供了一定程度的逻辑独立性

4.视图能够对机密数据提供安全保护

5.适当的利用视图可以更清晰的表达查询

第四章

4.1 数据库安全性概述

4.1.2 安全标准简介

4.2 数据库安全性控制

4.2.3 自主存取控制方法

·通过SQL的GRANTREVOKE语句实现

·用户权限由数据对象和操作类型组成

4.2.4 授权:授予与收回

1.GRANT 

GRANT语句的一般格式:

GRANT <权限>[,<权限>]...

ON <对象类型> <对象名>[,<对象类型> <对象名>]…

TO <用户>[,<用户>]...  

[WITH GRANT OPTION];(表示允许将此权限在授予其他用户)

语义:将指定操作对象的指定操作权限授予指定的用户

WITH GRANT OPTION子句:

        ·指定:可以再授予

        ·没有指定:不能传播

1.把查询Student表权限授给用户U1

 GRANT SELECT
ON TABLE Student
TO U1



2.把对Student表和Course表的全部权限授予用户U2和U3
GRANT ALL PRIVILIGES
ON TABLE student,course
TO U2,U3



3.把对表SC的查询权限授予所有用户
GRANT SELECT
ON TABLE SC
TO PUBLIC


4.把查询Student表和修改学生学号的权限授给用户U4
GRANT UPDATE(Sno),SELECT
ON TABLE student
TO U4



5.把对表SC的INSERT权限授予U5用户,并允许他再将此权限授予其他用户
GRANT INSERT
ON TABLE SC
TO U5
WITH GRANT OPTION

2. REVOKE(回收权限)

REVOKE语句的一般格式为:

REVOKE <权限>[,<权限>]...

ON <对象类型> <对象名>[,<对象类型><对象名>]…

FROM <用户>[,<用户>]...[CASCADE | RESTRICT];

·CASCADE级联收回了其他表的相应权限

4.3 视图机制

先创视图,然后写授权,把功能先转视图(?)

例1、 建立计算机系学生的视图,把对该视图的SELECT权限授于王平,把该视图上的所有操作权限授于张明 

         先建立计算机系学生的视图CS_Student
              CREATE VIEW CS_Student
    AS 
    SELECT  *
    FROM   Student
    WHERE  Sdept='CS';
在视图上进一步定义存取权限
     GRANT  SELECT
     ON  CS_Student  
     TO 王平;
     
     GRANT ALL PRIVILIGES
     ON  CS_Student  
     TO  张明; 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值