SQL Server 数据库理论

目录

1,关系数据库基础

数据的管理两阶段:

数据的两个特征:

数据模型三要素:

E-R模型向关系模型的转换:

三级模式:

范式:

2,数据库的创建与管理

系统数据库:

数据库的组成:

T-SQL创建数据库:

3,SQL基础

SQL(Structured Query Language,结构化查询语句)

流程控制基础语句:

4,架构与基本表

架构:

建立基本表:

5,数据操作语言

查询(SELECT)语句:

部分解释:

6,高级查询

子查询:

相关子查询:

查询结果的并,交,差,运算:

7,索引,视图

索引的概念:

视图的概念特点:

8,储存器和触发器

存储过程的概念:

        1. 存储过程的定义

        2. 存储过程的类型 

触发器:

DML(标准触发器)触发器:

DDL触发器:

9,函数和游标

函数:

游标(相当于文件指针):

10,安全管理,备份恢复,数据传输等

SQL Server的3步认证:

权限种类:

权限管理语句:

 角色概念:

备份设备(BACKUP):

备份类型及策略:

数据传输:


SQL Server 2017版本介绍:

  Enterprise(企业版):功能全面,性能高,收费
  Standard(标准版):基本功能,适用于小型组织。
  Web(网络版):成本低,
  Developer(开发版) :支持开发人员,包括企业版所 有功能,但有许可限制。
  Express(免费版) :入门级,供学习,要单独装SSMS(数据库访问,配置,管理所有SQL server组件。)。

1,关系数据库基础

数据的管理两阶段:

1.文件管理阶段

        编程不便

        共享性差,冗余度大,

        不独立,无结构

2.数据库管理系统

        易操作,相互管理的数据集成在一起

        共享性好,冗余度小。

        程序与数据独立,安全可靠。

        保证数据正确性

数据的两个特征:

        静态特征:

                数据的基本结构:例如学生的基本信息包括学号,姓名,性别,出生日期,专业

                数据的联系:学生选课信息包括对于课程和学生信息的两数据的联系。

                对于数据取值范围的约束:例如性别约束为男或女,成绩约束为0~100。

        动态特征:对于数据的操作。增,删,查,改。

数据模型三要素:

1,数据结构:(所研究的对象类型的集合,包括两类)

        数据类型,内容,性质有关的对象

        数据之间的联系。

2,数据操作:

        数据查询,在数据集合中提取用户感兴趣的内容

        数据更改,包括插入,删除,修改。

3,数据完整性约束:

        给定的数据模型中数据及其联系所具有的制约和依存规则,以确保数据的正确,有效和相容。例:如人的年纪在0~130岁之间

E-R模型向关系模型的转换:

        实体:数据对象,常用于表示一个人、地方、某样事物或某个事件。(矩形表示)

        联系:关系表示一个或多个实体之间的联系。(菱形表示)

        属性:实体提供详细的特征描述信息。(椭圆表示)

图例:(一个三实体的ER图)

 解析:

        用户(实体)有真实姓名,专业班级,电话号码,学号,昵称(属性)。可进行动态发布(联系)。动态(实体)有学号,点赞数,动态编号,发布内容,发布时间,标签类别(属性),可以和信息(此处信息应该改为评论人)发生交流(联系)。信息(实体)有评论人昵称,回复评论内容,评论时间,动态编号,评论编号,被评论人学号(属性)。

三级模式:

        内模式:最接近物理储存(指针,索引,散列表)。

        外模式(子模式):最接近用户(外部视图)一个数据库可以有多个外模式

        模式(概念模式):介于内模式与外模式之间。数据库中的全部信息,只能有一个模式

范式:

        一般来说数据库有1NF,2NF,3NF,BCNF,4NFD等范式,一般范式越高,关系模式越好

第一范式:不包含重复组的关系,即所有数据项是最小数据项。

例:学生表(学号、用户名、性别、年龄),每一项是一个具体的,不能再细分。

第二范式:每个非主属性都完全函数依赖于R的主关系键(任意一个字段都只依赖表中的同一个字段),在第一范式的基础上,消除非主属性对主关系键的部分函数依赖。

例:sno(学号),cno(课程号), Score(成绩), sname(姓名)

有一个关系SSC(sno,cno,Score,sname);此时不是第二范式。

拆解后学生表S(sno,sname),成绩表 SC(sno,cno,Score)为第二范式

第三范式:每个非主属性都不传递函数依赖R的主关系键,在第二范式的基础上,消除非主属性对主关系键的传递函数依赖。

例:sno(学号),cno(课程号), Score(成绩), sname(姓名),dept(院系) depter(院长)

有一个关系SSCR(sno,cno,Score,sname,dept,depter)此时不是第三范式。

拆解后S(sno,sname,dept),SC(sno,cno,score),R(dept,depter)

BCNF范式:满足3NF,且不存在主属性依赖于非主属性。

若还不理解走这里范式举例说明范式理论

2,数据库的创建与管理

系统数据库:

        master:用于记录SQL Server所有系统信息包括登陆账户,端点,链接服务器等。

        msdb:代理计划警报和作业,保存调度报警,作业等的相关信息。

        model:用作SQL server实例上创建所有数据库的模板。

        tempdb:临时数据库,是一个全局资源。

数据库的组成:

1,数据文件:

        主要数据文件:数据库的启动信息,以及其他数据库中其他文件的位置信息。扩展名是.mdf。

        次要数据文件:可选的,由用户定义并储存用户数据。扩展名.ndf。

2,日志文件:用于存放恢复数据库的所有日志信息。扩展名.ldf。

3,逻辑文件和物理文件:逻辑文件名指引用物理文件时用的名称,必须唯一。物理文件名目录路径的物理文件的名称。

T-SQL创建数据库:

例:(一个数据文件和日志文件)

CREATE DATABASE RShDB    --创建名为“RShDB”的数据库
ON PRIMARY    --主要文件
( NAME=RshDB_Data    --逻辑文件名
  FILENAME ='D:\RshDB_Data\RshDB_Data.mdf'    --存放路径
  SIZE=100,    --初始值
  MAXSIZE=300,    --最大值
  FILEGROWTH=50    --自动增量
)
FILEGROUP Data    --次要文件
( NAME=RshDB_Data1    --逻辑文件名
  FILENAME ='D:\RshDB_Data\RshDB_Data1.mdf'    --存放路径
  SIZE=100,    --初始值
  MAXSIZE=300,    --最大值
  FILEGROWTH=50    --自动增量
)
LOG ON    --日志文件
( NAME=RsHDB_log,    --日志文件名
  FILENAME='D:\RshDB_Data\RshDB_Data.ldf'    --存放路径
  SIZE=20,    --初始值
  MAXSIZE=120, --最大值
  FILEGROWTH=20  --自动增长
)
( NAME=RsHDB_log2,    --日志文件名
  FILENAME='D:\RshDB_Data\RshDB_Data2.ldf'    --存放路径
  SIZE=20,    --初始值
  MAXSIZE=120, --最大值
  FILEGROWTH=20  --自动增长
)

3,SQL基础

SQL(Structured Query Language,结构化查询语句)

SQL功能
SQL功能动词
数据定义CREATE,DROP,ALTER
数据查询SELECT
数据操纵INSERT,UPDATE,DELETE
数据控制GRANT,REVOKE,DENY

流程控制基础语句:

        BEGIN...END:用于定义一个语句块,将一系列T-SQL语句包容起来,使其作为一个语句块使用。

        IF.....ELSE:用于构造选择分支。

        WHILE:用于设置重复执行的语句块。

例1:

DECLARE @x int, @y int, @z int --定义变量
SET @x=40    --变量赋值
SET @y=30    --变量赋值
IF(@x>@y)    --选择结构如果
    SET @z=@x-@y
ELSE         --则执行
    SET @z=@y-@x
print @x
print @y
print @z

例2:计算1+2+3......+100

DECLARE @i int, @sum int    --定义变量
SET @i    --赋初值
SET @sum=0    --赋初值
WHILE @i<=100    --判定当i小于100循环
BEGIN        --执行下面两个语句
    SET @sum=@sum+@i
    SET @i=@i+1
END
PRINT @sum    --打印sum总数

4,架构与基本表

架构:

        架构(schema,也称为模式)是数据库中的一个 逻辑命名空间,可以存放表、视图等数据库对象, 它是一个数据库对象的容器(相当于文件夹)。一个数据库可包含一个或多个模式,模式中所有 对象有相同的所有者并且共享一些默认值。同一个数据库中,模式名必须唯一

建立基本表:

示例:创建包含标识列的表,标识列的种子值和增量值为1。
CREATE TABLE IDTable
(
SID INT IDENTITY (1,1) ,  --IDENTITY列(标识列)可以在所有数值数据类型列上定义
  Name VARCHAR(20)
)
修改表:使用 ALTER TABLE 语句实现

   代码如下:

/*学生表*/
CREATE TABLE student
(
   Sno      Char(9)		/*学生信息*/ PRIMARY KEY,    --主键
   Sname    Char(6)	    /*学生姓名*/ NOT NULL,       --不可为空
   Ssex	    Char(2)    /*学生性别*/ DEFAULT '男',    --默认为男  	
   Sage	    Int 	   /*学生年龄*/ CHECK(Sage>=15 AND Sage<=45) --限制年龄范围 	
   Sdept 	VarChar(8),	/*学生所在院系*/	
)
/*课程信息表*/
CREATE TABLE course
( 
  Cno	    Char(4)	       /*课程编号*/	PRIMARY KEY,
  Cname	    VarChar(20)	   /*课程名称*/	NOT NULL,
  Cpno	    Char(4),	   /*先行课*/	
  Ccredit	Int,	       /*学分*/	    
)
/*选课信息表*/
CREATE TABLE sc
 (
   Sno	    Char(9)	/*学生学号*/, UNIQUE,         --唯一 
   Cno	    Char(4)	/*课程编号*/,
   Grade	Int	        /*成绩*/,
   primary key(Sno,Cno)
 )

5,数据操作语言

查询(SELECT)语句:

查询数据可来自于一张表,视图,或者多张表。

        格式:

SELECT <目标列名>                --需要哪些列

        FROM <表名>                 --来自哪个表

WHERE <行选择条件>          --判定条件

GROUP BY<分组依据>

HAVING<组选择条件>

ORDEER BY <排列依据列>

WHERE子句常用查询条件
查询条件谓词
比较(比较运算符)=,>,>=,<=,<,<>,!=,!>,!<NOT+上述比较运算符
确定范围BETWEEN...AND、NOT..BETWEEN..AND
确定集合IN,NOT IN
字符匹配LIKE,NOT LIKE
空值IS NULL ,IS NOT NULL
多重条件AND,OR
 

部分解释:

BETWEEN下限值AND上限值

例:

SELECT Sno,Cno,Grade FROM SC  --查询成绩在80-90学生的学号,课程号,成绩
    WHERE Grade BETWEEN 80 AND 90

LIKE 运算符的一般语法格式:

列名 [NOT ] LIKE <匹配串>

1,_(下划线):匹配任意一个字符

2,%(百分号):匹配0个或多个字符

3,[]:匹配[]中的任意一个字符([a、b、c、d]匹配abcd中任意一个)

4,[^]不匹配[]中的任意一个字符

例:

--查询姓张的同学的所有信息
SELECT * FROM studen WHERE Sname LIKE '张%'
--查询姓张,李,刘的学生的信息
SELECT * FROM studen WHERE S那么 LIKE '[张李刘]%'

聚合函数:

COUNT(*):统计表中元组的个数。

COUNT([DISTINCT]<列名>):统计本列的非空列值个数。

SUM(<列名>):计算列值和值(必须是数值型列)

AVG(<列名>):计算列值的平均值

MAX(<列名>):得到列值的最大值

MIN(<列名>):得到列值的最小值

例:

--统计学生0831103的平均成绩
SELECT  AVG(Grade) FORM Sc  WHERE Sno='0831103'
--查询C001号课程的考试成绩最高分和最低分
SELECT MAX(Grade) 最高分,MIN(Grade) 最低分FROM SC WHERE Cno='C001'

GROUP BY函数:

 分组函数必须在表中存在的列名,而且只出现聚合函数或者分组依据列。

--统计每个学生的选课门数和平均成绩
SELECT Sno 学号,COUNT(*) 选课门数,AVG(Grade) 平均成绩
    FROM SC GROUP BY Sno

HAVING子句:对于分组后统计结果筛选,与WHERE子句类似,可使用聚合函数,常与GROUP BY子句一起使用

例题:

--查询选课门数超过3门的学生的学号和选课门数
SELECT Sno COUNT(*) 选课门数 FORM SC
    GROUP BY Sno 
    HAVING COUNT(*)>3

TOP谓词使用的格式如下:

        TOP (expression) [percent] [WITH TIES]

        expression:指定返回行数的数值表达式。

       percent指定返回结果集中前expression%行数据

        WITH TIES额外返回数据行。

例:

--查询考试成绩最高的3个成绩,列出对应学生的学号,课程号,和成绩。
SELECT TOP 3 Sno,Cno,Grade FROM SC
    ORDER BY grade DESC

综合例题(重点):

例1,

--统计计算机系每个学生的选课门数,平均成绩,最高成绩,最低成绩
SELECT S.Sno,
 COUNT(*) AS Toal,AVG(Grade) AS AvgGrade,MAX(Grade) AS MAXGrade,MIN(Grade) AS MINGrade
 FORM student S JOIN SC ON S.Sno=SC.Sno
 WHERE Dept="计算机系"
 GROUP BY S.Sno

例2,

--查询与刘晨在同一系学习的学生的姓名和所在系.
SELECT S2.Sname,S2.Dept FROM Student S1 JOIN Student S2
    ON S1.Dept = S2.Dept
    WHERE S1.Sname='刘晨'
    AND S2.Sname!='刘晨'

例3,

--查询全体学生的选课情况,包括选修了课程的学生和没有选修课程的学生。列出学号,姓名,课程号,成绩
SELECT S.Sno,Sname,Cno,Grade
    FROM Student S LEFT OUTER JOIN SC
    ON S.Sno=SC.Sno

6,高级查询

子查询:

        如果一个SELECT语句嵌套在另一个SELECT, INSERT, UPDATE, DELETE语句中则称之为子查询。

WHERE子句中的子查询通常有如下几种形式:

WHERE <列名>[NOT] IN(子查询)

WHERE<列名>比较运算符(子查询)

WHERE EXISTS(子查询)

例题1:

--查询与“刘晨”是同一个系的学生
SELECT Sno,Sname,Dept FROM student     --外层查询
    WHERE Dept IN (SELECT Dept FROM student WHERE Sname="刘晨") --子查询

例题2:

--查询选修Java课程的学生的姓名和所在系
SELECT Sname,Dept FROM Student WHERE Sno IN
(SELECT Sno FROM SC WHERE Cno IN
    (SELECT Cno FROM Course WHERE Cname='Java'))

例题3

--删除Java考试成绩最差的学生的Java选修课记录
DELETE FROM SC WHERE Sno IN
    (SELECT TOP 1 WITH LIES Sno FROM SC JOIN Course CON C.Cno=SC.Cno
    WHERE Cname="JAVA"
    ORDER BY Grade ASC AND Cno IN(SELECT Cno FROM Course WHERE Cname ="JAVA")
    )

嵌套子查询:

        内层查询中不关联外层查询的子查询,子查询返回一个单值(外层查询用改单值比较),或者列表(外层查询利用列表IN运算符的比较。)

例1:

--查询选修C004课程且成绩高于此课程的平均成绩的学生学号和成绩
SELECT Sno,Grade FROM SC WHERE Grade>
 (SELECT AVG(Grade) FROM SC WHERE Cno="C004")

相关子查询:

        相关子查询的信息传递是双向的,子查询给外层查询传递信息。外层查询也给子查询传递信息。(相关子查询,首先是外层查询将信息传递给内层查询,内层查询再执行结果再返给外层查询,外层查询再利用返回的结果判断当前数据是否满足要求)

简述步骤:

从外层查询获取到一条记录,并将该记录信息传递给内层循环。

内层查询根据外层查询传递的值执行查询操作。

内层查询将执行结果传回给外层查询,外层查询利用返回值完成对当前记录的处理。

例1:

--查询每门课程中考成绩低于该门课程平均分的学生的学号和成绩
SELECT Cno,Sno,Grade FROM SC SC1
   WHERE Grade<(SELECT AVG(Grade) FROM SC SC2 WHERE SC1.Cno=SC2.Cno)

例2:

--查询学生姓名,所在系,以及该学生选修的课程门数
SELECT Sname,Dept,(SELECT COUNT(*) FROM SC WHERE Sno=Student.Sno)AS countCno FROM Student

查询结果的并,交,差,运算:

        并运算(UNION)可将两个或多个查询语句的结果集合并为一个结果集。

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

        交运算(INTERSECT)返回两个查询结果集中各列的值均相同的记录。

SELECT 语句1
INTERSECT
SELECT 语句2
INTERSECT
.....

        差运算(EXCEPT)返回一个集合中有另一个集合中没有的记录。

SELECT 语句1
EXCEPT
SELECT 语句2
EXCEPT
....

例:首先生成储存“信息管理系”学生的表“Student_IS”。然后利用该表及Student表查询"计算机系"和“信息管理系”的学生的姓名,出生日期,所在系

SELECT Sname,Dept,BrithDate    --生成Student_IS表
INTO Student_IS FROM Student 
WHERE Dept ='信息管理系'

SELECT Sname,Dept,BrithDate FROM Student WHERE Dept="计算机系"
UNION
SELECT Sname,Dept,BrithDate FROM Student_ID 

7,索引,视图

索引的概念:

①索引与书籍中的目录或者术语表类似;
索引是加快数据查询效率的一种有效方法;
索引使对数据的查找不需要对整个表进行扫描, 就可以在其中找到所需数据。
可以为表中的单个列建立索引,也可以为一组列 (索引项)建立索引。
索引一般采用B树结构。
聚类索引:
聚集索引的B + 树按 自下而上建立 ,最下层的叶级节 点存放数据,它同时也是数据页。 多个数据页生成一个中间层节点的索引页,然后再 由数个中间层的节点的索引页合成更上层的索引页, 如此上推,直到生成顶层的根节点的索引页。 生成高一层节点的方法:从下一层节点开始,高一 层节点中的每个索引项的索引关键字值是其下层节 点中索引关键字的最大或最小值
非聚类索引:
非聚集索引 与图书后边的术语表类似。数据存储 在一个地方,术语表存储在另一个地方。而且数 据并不按术语表的顺序存放,但术语表中的每个 词在书中都有确切的位置。
非聚集索引就类似于术语表 ,而数据就类似于一 本书的内容。
唯一索引:
唯一索引 确保索引列不包含重复值。 组合唯一索引可以确保索引列中每个值的组合都 是唯一的,例如,如果在last_name、first_name 和middle_initial列的组合上创建了唯一索引 full_name,则该表中任何两个人都不可以具有完 全相同的名字。 聚集索引和非聚集索引都可以是唯一的。 只有当数据本身具有唯一性时,指定唯一索引才 有意义。 实际上,当在表上创建PRIMARY KEY约束或UNIQUE约 束时,系统会自动在这些列上创建唯一索引。

视图的概念特点:

视图是 动态结果 :对一个或多个基本关系进行关 系操作得到的动态结果
视图是 虚表 数据库中只存储视图的定义,而不 存储视图所包含的数据
视图的内容被定义成基于一个或多个基本关系或 视图的查询

8,储存器和触发器

存储过程的概念:

        1. 存储过程的定义

存储过程可以使用户对数据库的管理工作变得更容易。存储过程是SQL语句和流程控制语句的预编译集合,它以一个名称存储并作为一个单元处理,能够提高系统的应用效率和执行速度(预先编译好的一段程序)。 用户可以通过指定存储过程的名字并给出参 数(如果该存储过程带有参数)来执行(调用)存储过程。 存储过程类似于函数,是独立存储的数据库对象。

        2. 存储过程的类型 

1)系统存储过程: SQL Server中的许多管理活动或信息性的活动 (如获取数据库和数据库对象的信息)都是通 过一种特殊的存储过程执行的,这种存储过程 被称为系统存储过程。 系统存储过程主要存储在master数据库中并以 sp_开头SP_HELPDB:报告有关指定数据库 或所有数据库的信息。

2)本地存储过程 : 即本地服务器上的存储过程,也就是一般所称 用户自定义存储过程
本地存储过程也就是 用户自行创建 、能完成某 一特定功能(如查询用户所需的数据信息)、并 存储在用户数据库中的存储过程,一般所说的 存储过程指的就是本地存储过程。(有权限的
用户程序都可以调用)
3)临时存储过程(有一定的使用期限) ① 本地临时存储过程 ② 全局临时存储过程
4)远程存储过程(即远程服务器上的存储过程)
5)扩展存储过程(高级语言编写,功能更强)
         3. 存储过程的 功能
1)接受输入参数并以输出参数的形式将多个值 返回给调用者。
3)包含执行数据库操作的语句。
4)将查询语句执行结果返回到客户端内存中。
        4. 存储过程的 优点
允许模块化程序设计
只需创建一次并存储在数据库中,就可以在 应用程序中反复调用该存储过程
改善性能
在创建存储过程时对代码进行分析和优化, 并在第一次执行时进行语法检查和编译,将 编译好的可执行代码存储在内存的一个专门 缓冲区中,以后再执行此存储过程时,只需 直接执行内存中的可执行代码即可。
减少网络流量
只需要一条执行存储过程的代码即可实现, 因此,不再需要在网络中传送大量的代码。
可作为安全机制使用
对于即使没有直接执行存储过程中的语句 权限的用户,也可以授予他们执行该存储 过程的权限。

触发器:

        定义:一段由对数据的更改操作引发的自动执行的代码。是一种特殊类型的存储过程,在特定的语言事件发生时自动执行。

DML(标准触发器)触发器:

        CREATE TRIGGER 触发器名
        ON 表名 |视图名
        { FOR | AFTER | INSTEAD OF }
        { [INSERT][,] [DELETE][,] [UPDATE] }
        AS sql_statement
        
例:
CREATE Trigger tri_Semester
    ON Course AFTER INSERT,UPDATE
AS
    IF EXISTS(SELECT* FORM INSERTED WHERE Semester NOT BETWEEN 1 AND 10)
    ROLLBACK
GO

DDL触发器:

        CREATE TRIGGER trigger_name
        ON { ALL SERVER | DATABASE }
        [ WITH ENCRYPTION ]
        { FOR | AFTER } { event_type |
        event_group } [ ,...n ]
        AS sql_statement
        [ ; ] [ ,...n ]
例:
CREATE TRIGGER ddl_tri_Table
ON DATABASE 
FOR DROP_TABLE, ALTER_TABLE
AS 
PRINT '不能在Studnets中删除或更改表!'
ROLLBACK

9,函数和游标

函数

定义极大的扩展数据操作的功能,有标量函数返回单值数据,表值函数返回表。

创建自定义函数与调用(例):

CREATE FUNCTION dbo.f_Count(@sno char(7))    --定义函数框架和函数名
RETURNS int    --确定返回值类型
AS
  BEGIN        --其中做操作
    RETUERN (SELECT count(*) FROM SC WHERE SNO= @sno)
END

/*在查询中调用*/
SELECT Sname AS 姓名,
    dbo.f_Count(Sno) AS 选课门数
    FROM Student
    WHERE Dept='计算机系'

游标(相当于文件指针)

包含两部分

        游标结果集:由定义游标的SELECT语句返回的结果的集合。

        游标当前行指针:指向该结果集中的某一行的指针。

游标使用例:

DECLARE CS_cursor SCROLL CURSOR FOR    --声明游标
SELECT Sname, Cname, Grade FROM Student S 
JOIN SC ON S.Sno = SC.Sno
JOIN Course C ON C.Cno = SC.Cno
WHERE Dept = '计算机系'
ORDER BY Grade DESC
OPEN CS_cursor                    -- 打开游标
FETCH LAST FROM CS_cursor         -- 提取最后一行数据
FETCH ABSOLUTE 4 FROM CS_cursor   -- 提取第四行数据
FETCH RELATIVE 3 FROM CS_cursor   -- 提取当前行后边的第三行数据
FETCH RELATIVE -2 FROM CS_cursor  -- 提取当前行前边的第二行数据
CLOSE CS_cursor                   -- 关闭游标 
DEALLOCATE CS_cursor

10,安全管理,备份恢复,数据传输等

SQL Server的3步认证:

     第一步身份验证:该过程,通过登陆账户来标识用户,授权连接到数据库服务器的连接权

     第二步访问权认证:用户访问数据库必须具有访问权,验证是否为合法用户。

     第三步操作权认证:当用户操作数据库中的数据时,必须有相应的操作权限。

权限种类:

  对象权限:用户在已经创建好的对象上行使的权限。

常用DELETEINSERTUPDATESELECT具有对表和视图数据进行删除、插入、更 改和查询的权限,其中UPDATE和SELECT可 以对表或视图的单个列进行授权。EXECUTE,具有执行存储过程的权限。

  语句权限:可以执行相应语句以创建对象的权限。

        CRAETE TABLE:创建表的权限。
        CREATE VIEW:创建视图的权限。
        CREATE PROCEDURE:创建存储过程的权限。
        CREATE DATABASE:创建数据库的权限。
        BACKUP DATABASE和BACKUP LOG:备份数据库和备份日志的权限。

  隐私权限:指由SQL Server预定义的服务器角色、数据库 角色、数据库拥有者和数据库对象拥有者所具有 的权限,隐含权限相当于内置权限,不需要再明 确地授予这些权限。

权限管理语句:

权限语句
权限管理语句:对表和视图主要有对存储过程有
GRANT:授予权限;INSERT、EXECUTE
REVOKE:收回权限;DELETE、
DENY:拒绝权限。UPDATE、
SELECT
 
例1.为用户user1授予Student表的查询权。
GRANT SELECT ON Student TO user1

例2.为用户user1授予SC表的查询和插入权。

GRANT SELECT,INSERT ON SC TO user1

例3.收回用户user1对Student表的查询权。

REVOKE SELECT ON Student FROM user1

例4.拒绝user1用户具有SC表的更改权。

DENY UPDATE ON SC TO user1

 角色概念:

为便于对用户及操作权限进行管理,将一组具有相同权限的用户组在一起,这组用户称为角色。(角色 —— 就是操作权限的集合

备份设备(BACKUP):

备份设备在操作系统一级实际上就是物理存在的磁带或磁盘上的文件 SQL Server支持两种备份方式。
        1,先建立备份设备,然后再将数据库备份到备份设 备上
        2,直接将数据库备份到物理文件上
恢复模式(RESTORE):
        
简单恢复模式
        无事务日志备份;
        只能恢复到数据备份的结尾;
        可最大程度地减少事务日志的管理开销
         将面临极大的工作丢失风险。
        通常,简单恢复模式只用于测试和开发数据 库,或 用于主要包含只读数据的数据库
完整恢复模式
        有完整的事务日志
        可以恢复到任何时点
        无工作丢失风险
        正常情况下,数据库使用完整恢复模式或简 单恢复模式。
大容量日志恢复模式
        有事务日志备份;
        可以恢复到数据备份的结尾;
        不支持时点恢复;
        是完整恢复模式的附加模式;
        允许执行高性能的大容量复制操作;
        只对大容量操作进行最小方式记录,减少事 务日志空间使用量。

备份类型及策略:

备份类型
        数据库备份
完整备份:恢复的基线。在备份时不影响用户对数据库的操作。备份数据库中的全部信息。
备份备份过程中发生的活动。
差异备份:以前一次完整备份为基准点(差异基准),备份从上次完整备份之后数据库的全部变化内容。备份差异备份过程中发生的活动。差异备份的的时间和大小取决于自建立差异基准后更改的数据量。通常,差异基准越旧,新的差异备份就越大。
        事务日志备份
不备份数据库本身,它只备份日志记录 , 只备份从上次备份之后到当前备份时间发生
变化的日志内容。 可以将数据库恢复到故障点或特定的某个时 间点。
②备份策略  
        完整备份
        完整备份 + 事务日志备份
        完整备份 + 差异备份 + 事务日志备份

数据传输:

 概念:数据传输(或数据转移)是指把不同来源的数据进行 相互传输,使之能相互利用其他数据源上的数据。

SSIS:来实 现包括数据传输、转换、加载等数据集成工作以及数据流解决方案。

ODBC:开放的 数据库系统应用程序接口规范。它为应用程序提供了一套高层调用接口规范和基于 动态链接库的运行支撑环境。 应用程序使用标准的ODBC接口和SQL语句,数据库的 底层操作由各个数据库的驱动程序完成。使数据库应用程序具有很好的适应性和可移植性, 且具备同时访问多种数据库管理系统的能力。

数据种类:

包括Access、Excel、 Oracle、SQL Server等

上机实践例子点击这里:SQL service数据库基础实践操作

理论知识课后题点击这里:课后习题

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值