计算机三级

您所在的位置:网站首页 计算机考试主要考哪些内容 计算机三级

计算机三级

2024-07-17 06:09| 来源: 网络整理| 查看: 265

计算机三级——数据库技术 一、考试内容及要求 掌握数据库技术 的基本概念、原理、方法和技术。能够使用SQL语言实现数据库的基本操作(增删改查)基本数据库系统安装配置以及数据库管理及维护的基本技能。掌握数据库管理和维护的方法。掌握数据库性能优化的方法。了解数据库系统的生命周期及设计和开发过程。了解常用的数据库管理和开发工具,具备用指定的工具管理开发简单数据库应用系统的能力。了解数据库的最新发展。 二、考试题型 选择题——30小题(40分);应用题(填空题)——10小题(30分);设计与应用题——三大题(30分)。画E-R图(考试带有工具 ),范式,SQL语句 三、考试环境

1.软件:SQL service 2008

2.只需在正确答案的前面选中即可(都为单选题) ,在应用题中一空可能会有多个答案选项,在填写答案时要全部写上且要用顿号(、)隔开

3.考试时间为120分钟(上机考试 ),考试结束前5分钟系统会报警提醒考生存盘,考试时间为0自动交卷。

第一章 数据库应用系统开发方法

①掌握数据库的基本概念。

②了解软件工程和数据库技术

③理解DBAS生命周期模型

第一节 基本概念 1.数据

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

​ 定义:描述事物的符号序列。

​ 数据的种类:数字、文字、图形、图像声音以及其他特殊符号。

2)计算机中的数据分为两个部分:①临时性数据(程序运行时产生的数据,保存在内存中,内存在断电时所有的数据都回消失);②持久化数据(存储在磁盘中的数据)

3)数据有型和值的划分

​ 型表示数据的类型(例如整型,字符型等等);值表示给出了符合给定型的值。

2.数据库(DataBase)——DB 1)数据的集合,**具有统一的结构形式并存放在统一存储介质中**,是多种应用数据的集成,可被多个应用程序所共享。

​ 2)按照数据提供的数据模式存储

​ 3)数据库的体现——二维表

3、数据库应用系统——DBAS

​ 组成:数据库系统,应用程序,应用界面

第二节 软件工程与数据库技术 一)定义

​ 软件工程是由工程、科学和数学的原则与方法来开发和维护计算机软件的相关技术和管理方法。

​ 组成:软件工程由方法、工具、过程组成——这就是软件工程的三要素。

二)软件生命周期

​ 定义:一般来说,软件产品从定义开始,经过开发、使用和维护,直到退役的全过程称为软件生命周期。

三)数据库工程

​ 1、数据库应用系统的开发本身就是软件工程但是又有自己的特点,所以特称为数据库工程。数据库工程分为两个部分:①数据库设计;②是数据库相应的应用的设计与实现

​ 2、数据库应用系统的设计开发必须要有软件过程模型作为指导

​ 3、典型的软件开发模型:瀑布模型、快速原型模型、螺旋模型、增量模型等等

第三节 DBAS的生命周期模型

​ 1、参照软件开发模型的瀑布模型,DBAS的生命周期模型有项目规划、需求分析、系统设计、系统实现与部署、运行管理与维护。

​ 2、根据DBAS的软件组成和各自的功能,数据组织与存储设计(后台)、数据访问与处理设计、应用设计三条设计主线,分别用于设计数据库、数据库事务和应用程序。

​ 3、根据数据库三级模式(外模式,概念模式(模式),内模式),DBAS设计阶段分为概念设计,逻辑设计和物理设计三个步骤。

​ DBAS生命周期模型图

QQ截图20210215103413

​ 4、规划与分析的主要工作内容:系统规划与定义、可行性 分析、项目规划

QQ截图20210215104024

5、需求分析(干什么)的主要工作:数据需求分析。功能需求分析、性能需求分析、其他需求分析。

QQ截图20210215104518

6、系统设计(怎么干)

QQ截图20210215105022

第一章例题

(1)下列属于数据库设计内容的是 ( B )

A.需求分析和维护

B.概念结构设计和逻辑结构设计

C.功能设计和测试用例设计

D.结构设计和行为设计

(2)下列不属于DBAS可行性分析的是 ( C )

A技术可行性

B操作可行性

C.结构可行性

D.经济可行性

(3)下列不属于运行维护工作的是 ( C )

A.系统监控

B系统性能优化

C.应用系统重写

D.系统升级

(4) 第四题答案为 A

QQ截图20210215161838

(5) 第五题答案为 B

QQ截图20210215161943

(6)第六题答案为 A

QQ截图20210215162142

(7)第七题答案为 D

QQ截图20210215162251

第二章 需求分析 了解需求分析的概念和获取需求的方法了解需求建模的方法结构化分析案例——教材购销系统 第一节 需求分析的概念 一、概念和需求获取

1、需求:是指用户对软件的功能和性能的要求,就是用户想要软件干什么,完成什么样的功能,达到什么性能。

2、需求分析是计算机系统的软件功能分配和软件设计之间起重要桥梁作用的软件工程活动。描述待开发的系统要完成的功能。

​ 需求分析时指明软件和系统其他元素的接口并建立软件必须要满足的的约束。

3.注意:①软件功能越复杂,需求分析的工作就越复杂;②用户需求的不明确性导致需求的可变性,从而导致需求分析工作的复杂;③软件产品的不可见性——即开发人员对具体的需求不了解(例如在开发人员开发系统时不了解取款机取款三次密码错误就会吞卡等等)。

QQ截图20210215165012

4、需求获取的方法

①面谈

QQ截图20210215193704

②实地观察——在别人已有的产品或者产品对换环境有依赖时;

QQ截图20210215193854

③问卷调查——访谈对象多时且需要许多的细节问题需要了解时,时间尽可能的短,最好是单选题且有自己的答案;

④查阅资料——向对象公司借阅他们的资料了解

二、需求分析

1、需求分析的过程(该步骤建立在已经获取了需求的基础上)

①标识问题—>②建立需求模型—>③描述需求—>④确认需求

QQ截图20210215194646

2、需求分析的方法

1)结构化分析及建模方法(SAD)——如DFD模型(数据流图)、IDEF模型;

​ ①注意:结构化分析及设计方法是瀑布模型的首次实践。

​ ②结构化分析的任务:建立分析模型—>编写需求规格说明书(SRS)—>结构化分析的指导思想(抽象与分解)

​ 注意SA表示结构化分析

QQ截图20210215200208

2)面向对象分析和建模方法(OOA)——UML用例建模(第五章讲)

3、DFD需求建模方法——核心是数据流。

QQ截图20210215200938

1)DFD的常用图形符号

QQ截图20210215204159

2)数据流(数据流动的方向)——数据在系统内传播的路径,因此由一组成分固定的数据组成;就是流动中的数据,由名词或者名词短语来命名。

QQ截图20210215204500

3)数据源和数据加工(处理)

QQ截图20210215205515

4)注意:DFD图(数据流程图)主要是对功能进行建模,就是业务流程

5)DFD图(数据流程图)的具体建模的过程和步骤:明确目标和确定系统边界(将用户对目标系统的功能需求完整、准确、一致的描述出来 )—>建立顶层DFD图 (顶层DFD只有一张),顶层DFD是对系统的一个大概的概括,没有具体的细节,说明系统的边界(系统的输入和输出)——>构建第一层DFD分解图(中间层DFD )——>开发DFD层次结构图(底层DFD原则:保持均匀的深度模型,按困难程度进行选择),由不可再分的过程组成。

6)确认DFD的五条规则:

QQ截图20210215211217

4、常用的IDEF0~IDEF4:

①IDEF0:描述系统功能及其相互关系

②IDEF1:系统信息及其数据的关系

③IDEF2:系统模拟,动态建模

④IDEF3:过程描述及获取方法

⑤IDEF4:面向对象设计

5、UML用例模型

QQ截图20210215211808

★例题:

1)教材购销系统:

QQ截图20210215212105

解答:顶层DFD

QQ截图20210215212905

中间层和底层DFD

QQ截图20210215212931

2)

QQ截图20210215213239

3)

QQ截图20210215213357

4)

QQ截图20210215213449

5)

QQ截图20210215214053

第三章 数据库结构设计 第一节 数据库概念设计

数据库概念设计是数据库设计的核心环节。通过对用户的需求进行综合、归纳与抽象,形成一个独立于DBMS的概念模型。

一、数据库概念设计的目标

QQ截图20210221144655

二、概念设计的依据与过程

一)依据

​ 数据库概念设计以需求分析的结果为依据,即需求说明书、DFD图以及在需求阶段收集到的应用领域中的各类报表。

二)结果

​ 概念设计的结果是概念模型(E-R图)以及概念设计说明书。

三)过程

​ ①明确建模目标(模型覆盖范围);②定义实体集(自底向上识别和定义实体);③定义联系(实体间的关联关系);④建立信息模型(构建ER模型);⑤确定实体的属性(属性描述实体的特征和性质);⑥对信息模型进行集成与优化(检查和消除命名不一致、结构不一致)

​ 概念模型是对现实世界的抽象和模拟。

四)概念模型设计

​ 概念设计目前采用的最广泛的是E-R建模方法。将现实世界抽象为具有属性的实体及联系。

五)与E-R建模有关的的概念

​ 1)实体:客观存在并可相互区分的事物叫实体;实体集:同型实体的集合称之为实体集;属性:实体具有的某一特性,一个实体具有若干个属性来刻画,每个属性的取值范围称为域(用来描述实体的性质和特征);码或键:实体集中唯一标识每个实体的属性或属性组合;主键或主码:用来区别同一个实体集不同实体的键(主码的值不能相同)。

​ 2)联系:描述实体间的相互关系;联系集:同类联系的集合称之联系集 ;三类联系:一对一(1:1)、一对多(1:n)、多对多(m:n)

IDEF1X是数据建模的方法

第二节 数据库逻辑设计 一)逻辑设计的任务

​ 将概念模型(ER图)转换为DBMS支持的数据模型(关系模型),并对其进行优化。

二)数据模型

​ 有三种:层次模型、网状模型、关系模型(当前最流行的数据模型)

三)关系模型

​ 关系模型用二维表来表示;关系的描述称为关系模式;关系模式由五部分组成,即五元组:R(U,D,DOM,F)

捕获

​ E-R图到关系模式的转换:

1

四)关系数据库数据的核心是关系模式的设计

2

五)数据依赖

3

六)数据依赖的类型

​ ①函数依赖(Functional Dependency,FD)

这种依赖关系类似于数学中的函数y=f(x),自变量x确定之后,相应的函数值y也就唯一地确定了。

如关系:公民(身份证号,姓名,地址,工作单位)

身份证号一确定,则其地址就唯一确定,因此地址函数依赖身份证号。而姓名一确定,不一定能确定地址。

​ ②多值依赖(Multivalued Dependency,MD)

教师号可能多值依赖课程号,因为给定一个(课程号,参考书号)的组合,可能有对应多个教师号。这是因为多个老师可以使用相 同或不同的参考书上同一门课。

简单点讲,函数就是唯一确定的关系;多值依赖却不能唯一确定。

七)函数依赖的几种特例

1、平凡函数依赖与非平凡函数依赖

如果X→Y,且Y ⊄ X,则X→Y 称为非平凡函数依赖。

若Y ⊆ X ,则称X→Y为平凡函数依赖。

由于Y ⊆ X 时,一定有X→Y,平凡函数依赖必然成立,没有意义,所以一般所说的函数依赖总是指非平凡函数依赖。

举例:

例:Sno代表学生的学号,Cno代表课程号,Grade代表成绩。

在关系 SC(Sno, Cno, Grade)中,

非平凡函数依赖:(Sno, Cno)→Grade 即Grade不包含于(Sno, Cno)

平凡函数依赖:(Sno, Cno)→Sno 即Sno包含于(Sno, Cno)

​ (Sno, Cno)→Cno

2、完全函数依赖与部分函数依赖

如果X→Y ,且对于任何X’ ⊂ X,都有X’

Y,则称y完全依赖于x,记作X->Y(箭头上有个大写f)。

如果X→Y,但Y不完全依赖于X,则称Y部分函数依赖于X,记作X->Y(箭头上有个大写P)。

例:选课(学号,课程号,课程名,成绩)

(学号,课程号) X->Y(箭头上有个大写f) 成绩 即(学号,课程号)两者都为主键且共同决定成绩,缺一不可

(学号,课程号)X->Y(箭头上有个大写P) 课程名 因为课程号→课程名 即(学号,课程号)两者都为主键且课程号可以单独决定课程名。

推论:如果X→Y ,且X是单个属性,则X->Y(箭头上有个大写f)

3、传递函数依赖

如果X→Y , Y→Z,且Y 不包含于X, Y 不依赖 X,则称Z传递函数依赖于X。记作X 传递→Z 。

例:学生(学号,姓名,系名,系主任)

显然系主任传递函数依赖于学号,因为学号→系名,系名→系主任

思考题:已知关系模式R(学生学号,课程名,学生专业号,专业名,成绩),说出下面是什么关系?

(学生学号,课程名,学生专业号) 成绩 (部分函数依赖)

学生学号 专业名 (传递函数依赖)

(学生学号,专业名) 成绩 (不是依赖关系)

(学生学号,课程名) 成绩 (完全函数依赖)

(课程名,专业名,成绩) (课程名,成绩) (平凡函数依赖)

八)数据规范化

关系数据库的设计主要是关系模式设计。关系模式设计的好坏直接影响到数据库设计的成败。将关系模式规范化,是设计较好的关系模式的惟一途径。

关系模式的规范化主要是由关系范式来完成的。

关系模式的规范化:把一个低一级的关系模式分解为高一级关系模式的过程。

关系数据库的规范化理论是数据库逻辑设计的工具。

目的:尽量消除插入、删除异常,修改复杂,数据冗余的问题。

九)范式

范式:关系模式满足的约束条件称为范式。根据满足规范化的程度不同,范式由低到高分为1NF,2NF,3NF,BCNF,4NF,5NF。

①1NF:如果关系模式R,其所有属性都是不可再分的基本数据项,则称R属于第一范式,R∈1NF。1NF要求数据库表中的字段都是单一属性的,不可再分。即元素具有原子性。

②2NF:如关系模式R∈1NF,且每个非主属性完全函数依赖于主码,则称R属于第二范式,R∈2NF。2NF要求实体的属性完全依赖于 主关键字。首先关系要满足第一范式。

例:判断R (学号,姓名,年龄,课程名称,成绩,学分)是否属于第二范式。

​ 主码:(学号,课程名称)

非主属性:姓名,年龄,成绩,学分

​ 存在如下决定关系:  (学号, 课程名称)→(姓名,年龄,成绩,学分)   但(课程名称)→(学分)

(学号)→(姓名, 年龄)所以R不属于2NF

​ ③第三范式:如果关系模式为2NF,并且R中的每个非主属性不传递依赖于R的主键,则称关系R是是属于第三范式,即R∈2NF。

​ 范式之间的关系:

范式

十)数据库逻辑模型的产生(ER图转换为关系模式)

​ ①一个实体转换成一个关系模式;②一个1:1联系可以转换为一个独立的关系模式,也可以于任意一端对应的关系模式合并;

​ ③一个1:n联系可以转化为一个独立的关系模式,也可以于n端对应的关系模式合并;④一个n:m转换为一个关系模式;⑤三个或三个以上实体的多元联系转换为一个关系模式;⑥同一实体集实体间的联系可以按照1:1、1:n、n:m三种情况进行处理。

举例:

​ ①1:1联系的E-R图转换为关系模式较为简单,不在列举,总共有情况;

​ ②1:n联系的E-R图转换为关系模式,有两种方案;

45

​ 方案一:仓库(仓库号、地点、面积)、产品(产品号、产品名、价格)、仓储(仓库号、产品号、数量)

​ 方案二:仓库(仓库号、地点、面积)、产品(产品号、产品名、价格、仓库号、数量)

③m:n联系的E-R图转换为关系模式,有一种方案;

888

方案一:学生(学号、姓名、年龄、性别)、课程(课程号、课程名、学时数)、选修(学号、课程号、成绩)

④三个及三个以上实体:

67

78

⑤同实体集1:n联系转换为关系模式

66

uu

第三节 数据库物理设计 1、物理设计概述

​ 数据库物理设计是设计数据库的存储结构和物理实现方法。

​ 目的:将数据的逻辑描述转换为技术规范,设计数据存储方案以便提供足够的好的性能以便确保数据库数据的完整性、安全性、可靠性

2、数据库的物理结构

​ 一)①物理设备上的存储结构与存取方法称为数据库的物理结构;②数据库中的数据一文件形式存储在外存储介质上。

​ 二)数据库的物理结构设计需要解决的问题:文件组织、文件结构、文件存取、索引技术

3、索引——数据库持久化设计(数据的存取)

​ 1)①索引是数据库中独立的存储结构其作用是提供一种无须扫描每个页面(存储表格数据的物理块)而快速访问数据页的方案。 ​ ②索引技术(Indexing)是一种快速数据访问技术

​ ③索引技术的关键:建立记录域取值到记录的物理地址间的映射关系,即索引。

​ ④索引能够提高性能(减少时间),但是需要付出额外的空间、在维护时也需要付出多余的时间

​ 2)索引技术的分类

​ 有序索引:又分为聚集索引和非聚集索引、稠密索引和稀疏索引;散列索引(哈希表存储);主索引;唯一索引、单层索引和多层索引

​ 3)数据库的物理设计

​ 目标:略;

​ 环节:(1)数据库逻辑模式描述(关系模式-基本表);(2)文件组织与存取设计(基本原则:①将易变部分与稳定部分、存储频率较高的部分与存储频率较低的部分分开存放,以提高系统性能;②分析理解数据库事务访问特性);(3)数据分布设计(分布式数据库系统的数据划分:垂直划分和水平划分(各自的含义));(4)确定系统配置;(5)物理模式评估(对数据库的**时间和空间(存取时间、存储空间)**的效率进行评估)

3)什么是存取路径

选择存取路径主要是指确定如何建立索引。对同一个关系我们要建立多条索引路径。

4)DBMS常用的存取方法:索引方法(B+树索引方法)、聚簇方法、HASH方法

第三章 例题讲解

1)

image-20210223160902416

2)

image-20210223161027800

3)

image-20210223161136723

4)

image-20210223161831682

5)

image-20210223161946795

6)重点:第三章出现的设计与应用题

image-20210223162333322

image-20210223162343962

image-20210223162403875

image-20210223162409558

image-20210223162416950

第四章 数据库系统功能设计于是实施

总述:DBAS功能设计包括应用软件设计中的数据库事务设计和应用程序设计。

功能设计过程分为:总体设计、概念设计、详细设计;具体到数据库事务设计分为:事物概要设计、事物详细设计

第一节 软件体系结构与设计过程 一、软件体系结构与设计过程

一)软件体系结构:又称为软件架构是软件系统中最本质的东西,良好的软件体系结构必须是普适、高效和稳定的;软件体系结构={构件(软件系统的各个模块),连接件(接口和过程调用)、约束(完整性约束和规则)}

软件体系结构类型:分层体系结构、MVC(模型-视图-控制器)体系结构、客户端/服务器(B/S、C/S)体系结构

二)软件设计过程

1)软件开发有设计、实现、测试三个环节组成;包含概要设计(任务:软件总体结构图设计)和详细设计(任务:数据设计、过程设计及人机界面设计)

2)设计原则:模块化、信息隐藏、抽象和逐步求精

3)软件设计可选用的方法:结构化设计方法、面向对象方法、面向数据设计方法

第二节 DBAS整体设计

DBAS整体设计的任务:确定系统整体框架;涉及的内容包括:DBAS体系结构设计、软件体系结构设计、软件硬选型与配置设计、业务规则初步设计

一、DBAS体系结构设计

1)常见的DBAS体系结构:客户服务器体系结构(C/S)、浏览器服务器体系结构(B/S)

2)三层客户服务器体系结构(C/S):表示层、功能层(业务:应用服务器)、数据层(DB:数据库服务器)

二、软件体系结构设计

1)DBAS软件包括:操作系统、数据库管理系统、开发环境中间件、应用软件(数据库事务和应用程序)

2)可用模块结构图(模块+调用+控制+转接)表示总体结构和分层模块结构(体系结构的情况)

三、软件硬选型与配置设计

总体设计阶段需要对软硬件设备做出合理选择,并进行初步配置设计。

四、业务规则初步设计

关键:业务流程图——总体设计阶段

第三节 DBAS功能概要设计

1) DBAS功能概要设计在总体设计的基础上进一步细化模块/子模块,组成应用软件的系统—子系统—模块—子模块结构,并从结构、行为、数据三方面进行设计。

2)从功能角度,DBAS系统通常划分为四个层次:表示层、业务逻辑层、数据访问层、数据持久层

一、表示层概要设计

1)人机界面设计,影响系统易用性(目前第四代为WIMP与web技术多任务处理技术相结合)

2)设计原则:对用户友好;用户自主控制;反馈及时上下文感知;容错与错误恢复;界面标准常规;输入灵活;界面简洁、交互及时。

二、业务逻辑层概要设计

1)设计原则:高内聚低耦合

2)设计内容:结构、行为、数据、接口等等

三、数据访问层概要设计

1)事物概要设计核心:在于辨识和设计事物自身的处理逻辑、注意流程

2)一个完整的事物概要设计包括:事务名称、访问的关系表和数据项、事务逻辑、事务用户

四、事务

1)事务的概念(Transaction):事务是访问并可能更新数据库中各种数据项的一个程序执行单元

2)事务的特性:原子性、一致性、隔离性、持续性;称为ACID特性

​ 原子性:一个不可分割的工作单位;一致性:从一个一致性状态变到另一个一致性状态;隔离性:执行不能被其他事务干扰;持久性:永久性,他对数据库的改变是永久的。

五、数据持久层概要设计

第三章内容

第四节 DBAS功能详细设计 一、表示层详细设计

人机界面采用原型迭代法。

二、业务逻辑层详细设计

1)设计各模块内部处理流程和算法、具体数据结构和详细接口。

第五节 应用系统安全架构设计 一、数据安全设计

安全性保护、完整性保护、并发性保护、数据备份与恢复、数据加密传输

1)数据库的安全性保护

​ (1)主要保护方法:用身份鉴别、权限控制

2)数据库的完整性保护

​ 定义:数据库的完整性保护是指数据库中的正确性、一致性

及相容性

​ 方法:设置完整性检查(即对数据设置一些约束条件(实体完整性、参考完整性、用户自定义完整性))

​ 完整性条件作用对象:列、元组、关系

​ DBAS中的完整性约束功能包括:完整性约束条件设置和检查。

3)数据库的并发控制

​ 并发控制:事务在空间上重叠执行。

​ 并发控制机制是衡量一个DBAS性能的一个重要标志;实现并发控制常用的方法是封锁技术(就是Java里面的锁)。

​ 基本锁类型:排他锁(X锁)—写锁、共享锁(S锁)—读锁

​ 死锁:是两个或者两个以上的事务之间的循环等待。

​ 避免死锁的原则: ①按照同一顺序访问资源。(如第一个事务提交或回滚后第二个事务进行) ②避免事务交互性 ③采用小事务模 式,缩短长度和占用时间。 ④尽量使用记录级别的所(行锁),少用表级别锁。 ⑤使用绑定连接,同一用户打开的两个或多个连接 可以互相合作。

4)数据的备份与恢复

​ 数据库恢复的基本原理:

​ 数据库备份与恢复的策略:双机热备、数据转储(数据备份)、数据加密存储(针对高敏感数据)

7)数据加密传输常见的传输手段:数字安全证书、对称密钥加密、数字签名、数字信封

二、环境安全设计

漏洞与补丁、计算机病毒防护、网络环境安全(防火墙)、物理环境安全

三、制度安全设计

管理层安全措施

第六节 DBAS实施 一、DBAS实施工作

1)创建数据库、2)数据装载、3)编写调试应用程序、4)数据库系统运行(功能测试、性能测试)

第四章 例题

1、

image-20210223194537655

2)

image-20210223194714392

3)

image-20210223194759347

4)

image-20210223194934428

5)

image-20210223195123160

6)

image-20210223195253382

7)

image-20210223195404121

8)

image-20210223195536224

第五章 UML与数据库应用系统

内容摘要:

​ ①了解DBAS建模方法;②掌握DBAS业务流程与需求表达方法;③掌握DBAS系统内部结构的表达方法;④掌握DBAS微观设计的表达方法;⑤了解DBAS宏观设计的表达方法;⑥了解DBAS系统实现与部署的表达方法。

第一节 DBAS建模 一、统一建模语言(UML)

1)UML是面向对象的可视化的通用语言,他是一种建模语言不是建模方法。

2)建模方法包括建模语言与建模过程;①建模语言:提供这种方法用于表示建模结果的符号(图形符号:可视化);②建模过程:吗iOS建模时需要遵循的步骤。

二、UML的组成

1)由**语义(自然语言)与表示法(可视化标准符号)**组成。

​ 四层建模概念框架:元元模型、元模型、模型层(类模型或类型模型)、用户模型(实例模型:具体的对象)

2)UML的五种视图:结构、实现、行为、环境、用例视图

3)UML 2.0分为静态结构图和行为图

第二节 DBAS业务流程图与需求表达 一、业务流程与活动图

​ 活动图最适合描述系统或子系统的工作流程。

image-20210223201608376

二、系统需求与用例图

image-20210223202016009

三、关系说明

1)角色之间的关系——通用化关系(继承:extends)带三角符号的箭头

image-20210223202455308

2)用例与角色之间的关系——连接关系(关联关系)

image-20210223202419347

3)用例之间的关系——扩展(extends)关系、包含(use、include)(使用)关系、组合(关联)关系、泛化关系

image-20210223202834037

第三节 DBAS系统内部结构的表达 一、类图

1)类与类的关系:关联关系、继承、依赖、精化(实现)

2)组成:类名、属性、方法(操作、行为)

image-20210224160248005

二、顺序图-行为建模

1)顺序图主要用于描述系统内对象之间的消息发送和接收序列;

2)顺序图中出现的元素一定是在类图中出现的;用来强调时间。

image-20210224161250550

三、通信图(协作图)

image-20210224161342686

image-20210224161204577

第四节 DBAS系统微观设计的表达 一、对象图

对象图是类图的实例,描述特定时间中所有对象在系统中的结构,是一个快照

image-20210224161850002

矩形框上面的左边为对象名——后面为所属的类

二、状态图

1)状态图用来描述有关事件或对像的状态转移;只能有一个开始状态可以有多个结束状态。

2)状态图的转移由事件驱动。

image-20210224162341669

三、时间图

当状态的转换由时间因素决定时,使用时间图来描述状态的变化。

image-20210224162549951

第五章 DBAS系统宏观设计的表达

一、包图

image-20210224162912890

二、交互概述图

交互概述图相当于活动图和顺序图的结合

image-20210224163133604

三、复合结构图

复合结构图适用于系统间的沟通接口,进行系统架构设计和系统维护时。

image-20210224163517454

第六节 DBAS系统实现与部署的表达 一、组件图

组件时逻辑中定义的概念和概念在物理架构中的实现。

image-20210224163750887

二、部署图(配置图)

1)描述系统中软硬件的物理配置情况与系统结构。

2)部署图说明实体组件如何执行程序,将如何部署到实际的计算机中——在集成测试之前。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EZPS9LIT-1616819653259)(]

第五章例题

1)

image-20210224164359767

2)

image-20210224165002761

3)

image-20210224165121356

4)

image-20210224165149965

5)

image-20210224165224492

6)

image-20210224165317131

7)

image-20210224165521749

第六章 数据库以及数据库对象 第一节 创建及维护数据库 一、SQL server数据库分类

1)系统数据库(系统自动创建):master、msdb、tempdb、model、resource

2)用户数据库

二、SQL server数据库的组成

1)SQL server将数据库映射为一组操作系统文件。

2)数据文件:①.mdf:主要数据文件,不能小于3M。只有一个;②.ndf:次要数据文件,0个或多个;

日志文件:.ldf:事务日志文件,至少有一个日志文件。

三、数据库存储空间的发分配

1)数据存储的最小单位是数据页(也就是页),一页是一块8KB的连续磁盘空间。

2**)页的大小决定了数据库表中一行**(一个记录、元组)数据的最大值—不能超过8KB

3)行不能跨页存储,一页可以存放多行数据但是不能超过8KB

image-20210224172117177

四、数据库文件组

1)类型:主文件组(系统定义,主要数据文件和如何没有明确分配的其他文件)、用户定义文件组(使用FILEGROUP关键字定义)

image-20210224172413422

五、创建数据库

1)通过图形可视化工具直接创建

2)通过T-SQL语言创建

image-20210224173124353

image-20210224173130607

举例:

image-20210224173400381

七、修改数据库

image-20210224173916309

image-20210224173922270

image-20210224173927581

image-20210224173957120

八、分离和附加数据库

一)分离数据库

​ 1)作用:就是将数据库从一台数据库服务器转移到另一台数据库服务器,不需要重建(类似于剪切)

​ 2)使用的语句:sp_detach_db实现系统存储过程

二)附加数据库

​ 将分离的数据库重新安装到数据库管理系统中,必须指定主要数据文件的物理存储位置和文件名。

​ 2)语句:CREATE DATABASE …(数据库名) ON(存储位置) FOR ATTACH

第二节 架构 一、架构(模式)

1)架构是数据库下的一个逻辑命名空间,是数据库对象的容器,一个数据库包含一个或多个架构,同一个数据库内架构命名唯一

2)定义架构语句:CREATE SCHEMA [] AUTHORIZATION []

3)删除架构:DROP SCHEMA []

第三节 分区表 一、基本概念

​ 1)分区表是将表中的数据按水平分割成不同的子集,并将数据子集存储在数据库一个或多个文件组中。

​ 2)物理上将大表分成好几个小表,逻辑上还是一个大表;合理使用分区能提高数据库性能。

二、创建分区表

image-20210224180019916

实例:

image-20210224180412282

image-20210224180418861

第五节 索引视图

1)创建索引

image-20210224182140533

2)删除索引

image-20210224182206339

一、基本概念

​ 1)标准视图(也称虚拟表):返回结果集与标准表一致,标准视图的结果集不永久存放。

​ 2)索引视图(也称物化视图):建立唯一聚集索引的视图;视图结果存放在数据库中。

二、索引视图使用与限制

1)适用场合:①很少更新的基础数据;②基础数据使用批处理定期更新且作为只读数据

2)

image-20210224183928384

三、定义索引视图

创建索引视图必须满足的条件:①视图只能引用基本表,不能是其他的视图;②引用的基本表和视图在同一歌数据库中;③必须用SCHEMABINDING选项创建视图;④视图中的表达式引用的所有函数必须确定。

第六章例题

1)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h5AUySgD-1616819653276)(C:\Users\潘仕毅\AppData\Roaming\Typora\typora-user-images\image-20210224184633675.png)]

2)

image-20210224184716184

3)

image-20210224185019546

4)创建唯一约束后面必须要字段

image-20210224190508279

5)

image-20210224190640047

image-20210224190708373

image-20210224190838791

image-20210224190931054

image-20210224191057051

6)

image-20210224191148816

image-20210224191153844

注意:在数据库设计题有怎么创建数据库

第七章 高级数据库查询 第一节 数据查询功能扩展 一、查询语句–SELETE(具体看荣莹数据库-第五章)

1)SELETE语句的格式和含义

SELECT [DISTINCT] [TOP n] select_list ——查询指定的列、DISTINCT消除重复元组

[INTO new_table]——将查询结果创建到新表

[FROM table_source]——查询的目标表

[WHERE search_conditition]——查询的条件

[GROUP BY group_by_expression]——指定分组查询的条件

[HAVING search_condition]——指定组或聚合函数查询的条件

[ORDER BY order_expression [ASC|DESC]]——指定表的数据的升降序

[COMPUTE expression] ——在结果集得到末尾生成汇总数据

2)WHERE 条件表达式中可使用下列运算符:

Ø算术比较运算符:<、<=、>、>=、=、<>或!=。

Ø逻辑运算符:AND、OR、NOT(AND和 OR来联结多个查询条件可多次出现、 AND的优先级高于OR、 可以用括号改变优先级)。

Ø集合运算符:IN(DNAME IN ( ‘计算机’,‘电子’)表示取DNAME为’计算机’,’电子‘的结果集)、NOT IN(与前面相反)。

Ø谓词:EXISTS(存在量词)、ALL、SOME、UNIQUE(并)、BETWEEN … AND(在某个范围)、NOT BETWEEN … AND(不在这个范围) 。

Ø聚合函数:AVG、MIN、MAX、SUM、COUNT。

Ø F中运算对象还可以是另一个SELECT语句,即SELECT语句可以嵌套。

二、使用TOP限制结果集

1)TOP n [percent] [WITH TIES]

• Top n 前n行

• Top n [percent]前n%行

• [WITH TIES]:包括最后一行取值并列的结果。

2)TOP的使用:SELECT TOP 3 WITH TIES 。。。。

三、使用CASE函数

1)语法:

CASE

WHEN 布尔表达式1 then 结果表达式1

WHEN 布尔表达式2 then 结果表达式2

……

WHEN 布尔表达式n then 结果表达式n

[ELSE 结果表达式n+1]

2)使用举例

SELECT a.GoodsID,商品销售类别=CASE

WHEN COUNT(b.GoodsID)>10 THEN ‘热门商品’

WHEN COUNT(b.GoodsID)BETWEEN 5 AND 10 THEN ‘一般商品’

WHEN COUNT(b.GoodsID)BETWEEN 1 AND 4 THEN ‘难销商品’

ELSE ‘滞销商品’

END

FROM Table_Goods a LEFT JOIN Table_SaleBillDetail b

ON a.GoodsID=b.GoodsID GROUP BY a.GoodsID

四、将查询结果保存到新表中

SELECT 查询列表序列 INTO

FROM 数据源……(其他行过滤、分组语句)

注意:表名前加**#为局部临时表,##为全局临时表**,只有表名为永久表。

例子:SELECT * INTO #HD_Customer FROM Table_Customer WHERE ……

注意:局部临时表和全局临时表只在当前查询中一次有效

第二节 查询结果的交、并、差运算

①在FROM子句中给出多个表名,即可完成笛卡尔积运算。

②建立几个表连接的方法:在FROM子句中列出需连接的表名,在WHERE子句给出连接条件或连接谓词

一、并运算

1)并运算(UNION):将多个查询结果合并为一个结果集。。

语法:

SELECT 语句1 UNION [ALL] SELECT 语句2 UNION [ALL]

2)使用UNION注意:

Ø要进行合并的查询,SELECT中列数必须相同,语义相同。

Ø每个相对应列的数据类型隐式兼容,如char(20)与varchar(40)。

Ø合并后结果采用第一个SELECT语句的列标题。

Ø若需排序,则GROUP BY语句写在最后一个SELECT之后,且排序的一句是第一个SELECT中的列名。

3)举例:求选修了课程C2或C4的学生的学号和姓名

image-20210226183333764

二、交运算

1)交运算:返回同时在两个集合中出现的记录。

语法:

SELECT 语句1 INTERSECT SELECT 语句2 INTERSECT …… SELECT 语句n

2)举例:求选修了课程C2和C4的学生的学号和姓名

image-20210226183624970

三、差运算

1)差运算:返回第一个集合中有而第二个集合中没有的的记录。

语法:

SELECT 语句1 EXCEPT SELECT 语句2 EXCEPT…… SELECT 语句n

2)举例:求选修了课程C2但没有选修课程C4的学生的学号和姓名

image-20210226183851716

第三节 子查询 一、单值子查询

1)WHERE子句中的条件表达式可以是标量数据 ,也可以是一个SELECT-FROM-WHERE查询块构成的子查询。

SELECT /*外层查询 /父查询*/ FROM WHERE ​ (SELECT /*内层查询/子查询*/ ​ FROM ​ WHERE)

2)①子查询的限制:不能使用ORDER BY子句;②层层嵌套方式反映了 SQL语言的结构化,③有些嵌套查询可以用连接运算替代

3)举例:求选修了数据结构的学生的学号

image-20210226184710430

SELECT语句:

SELECT SNO FROM SC WHERE CNO = ​ (SELECT CNO //子查询语句返回的结果集要与父查询语句的条件的名称(语义)相同,但是为不同的表 ​ FROM C ​ WHERE CNAME= ' 数据结构‘);

也可以用自身连接完成前例查询要求

SELECT SNO FROM SC, C WHERE SC.CNO = C.CNO AND C.CNAME= '数据结构'; 二、包含多值的子查询

1)子查询的结果不是单一值,而是多个值,即一个集合(记为R)。与子查询结果比较,可使用以下运算符:

① EXISTS R是一个条件,当且仅当R非空时,该条件为真。

EXISTS相当于离散数学中的存在量词。

② s IN R为真,当且仅当s等于R中的一个值。类似地,s NOT IN R为真,当且仅当s不等于R中的值。

IN的含义相当于集合论中的“属于”(∈)。类似地,s NOT IN R,表示s不属于R。

③ s>ALL R为真,当且仅当s大于关系R中的每一个值。同样可以使用其他五个比较运算符(>=、=、=、=、 ANY 大于子查询结果中的某个值 (存在大于)

> ALL 大于子查询结果中的所有值(比最大值还大)

< ANY 小于子查询结果中的某个值 (存在小于)

< ALL 小于子查询结果中的所有值 (比最小值还小)

>= ANY 大于等于子查询结果中的某个值 (存在大于或等于)

>= ALL 大于等于子查询结果中的所有值 (应该为一个与子查询相同大小的集合)

42000; -----步骤③

having子句使用 having avg_salary 会有什么不同?

任何出现在having子句中,但没有被聚集的属性必须出现在 group by 子句中,否则查询就被当成错误的。

包含聚集、group by或having子句的查询

包含聚集、group by或having子句的查询的含义可通过下述操作序列来定义:

最先根据 from 子句计算出一个关系;如果出现 where 子句, where 子句 中的谓词将应用到 from子句 的结果关系上;如果出现了group by 子句, ①满足 where 谓词的元组通过group by 子句形成分组。 ②如果没有 group by 子句,满足where谓词的整个元组集被当做一个分组。如果出现了 having子句,它将应用到每个分组上;不满足having子句谓词的分组将被抛弃。select 子句 利用剩下的分组产生出查询结果中的元组,即在每个分组上应用聚集函数来得到单个结果元组。 查询10.同时使用having和where子句 “对于在2009年将受的每个课程段,如果该课程段至少2名学生选课,找出选修该课程段的所有学生的总学分(tot_cred)的平均值”。 student(ID, name, dept_name, tot_cred) takes(ID, course_id, sec_id, semester, year, grade) select course_id, sec_id, semester,year,avg(tot_cred) //⑤对大表进行分割,返回的结果集 from takes natural join student //①自然连接 where year = 2009 //②该条件先确定了时间段为2009年 group by course_id,semester,year,sec_id //③找出了2009年段的数据后根据 course_id,semester,year,sec_id 分组 having count(ID) >= 2; //④对分组的数据进行选择

对空值和布尔值的聚集

四、聚集函数处理空值规则如下: 除了count(*) 外的所有聚集函数都忽略输入集合中的空值;空值被忽略有可能造成参加函数运算的输入值集合为空。

规定空集的count运算值为0 ;其他所有聚集运算在输入为空集的情况下返回一个空值。 SQL:1999 中 引入了布尔数据类型,可以取true, false, unknown 三个值。有两个聚集函数some 和 every。

开窗函数

原文链接:https://www.cnblogs.com/lihaoyang/p/6756956.html

一、开窗函数

​ 与聚合函数一样,开窗函数也是对行集组进行聚合计算,但是它不像普通聚合函数那样每组只返回一个值,开窗函数可以为每组返回多个值,因为开窗函数所执行聚合计算的行集组是窗口。在 ISO SQL 规定了这样的函数为开窗函数,在 Oracle 中则被称为分析函数。

​ 数据表(Oracle):T_Person 表保存了人员信息,FName 字段为人员姓名,FCity 字段为人员所在的城市名,FAge 字段为人员年龄,FSalary 字段为人员工资

CREATE TABLE T_Person (FName VARCHAR2(20),FCity VARCHAR2(20),FAge INT,FSalary INT)

向 T_Person 表中插入一些演示数据:

[复制代码](javascript:void(0)😉

INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Tom','BeiJing',20,3000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Tim','ChengDu',21,4000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Jim','BeiJing',22,3500); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Lily','London',21,2000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('John','NewYork',22,1000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('YaoMing','BeiJing',20,3000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Swing','London',22,2000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Guo','NewYork',20,2800); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('YuQian','BeiJing',24,8000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Ketty','London',25,8500); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Kitty','ChengDu',25,3000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Merry','BeiJing',23,3500); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Smith','ChengDu',30,3000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Bill','BeiJing',25,2000); INSERT INTO T_Person(FName,FCity,FAge,FSalary) VALUES('Jerry','NewYork',24,3300);

[复制代码](javascript:void(0)😉

select * from t_person:

img

要计算所有人员的总数,我们可以执行下面的 SQL 语句:SELECT COUNT(*) FROM T_Person

除了这种较简单的使用方式,有时需要从不在聚合函数中的行中访问这些聚合计算的值。比如我们想查询每个工资小于 5000 元的员工信息(城市以及年龄),并且在每行中都显示所有工资小于 5000 元的员工个数:

[复制代码](javascript:void(0)😉

select fname, fcity, fsalary, (select count(*) from t_person where fsalary 该步骤表示BuyCount进行查询即实现上面语句的后半段 第七章 例题讲解(重点)

**1.**设某数据库中有旅客表A(旅客编号,城市)和旅客表B(旅客编号,城市),现将所有旅客的数据存储这两张表中。请补全如下查询语句,使得该查询语句能查询所有旅客所在的全部的不重复的城市。

SELECT 城市 FROM 旅客表A

(  )

SELECT 城市 FROM 旅客表B

答案: UNION

2.设有购买表(顾客号,商品号,购买时间)。现要查询顾客A与顾客B购买的相同商品。有下列查询语句:

Ⅰ.SELECT 商品号 FROM 购买表 WHERE 顾客号 = ‘A’

AND 商品号 IN (SELECT 商品号 FROM 购买表 WHERE 顾客号 = ‘B’)

Ⅱ.SELECT 商品号 FROM 购买表 WHERE 顾客号 = ‘A’

​ EXCEPT SELECT 商品号 FROM 购买表 WHERE 顾客号 = 'B‘

Ⅲ.SELECT 商品号 FROM 购买表 WHERE 顾客号 = ‘A’

​ INTERSECT SELECT 商品号 FROM 购买表 WHERE 顾客号 = ‘B’

Ⅳ.SELECT 商品号 FROM 购买表 WHERE 顾客号 = ‘A’

​ UNION SELECT 商品号 FROM 购买表 WHERE 顾客号 = ‘B’

上述语句中,能够实现该查询要求的是(  )。

A.仅Ⅰ和Ⅱ

B.仅Ⅰ和Ⅲ

C.仅Ⅰ和Ⅳ

D.仅Ⅲ

答案:B

**3.**设有选课表(学号,课程号,成绩),现要统计每门课程的选课人数,并将结果保存到新表:选课情况表。下列语句中正确的是( )。

A.SELECT 课程号, COUNT(*) 选课人数 FROM 选课表 INTO 选课情况表GROUP BY 课程号

B.SELECT 课程号, COUNT(*) 选课人数 INTO 选课情况表(关键 ) FROM 选课表 GROUP BY 课程号

C.SELECT 课程号, COUNT(*) FROM 选课表 INTO 选课情况表(课程号,选课人数)GROUP BY 课程号

D.SELECT 课程号, COUNT(*) INTO 选课情况表(课程号, 选课人数)

FROM 选课表 GROUP BY 课程号

答案:B

4.设某数据库中有学生表(学号,姓名,所在系)和选课表(学号,课程号,成绩)。现要查询没选课的学生姓名和所在系。下列语句中能够实现该查询要求的是(  )。

A.SELECT 姓名,所在系FROM学生表a LEFT JOIN选课表b

ON a.学号=b.学号WHERE a.学号IS NULL

**B.**SELECT 姓名,所在系 FROM 学生表a LEFT JOIN 选课表b

ON a.学号=b.学号 WHERE b.学号IS NULL

C.SELECT 姓名,所在系FROM学生表a RIGHT JOIN选课表b

ON a.学号=b.学号WHERE a.学号IS NULL

D.SELECT 姓名,所在系FROM学生表a RIGHT JOIN选课表b

ON a.学号=b.学号WHERE b.学号IS NULL

答案:B

5.设在SQL Server2008中,用户U1在DB1数据库中创建了#Temp表。下列关于#Temp表的说法中,正确的是(  )。

A.在所有用户U1发起的连接中,都可以查询#Temp表数据

**B.**只有在创建#Temp表的连接中才可以查询#Temp表数据

C.在创建#Temp表的连接未断开时,DB1数据库的所有用户都可以查询#Temp表数据

D. 在创建#Temp表的连接断开时,DB1数据库的所有用户仍可以查询#Temp表数据

答案:B

6.设在采用SQL Server 2008数据库的图书馆应用系统中有三个基本表,表结构如下所示,请用SQL语句完成下列两个查询:

①BORROWER:

借书证号姓名系名班级12011106蒋辉文计算机系12-112011107王丽计算机系12-112012113范园园信息系12-2……………………

②LOANS:

借书证号图书馆登记号借书日期12011106T0010012012.01.0212012113T0010262013.02.06………………

③BOOKS:

索书号书名作者图书登记号出版社价格TP311.1数据库系统李明T001001科学19.00TP311.2二级C语言王珊T001026人民32.00………………………………

(1)检索至少借了5本书的同学的借书证号、姓名、系名和借书数。

【参考答案】 (1)SELECT LOANS.借书证号,姓名,系名,COUNT(*) AS 借书数量 FROM BORROWER,LOANS WHERE BORROWER.借书证号=LOANS.借书证号 GROUP BY LOANS.借书证号 HAVING COUNT(*)>=5;

(2)检索借书和王丽同学所借图书中的任意一本相同的学生姓名、系名、书名和借书日期。

(2)SELECT 姓名,系名,书名,借书日期 FROM BORROWER,LOANS , BOOKS WHERE BORROWER.借书证号=LOANS.借书证号 AND LOANS.图书登记号=BOOKS.图书登记号 AND 索书号 IN (SELECT 索书号 FROM BORROWER,LOANS,BOOKS WHERE BORROW.借书证号=LOANS.借书证号 AND LOANS.图书馆登记号=BOOKS.图书登记号 AND 姓名="王丽") 第八章 数据库后台编程技术

该部分涉及到应用设计题——大题。

第一节 存储过程

存储过程详解原文链接:https://www.cnblogs.com/mark-chan/p/5384139.html

一、基本概念

1)存储过程:存储在数据库中供所有用户程序调用的子程序(T-SQL语句);是一组为了完成特定功能的SQL语句集,经编译后存储在数据库中,用户通过指定存储过程的名字并给定参数(如果该存储过程带有参数)来调用执行它。

2)以子程序存储在数据库中的代码(T-SQL语句)的执行:有权限的用户方可执行。

3)存储过程的分类:①系统存储过程、②用户自定义存储过程(用户自己创建,完成特定的功能)、③扩展存储过程

二、创建、执行和删除存储过程

1)创建语法:CREATE PROCEDURE 过程名 ([[IN|OUT|INOUT] 参数名 数据类型 [ , [IN|OUT|INOUT] 参数名 数据类型…]]) [特性 …] 过程体

CREATE PROCEDURE myproc(OUT s int , y char(20)) BEGIN SELECT COUNT(*) INTO s FROM students; END

2)参数:存储过程根据需要可能会有输入、输出、输入输出参数,如果有**多个参数用","**分割开。MySQL存储过程的参数用在存储过程的定义,共有三种参数类型:IN,OUT,INOUT

IN参数的值必须在调用存储过程时指定,在存储过程中修改该参数的值不能被返回,为默认值

OUT:该值可在存储过程内部被改变,并可返回

INOUT:调用时指定,并且可被改变和返回

3)过程体:过程体的开始与结束使用 BEGIN 与 END 进行标识。

4)执行语法:EXEC (或EXECUTE)过程名(参数)+;。使用 DECLARE 进行变量的定义,@xxx为用户变量(在数据库中不可多用);SELECT 为返回值,相当于 print 函数。

第二节 用户自定义函数 一、用户自定义函数 二、调用标量函数

1)语法结构:

CREATE FUNCTION function_name(@parameter_name parameter_data_type) --(@参数名 参数的数据类型)

RETURNS date_type – 返回返回值的数据类型

[WITH ENCRYPTION] --如果指定了 encryption 则函数被加密

[AS]

BEGIN

function_body --函数体

RETURN 表达式;

END

2)举例:

创建标量函数,计算指定课程号的课程的平均成绩,然后调用该函数查询某门课的平均成绩。 create function getavgdegreeofonecourse(@课程号 char(5)) returns float begin declare @result float select @result=avg(degree) from score where score.cno=@课程号 return @result end

3)调用:

--执行函数 SELECT dbo.MySTR('aa') AS result 在sql 语句也可以这样用: DECLARE @str3 VARCHAR(30) SET @str3=(select name from userinfo where huji=dbo.MySTR('邯郸') and id=23 ) select @str3

链接:https://blog.csdn.net/qq_16055765/article/details/88836520

原文链接:https://blog.csdn.net/adreammaker/article/details/68071214

三、创建和调用内嵌表值函数 一)单表格查询

1)语法结构: CREATE FUNCTION function_name(@parameter_name parameter_data_type) --(@参数名 参数的数据类型)

RETURNS table --返回一张表

[AS]

RETURN( --返回下面空白部分所写语句中查询的表

)

特点:内敛表值函数支持在WHERE子句中使用参数

2)举例:

1)创建内联表值函数,查询指定学号的学生的选课情况(包括学号、姓名、课程号和成绩),然后调用该函数查询某位学生的选课情况, 再调用该函数将该生某门课的成绩改为100,重新查询该生成绩检查一下改过来了吗。 drop function getxuankeqingkuang create function getxuankeqingkuang(@学号 char(5)) returns table return( select student.sno,student.sname,course.cno,score.degree from student,course,score where student.sno=score.sno and score.cno=course.cno and student.sno=@学号 --查询该生选课情况 select * from dbo.getxuankeqingkuang('101') --修改该生某门课程的成绩 update dbo.getxuankeqingkuang('101') set degree=100 where cno='3-105' --重新查询该生成绩 select * from dbo.getxuankeqingkuang('101') go 举例2: CREATE FUNCTION tabcmess(@title VARCHAR(10)) RETURNS TABLE AS return(select title,des from product where title like '%'+@title+'%') 调用:SELECT * FROM tabcmess(‘aaa’)

链接:https://blog.csdn.net/qq_16055765/article/details/88836520

原文链接:https://blog.csdn.net/adreammaker/article/details/68071214

二)多表格查询:

1)语法:create function 函数名(参数)

​ returns 表格变量名 table (表格变量定义)

as

begin SQL语句 ( 要有函数返回值 ) end (单表格没有 begin SQL语句 end 直接 return )

2)举例:

CREATE function tabcmessalot (@title varchar(10)) Returns @ctable table(title varchar(10) null,des varchar(100) null) As Begin Insert @ctable Select title,des from product WHERE title LIKE '%'+@title+'%' return End –执行 SELECT * FROM tabcmessalot(‘aaa’) 四、删除用户自定义函数

1)语法结构:DROP function 函数名(参数 参数类型)

第四节 触发器 一、基本概念

​ 1)触发器:特殊的存储过程,在对表中的数据进行 UPDATE、INSTER、DELETE 操作时自动触发执行,常用于保证业务规则和数据完整性,增强数据完整性约束能力。

​ 2)SQL server支持的三种类型触发器:DML(数据操纵语言:Insert、Update、Delete)、DDL(数据定义语言:Create、Alter、Drop)、登录触发器。

​ 3)规则:

​ ① 触发器名必须符合标识符规则,并且在数据库中必须唯一。

​ ② 触发器所基于的对象。ON关键字后面指定在其上执行触发器的表,也可以称为触发器表。除了表以外,视图上也可以定义触发器。使用 WITH ENCRYPTION 选项可以对 CREATE TRIGGER 语句的文本进行加密。 ③触发器中使用的特殊表。执行触发器时,系统创建了两个特殊的临时表inserted表和deleted表。当向表中插入数据时,INSERT触发器触发执行,新的记录插入到触发器表和inserted表中。deleted表用于保存已从表中删除的记录,当触发一个DELETE触发器时,被删除的记录存放到deleted表中。 ④ INSTEAD OF 表示前触发器,在数据库中最多只能有一个。

二、语法 CREATE TRIGGER table1_insert(触发器名) ON table1(触发器基于的对象 就是第二点) AFTER INSERT(表示触发器的类型:后触发器(AFTER/FOR)、前触发器(INSTEAD OF);INSTER表示在进行插入操作时触发) AS BEGIN 触发器函数体,在触发器触发后将会有什么影响或要进行什么操作。 END 三、删除触发器

语法格式:DROP TRIGGER 触发器名 (必须在当前数据库进行这些操作,即在哪个数据库创建在哪删除)

四、举例

原文链接:https://blog.csdn.net/weixin_43107805/article/details/103091354

(1)创建一个表table1,其中只有一列a。在表上创建一个触发器,每次插入操作时,将变量@str的值设为“TRIGGER IS WORKING”并显示。

USE PXSCJ GO CREATE TABLE table1(a int) GO CREATE TRIGGER table1_insert ON table1 AFTER INSERT AS BEGIN DECLARE @str char(50) SET @str='TRIGGER IS WORKING' PRINT @str END

向table1中插入一行数据: INSERT INTO table1 VALUES(10) 执行结果如下所示:

img

2)创建触发器,当向CJB表中插入一个学生的成绩时,将XSB表中该学生的总学分加上添加的课程的学分。

CREATE TRIGGER cjb_insert ON CJB AFTER INSERT AS BEGIN DECLARE @num char(6), @kc_num char(3) DECLARE @xf int SELECT @num=XH, @kc_num=KCH FROM inserted SELECT @xf=XF FROM KCB WHERE KCH=@kc_num UPDATE XSB SET ZXF=ZXF+@xf WHERE XH=@num PRINT '修改成功' END

(3)创建触发器,当修改XSB表中的学号时,同时也要将CJB表中的学号修改成相应的学号(假设XSB表和CJB表之间没有定义外键约束)

CREATE TRIGGER xsb_update ON XSB AFTER UPDATE AS BEGIN DECLARE @old_num char(6), @new_num char(6) SELECT @old_num=XH FROM deleted SELECT @new_num=XH FROM inserted UPDATE CJB SET XH=@new_num WHERE XH=@old_num END

接着修改XSB表中的一行数据,并查看触发器执行结果:

UPDATE XSB SET XH='081120' WHERE XH='081101' GO SELECT * FROM CJB WHERE XH='081120'

img

(4)创建DELETE触发器。在删除XSB表中的一条学生记录时将CJB表中该学生的相应记录也删除。

CREATE TRIGGER xsb_delete ON XSB AFTER DELETE AS BEGIN DELETE FROM CJB WHERE XH IN(SELECT XH FROM deleted) END 第四节 游标 一、概念

相当于指针(数组的索引)——> 联想到数据库的链表和Java的数组的索引

定义:实现对 SELECT 结果集的逐行处理。

二、游标的语法结构

①声明游标: DECLARE 游标名 CURSOR FOR 结果集

②打开游标:OPEN 游标名 INTO 结果集 (游标的位置默认在结果集的第一行)

③提取数据:FETCH 游标名

④关闭游标:CLOSE 游标名 可以再次打开

⑤释放游标:DEALLOCATE 游标名

三、举例

1. 对Table_Customer表,定义一个查询“长沙岳麓区”姓“王”的顾客姓名和邮箱的游标,并输出游标结果。

DECLARE @cn VARCHAR(10 @cn VARCHAR(50)

①声明:DECLARE Cname_cursor CURSOR FOR

SELECT Cname,Email FROM Table_Customer

WHERE Cname LIKE ‘王%’AND Address LIKE ‘长沙岳麓区’

②打开:OPEN Cname_cursor

③提取:FETCH NEXT FROM Cname_cursor INTO @cn , @Email

WHILE @@ FETCH_STATUS=0

BEGIN

PRINT’顾客姓名’+@cn +‘,邮箱:’+ @Email

FETCH NEXT FROM Cname_cursor INTO @cn , @Email

END

④关闭:CLOSE Cname_cursor

⑤释放:DEALLOCATE Cname_cursor

第八章 例题

1、在SQL Server 2008中,对于更新操作的触发器,系统将产生2张逻辑工作表,其中存放更新前数据的逻辑工作表是(  )。

答案:DELETE

2、删除用户自定义的函数使用(  )语句来实现。

答案:DROP FUNCTION

3、设在数据库应用系统设计与实现过程中有下列活动:

Ⅰ. 创建触发器

Ⅱ. 定义事务隔离性级别

Ⅲ. 数字签名

Ⅳ. 定义主码

上述活动中,用于数据库的完整性保护的是(  )

A.仅Ⅰ和Ⅳ B.仅Ⅰ和Ⅱ

C.仅Ⅲ和Ⅳ D.仅Ⅱ和Ⅲ

答案:B

4、利用游标机制可以实现对查询结果集的逐行操作。下列关于SQL Server 2008中游标的说法中,错误的是(  )

A. 每个游标都有一个当前行指针,当游标打开后,当前行指针自动指向结果集的第一行数据

B.如果在声明游标时未指定INSENSITIVE选项,则已提交的对基表的更新都会反映在后面的提取操作中

C.当@@FETCH_STATUS=0时,表明游标当前行指针已经移出了结果集范围

D.关闭游标之后,可以通过OPEN语句再次打开该游标

答案:C

5、在SQL Server 2008中,用于判断游标数据提取状态的全局变量是(  )。

答案:@@FETCH_STATUS

6、设在SQL Server 2008某数据库中有按如下格式定义的存储过程首部:

CREATE PROC P1(存储过程名)

@x int, @y int, @z int output AS …

请补全下列调用该存储过程的语句。

DECLARE @S int

EXEC P1 20, 30, @S (  )

答案:output

7、在SQL Server 2008中,设有教师表(教师号, 姓名, 所在部门号, 职称) 和 部门表(部门号, 部门名, 高级职称人数)。请编写满足下列要求的后触发型触发器 (设触发器名字为tri_zc)。

每当在教师表中插入一名具有 高级职称(“教授"或"副教授”) 的教师时,或者将非高级职称教师的职称更改为高级职称时,均修改部门表中相应部门的高级职称人数。(假设一次操作只插入或更改一名教师的职称) )——>修改时触发(INSERT)

【参考答案】 CREATE TRIGGER tri_zc ON 教师表 AFTER INSERT,UPDATE AS BEGIN DECLATE@zc varchar(10),@dept varchar(30) SELECT @dept=所在部门号,@2c=职称 FROM inserted IF @zc =′教授′ or ′副教授′ Update 部门表 SET 高级职称人数 = 高级职称人数 + 1 Where 部门号 = @dept End

8、设在SQL Server 2008某数据库中有商品表和销售表,两个表的定义如下:

① CREATE TABLE 商品表(

商品号 char(10)PRIMARY KEY,

商品名 varchar(40),

类别 varchar(20),

进货单价 int )

② CREATE TABLE 销售表(

商品号 char(10),

销售时间 datetime,

销售数量 int,

销售单价 int,

PRIMARY KEY(商品号,销售时间))

下面是一个用户定义的多语句表值函数,它接受类别作为输入参数,返回该类别下的每种商品在2012年的销售总利润,并将结果按照销售总利润的降序输出。请补全该函数定义代码。

CREATE FUNCTION f_Profit (@lb char(10)) 【1】@ProfitTable【2】(

商品号 char(10),

总利润 int )

AS

BEGIN

INSERT INTO @ProfitTable

【3】

【4】

END

【参考答案】

第一空:RETURNS

第二空:table

第三空:a SELECT a.商品号,SUM(销售数量(销售单价-进货单价)) AS总利润 FROM 销售表 a JOIN商品表b ON a. 商品号=b. 商品号 WHERE a.商品号 IN(SELECT 商品号 FROM 商品表 WHERE 类别=@lb) GROUP BY a. 商品号ORDER BY 总利润 DESC*

第四空:RETURN@Rrofit Table

第九章 安全管理 第一节 安全控制概述 一、数据库安全性与数据的完整性。

安全性:保护数据以防止不合法用户故意造成破坏。

(确保用户被允许做其想做的事情。)

完整性:保护数据以防止合法用户无意中造成的破坏。

(确保用户做的事情是正确的。)

二、安全控制模型

包括四阶段:

①身份验证(用户)

②操作权限控制(数据库应用程序与数据库管理系统)

③文件操作控制(操作系统)

④加密存储与冗余(数据库)

三、授权和认证

1)认证是一种鉴定用户身份的机制(相当于开门并走进去)。授权(相当于对里面的东西进行操作(赋予权限))是将合法访问数据库或数据库对象的权限授予用户的过程。包括认证用户对对象的访问请求。

2)DBMS(数据库管理系统)通常采用自主存取控制和强制存储控制两种方案来解决安全控制问题。

第二节 存取控制 一、自主存取控制

1)自主存取控制又称自主安全模式, 通过SQL的**GRANT(授予权限),REVOKE(收回权限),DENY(拒绝权限)**语句来实现。

2)权限种类:维护权限 与 操作权限(语句权限与对象权限)

3)用户分类:系统管理员(sa)、数据库对象拥有者、普通用户。

二、强制存取控制

1)目的:为避免自主存取模式下数据的“无意泄露”,采取强制存取控制。

2)DBMS将全部实体分为主体和客体两大类。

​ •主体:系统活动实体,实际用户和进程。

​ •客体:被动实体,受主体操纵,包括文件、基本表、视图。

3)敏感度标记:DBMS指派,主体为许可证级别,客体为密级。分绝密、秘密、可信和公开等若干级别。

4)强制存取控制遵循如下规则:

​ •①仅当主体许可证级别大于或等于客体密级,主体可以读取相应客体

​ •②仅当主体许可证级别等于客体密级,该主体才能写相应客体。

第三节 审计跟踪

1)审计跟踪实质上是一种特殊的文件或数据库。系统自动记录用户对常规数据的所有操作。

2)审计跟踪对数据安全有辅助作用。

第四节 统计数据库的安全性

统计数据库允许用户查询聚合类型的信息,如总和、平均等,但不允许查询个人信息。

一、身份验证模式

1)Windows身份验证模式

SQL Server通过Windows操作系统获得用户信息,验证登录名和密码,一般推荐。

2)混合身份验证模式

​ Windows授权用户和SQL授权用户可以登录。

二、登录帐户

1)建立登录账户

​ CREATE LOGIN login_name(账户名)

2)修改登录帐户属性

​ ALTER LOGIN login_name

3)删除登录帐户

​ DROP LOGIN login_name

举例“:

CREATE LOGIN SQL_User1 WITH PASSWORD=‘a1b2c3XY’-------设置用户名和密码

ALTER LOGIN SQL_User1 WITH PASSWORD=‘a4b5c6XY’

ALTER LOGIN SQL_User3 WITH NAME=NewUser

三、数据库用户

​ 1)用户有了登录帐户,只能连接到SQL服务器,并不具有访问数据库的权限。

​ 2)映射:让登录账户成为数据库用户的操作成为映射。一个登录账户可以映射为多个数据库用户。默认情况下,新建数据库只有一个用户:dbo,数据库用户的拥有者。

​ 3)①建立数据库用户

​ CREATE USER user_name [|FOR|FROM] -------表示可选,选择其中一个

​ LOGIN login_name(自定义的用户名)------整个过程为映射

​ ②Guest用户,特殊数据库用户,匿名访问,没有映射到登录账户的时候使用

​ GRANT CONNECT TO guest

​ REVOKE CONNECT TO guest

​ ③删除数据库用户

​ DROP USER user_name

四、权限管理

​ 1)登录账户成为合法用户后没有任何操作权限,就需要为用户授予数据库数据及其对象的操作权限。

(1)对象级别的权限(6种)

​ SELECT、INSERT、UPDATE、DELETE、REFERENCES、EXECUTE

​ 1)授权语句:

​ 语法结构:GRANT 对象权限 ON 对象(表、视图、触发器等等) TO (主体:数据库用户名或角色)[WITH GRANT OPTION]

​ 实例:

​ GRANT SELECT ON Addres TO abc

​ GRANT EXECUTE ON OBJECT::HR.EI TO abc

​ GRANT REFERENCES(EmployeeID)ON vEmp TO abc WITH GRANT OPTION

2)拒绝权限

​ ①语法结构:DENY 对象权限 ON 对象 TO (主体:数据库用户名或角色) [CASCADE] [AS主体]

​ ②实例:

​ DENY SELECT ON Addres TO abc

​ DENY EXECUTE ON OBJECT::HR.EI TO abc

​ DENY REFERENCES(EmployeeID)ON vEmp TO abc CASCADE

3)收权语句

​ ①语法结构:REVOKE 对象权限 ON 对象 TO (主体:数据库用户名或角色) [CASCADE] [AS角色]

​ ②实例:

​ REVOKE SELECT ON Addres TO abc

​ REVOKE EXECUTE ON OBJECT::HR.EI TO abc

​ REVOKE REFERENCES(EmployeeID)ON vEmp TO abc CASCADE

(2)语句级别的权限

​ 1)语法结构:CREATE DATABASE| PROCEDURE| TABLE| VIEW| FUNCTION | BACKUP DATABASE| LOG

​ 2)实例:

​ GRANT CREATE DATABASE TO user0

​ GRANT CREATE DATABASE , CREATE VIEW TO user1,user2

​ DENY CREATE VIEW TO user1

​ REVOKE CREATE DATABASE FROM user0

五、角色

1)定义:一组具有相同权限的用户就是角色。

2)SQL Server 2008中,角色分为预定义的系统角色和用户角色两种。

​ •系统角色又分为固定服务器角色(服务器级角色)和固定数据库角色(数据库级角色)。

​ •用户角色均是数据库级角色。

1、固定服务器角色

1)角色及权限

•Bulkadmin:执行BULK INSERT语句权限。

•Dbcreator:创建、修改、删除、还原数据库权限。

•Diskadmin:具有管理磁盘文件的权限

•Processadmin管理运行进程权限。

•Securtyadmin:专门管理登录账户、读取错误日志执行CREATE DATABASE 权限的账户,便捷。

•Serveradmin:服务器级别的配置选项和关闭服务器权限。

•Setupadmin:添加、删除链接服务器。

•Sysadmin:系统管理员 ,Windows超级用户自动映射为系统管理员。

•Public:系统预定义服务器角色,每个登录名都是这个角色的成员。没有授予或拒绝特定权限,则将具有这个角色权限。

2)例:

(1)为固定服务器角色添加成员

​ Sp_addsrvrolemember

​ EXEC Sp_addsrvrolemember ‘user1’(要赋予的用户),‘sysadmin’(赋予用户的角色)

(2)删除固定服务器角成员

​ Sp_dropsrvrolemember

​ EXEC Sp_dropsrvrolemember ‘user1’(要赋予的用户),‘sysadmin’(赋予用户的角色)

2、固定数据库角色

1)角色及权限

定义在数据库级别上,存在于每个数据库中。用户加入固定数据库角色就具有数据库角色权限。

•Db_accessadmin:添加或删除数据库权限

•Db_backupoperator:备份数据库、日志权限

•Db_datareader:查询数据库数据权限

•Db_datawriter:具有插入、删除、更改权限

•Db_ddladmin:执行数据定义的权限

•Db_denydatareader:不允许具有查询数据库中所有用户数据的权限。

•Db_denydatawriter:不允许具有插入、删除、更改数据库中所有用户数据权限。

•Db_owner:具有全部操作权限,包括配置、维护、删除数据库。

•Db_securityadmin:具有管理数据库角色、角色成员以及数据库中语句和对象的权限。

2)例:

(1)为固定数据库角色添加成员

​ Sp_addrolemember

​ EXEC Sp_addrolemember ‘Db_datareader’,‘SQL_User2’

(2)删除固定服务器角成员

​ Sp_droprolemember

​ EXEC Sp_droprolemember ‘Db_datareader’,‘SQL_User2’

3、用户定义的角色

•用户定义的角色属于数据库一级。

•用户定义的角色成员可以是用户定义角色或数据库用户。

注意: 角色中的成员拥有的 权限=成员自身权限+所在角色权限(例如:既是qq成员又是管理员) 。但若某个权限在角色中被拒绝,则成员不再拥有。

4、创建用户定义的角色

CREATE ROLE

实例: CREATE ROLE MathDept [AUTHORIZATION(授权) Software]

注意:为用户定义角色授权(GRANT)、添加、删除(DENY)用户定义的角色中的成员与固定数据库角色一致。

5、删除用户定义角色

DROP ROLE

实例:DROP ROLE MathDept

第六节 Oracle的安全管理

Oracle的安全机制分为数据库级的安全控制、表级、列级、行级的安全控制。

Oracle系统通常设置两级安全管理员:全局级(相当于中央)、场地级(相当于地方 )

一、用户与资源管理

按权限大小划分为DBA用户(sys与system用户,拥有全部系统特权)和普通用户(DBA用户或有相应特权的用户创建,并赋予权限)

二、建立用户

CREATE USER use1 IDENTIFIED BY 123456

DEFAULT TABLESPACE student(存储在student表空间)

QUOTA 5M ON student(限制使用空间为5M)

三、管理用户和资源

•DBA特权用户可以改变一个用户资源使用限额、密码、登录次数等

ALTER USER use1

QUOTA 60M ON student(限制使用空间为60M)

ALTER USER use1 IDENTIFIED BY 12345678

四、删除用户

DROP USER

DROP USER user1 CASCADE(删除用户及其所拥有的全部对象)

五、权限管理

(1)系统特权

​ 三种默认特权:

​ •Connect: 不能建立任何对象,可以查询数据字典及访问数据库对象。

​ •Recource :可建立数据库对象(表、视图、索引……)

​ •DBA :拥有预定义的全部权限 。

(2)对象特权

​ 用于维护表级、行级、列级数据的安全性。

​ 实例:

​ GRANT all ON dep TO user1 (授权语句)

​ GRANT select(tno,tname,sal) ON teacher TO user2

第九章 例题

1.在SQL Server 2008某数据库中,用户U1是Role1角色中的成员。设在该数据库中执行了下述授权语句:

GRANT INSERT ON T TO U1

GRANT UPDATE, DELETE ON T TO Role1

GRANT SELECT ON T TO PUBLIC

DENY UPDATE ON T TO PUBLIC (删除权限)

则用户U1对T表具有的操作权限是(  )。

A. INSERT

B. INSERT、UPDATE和DELETE

C.INSERT、SELECT和DELETE

D.INSERT和DELETE

答案:C

2.在SQL Server 2008中,设log1是SQL Server身份验证模式的数据库服务器登录帐户。现要授予log1具有创建数据库的权限,请补全下列语句:

EXEC sp_addsrvrolemember ′log1′, ′ (  ) ′

答案: dbcreator (服务器角色)

3.在SQL Server 2008的某数据库中,设用户U1同时是角色R1和角色R2中的成员。现已授予角色R1对表T具有SELECT、INSERT和UPDATE权限,授予角色R2对表T具有INSERT 和 DENY UPDATE权限,没有对U1进行其他授权,则U1对表T有权执行的操作是( )。

A.SELECT和UPDATE

B.INSERT、UPDATE和SELECT

C.SELECT和INSERT

D.SELECT

答案:C

4.在SQL Server 2008中,设用户 U1 是某数据库 db_datawriter 角色中的成员,则U1在该数据库中有权执行的操作是(  )。

A. SELECT(db_datareader 的权限)

B.SELECT和INSERT

C. INSERT、UPDATE和DELETE(db_datawriter:没有查询功能)

D.SELECT、INSERT、UPDATE和DELETE

答案:C

5.在SQL Server 2008中,只具有修改数据库中全部用户表数据权限的系统角色是 (  ) 。

答案: db_datawriter

6.设在SQL Server 2008某数据库中,要设置不允许用户U1获得对表T数据的删除权限,请补全实现该授权操作的SQL语句:

(  )ON T TO U1;

数据库权限

•Db_backupoperator:备份数据库、日志权限

•Db_datareader:查询数据库数据权限

•Db_datawriter:具有插入、删除、更改权限

•Db_ddladmin:执行数据定义的权限

•Db_denydatareader:不允许具有查询数据库中所有用户数据的权限。

•Db_denydatawriter:不允许具有插入、删除、更改数据库中所有用户数据权限。

•Db_owner:具有全部操作权限,包括配置、维护、删除数据库。

•Db_securityadmin:具有管理数据库角色、角色成员以及数据库中语句和对象的权限。

2)例:

(1)为固定数据库角色添加成员

​ Sp_addrolemember

​ EXEC Sp_addrolemember ‘Db_datareader’,‘SQL_User2’

(2)删除固定服务器角成员

​ Sp_droprolemember

​ EXEC Sp_droprolemember ‘Db_datareader’,‘SQL_User2’

3、用户定义的角色

•用户定义的角色属于数据库一级。

•用户定义的角色成员可以是用户定义角色或数据库用户。

注意: 角色中的成员拥有的 权限=成员自身权限+所在角色权限(例如:既是qq成员又是管理员) 。但若某个权限在角色中被拒绝,则成员不再拥有。

4、创建用户定义的角色

CREATE ROLE

实例: CREATE ROLE MathDept [AUTHORIZATION(授权) Software]

注意:为用户定义角色授权(GRANT)、添加、删除(DENY)用户定义的角色中的成员与固定数据库角色一致。

5、删除用户定义角色

DROP ROLE

实例:DROP ROLE MathDept

第六节 Oracle的安全管理

Oracle的安全机制分为数据库级的安全控制、表级、列级、行级的安全控制。

Oracle系统通常设置两级安全管理员:全局级(相当于中央)、场地级(相当于地方 )

一、用户与资源管理

按权限大小划分为DBA用户(sys与system用户,拥有全部系统特权)和普通用户(DBA用户或有相应特权的用户创建,并赋予权限)

二、建立用户

CREATE USER use1 IDENTIFIED BY 123456

DEFAULT TABLESPACE student(存储在student表空间)

QUOTA 5M ON student(限制使用空间为5M)

三、管理用户和资源

•DBA特权用户可以改变一个用户资源使用限额、密码、登录次数等

ALTER USER use1

QUOTA 60M ON student(限制使用空间为60M)

ALTER USER use1 IDENTIFIED BY 12345678

四、删除用户

DROP USER

DROP USER user1 CASCADE(删除用户及其所拥有的全部对象)

五、权限管理

(1)系统特权

​ 三种默认特权:

​ •Connect: 不能建立任何对象,可以查询数据字典及访问数据库对象。

​ •Recource :可建立数据库对象(表、视图、索引……)

​ •DBA :拥有预定义的全部权限 。

(2)对象特权

​ 用于维护表级、行级、列级数据的安全性。

​ 实例:

​ GRANT all ON dep TO user1 (授权语句)

​ GRANT select(tno,tname,sal) ON teacher TO user2

第九章 例题

1.在SQL Server 2008某数据库中,用户U1是Role1角色中的成员。设在该数据库中执行了下述授权语句:

GRANT INSERT ON T TO U1

GRANT UPDATE, DELETE ON T TO Role1

GRANT SELECT ON T TO PUBLIC

DENY UPDATE ON T TO PUBLIC (删除权限)

则用户U1对T表具有的操作权限是(  )。

A. INSERT

B. INSERT、UPDATE和DELETE

C.INSERT、SELECT和DELETE

D.INSERT和DELETE

答案:C

2.在SQL Server 2008中,设log1是SQL Server身份验证模式的数据库服务器登录帐户。现要授予log1具有创建数据库的权限,请补全下列语句:

EXEC sp_addsrvrolemember ′log1′, ′ (  ) ′

答案: dbcreator (服务器角色)

3.在SQL Server 2008的某数据库中,设用户U1同时是角色R1和角色R2中的成员。现已授予角色R1对表T具有SELECT、INSERT和UPDATE权限,授予角色R2对表T具有INSERT 和 DENY UPDATE权限,没有对U1进行其他授权,则U1对表T有权执行的操作是( )。

A.SELECT和UPDATE

B.INSERT、UPDATE和SELECT

C.SELECT和INSERT

D.SELECT

答案:C

4.在SQL Server 2008中,设用户 U1 是某数据库 db_datawriter 角色中的成员,则U1在该数据库中有权执行的操作是(  )。

A. SELECT(db_datareader 的权限)

B.SELECT和INSERT

C. INSERT、UPDATE和DELETE(db_datawriter:没有查询功能)

D.SELECT、INSERT、UPDATE和DELETE

答案:C

5.在SQL Server 2008中,只具有修改数据库中全部用户表数据权限的系统角色是 (  ) 。

答案: db_datawriter

6.设在SQL Server 2008某数据库中,要设置不允许用户U1获得对表T数据的删除权限,请补全实现该授权操作的SQL语句:

(  )ON T TO U1;

答案: DENY DELETE



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3