七.数据完整性

1.概念:数据一致性和正确性。

分类:域完整性、实体完整性、引用完整性。

浅析:域完整性也叫列完整性是指七个数目集对某些列是还是不是管用和规定是否允许为空值。实体完整性也叫行完整性
须要具有的行都有二个唯一的标示符。援引完整性保险主键和外键之间的涉嫌总是获得维护。

福寿绵绵:A评释数据完整性和B进度数据完整性。 
A完毕包涵各个束缚、缺省和准绳。B落成格局包蕴触发器和存款和储蓄进程等。

2.约束和完整性之间的关联:

完整性类型

封锁类型

描述

域完整性

Default

在使用insert语句插入数据时,借使有些列的值没有给定,则将授予暗中同意值

Check

对某一列值进行检讨

实业完整性

主键

可见唯一锁定一行记录的标示符,该列不可能为空。

Unique

防止现身冗余值,并且保障创建索引,进步品质,允许为空。

引用完整性

外键

将叁个表中的主键拿过来作为该表的列,那么这一列就是外键。

3.管理约束:default、check、主键约束、unique、外键约束

Default:

1)create table 语句的列的习性中 create table lin (name varchar(50),age
int, gender char(2) default ‘男’)

2)alert table 语句中定义default约束: alter table lin   add constraint
约束名称 default ‘男’ for gender

Check:

1)create table lin (name varchar(50),age int, gender char(2) default
‘男’ check (gender=’女’ or gender=’男’))

2)alert table 语句中定义default约束: alter table lin   add constraint
约束名称 check(gender=’女’ or gender=’男’)

主键约束语法:

列级约束:①constraint constraint_name primary key

②primary key

表级约束:③constraint constraint_name primary key(column_list)

④primary key(column_list)

例如:1)create table lin (id int primary key, name varchar(50),age
int, gender char(2) default ‘男’ check (gender=’女’ or gender=’男’))

2)create table lin (id int, name varchar(50), primary
key(id,name)
,age int, gender char(2) default ‘男’ check (gender=’女’
or gender=’男’))

Unique约束:

语法:①constraint constraint_name unique    ②unique   ③constraint
constraint_name unique(column_list)④unique(column_list)

外键约束:

1)在create table 语句中定义外键约束:create table A (id int primary
key,…) create table B (id int primary key, aid int foreign key
references A(id)
)

2)在alter table 语句中定义外键约束:create table A (id int primary
key,…) create table B (id int primary key, aid int not null)

Alter table B add constraint 约束名称 foreign key(id) references
A(id)
on delete cascade

3)删除约束:alert table B drop constraint 约束名称

4.禁止约束: 正是不让约束对有些列生效。

比如:Alter table with nocheck B add constraint 约束名称
check(gender=’女’ or gender=’男’)不开始展览性别检查。

八.视图

概念:从贰个或几个着力表导出的表。数据库中只存放视图的概念,而不存款和储蓄视图对应的多少。视图是一种逻辑对象,是虚拟表。除非是索引视图,不然视图不占物理存款和储蓄空间。

行使视图优点:1)聚集用户选择的数据2)掩码数据库的纷纷:视图把数据库设计的纷纭与用户的采用方法屏蔽开了。为开荒职员提供了一种数据库的安排而不影响用户使用的力量。3)简化用户权限的处理4)方便重新组织数量为此外应用程序提供出口数据集结。

1.创建视图   create view view_name[with encryption]  as 
select_statement

一旦指望加密视图定义文本,能够应用with encryption子句。

2.改换视图注意:

1)不可能影响多少个或七个以上的基表。2)有个别列不可能改改。3)借使影响到表中这几个并未有暗许值的列,就可能滋生错误。4)假使定义了with
check option选项,那么系统验证所修改的数据。With check option
选项强制对视图全部修改语句必须知足定义视图所用的select语句的行业内部。

九.囤积进程、触发器和函数

先看概念,再看实例!

1.仓库储存进度:是多少个方可选择的代码模块,能够便捷的产生内定的操作。

 
优点:1)在服务器蚕月注册。2)安全性高防患sql嵌入式攻击3)能够模块化设计进步规划作用4)存款和储蓄进度是一组命名代码,允许延迟绑定。5)缩短网络通信流量。

  类型:用户自定义、扩大存款和储蓄进程、系统存款和储蓄进程。

  语法:create procedure procedure_name  parameter_name data_type,…

        [With procedure_option] as sql_statement

  创建:create procedure pro_lin  as select * from lin;

  试行:execute/exec  存款和储蓄进度名称。

  接收结果: output

  修改:alter procedure语句。

  删除:drop procedure语句。

  施行进程(第一回):语法剖判阶段、分析阶段、编译阶段、实行品级。

  查看存款和储蓄进程音信:sp_A声明数据完整性和B过程数据完整性。helptext、 objectdefinition元数据函数。

  隐藏定义文本:with encryption

2.触发器:

概念:事件-条件-动作准则。当特定的种类事件对一个表的增删改查操作发生时,对法则的基准举办检查,假使条件建设构造则施行准则中的动作,不然不实践。

   
分类:DML触发器和DDL触发器。DML触发器分为:INSERT类型、UPDATE类型、DELETE类型。DDL触发器分为(事件类型):CREATE、ALTERubicon、DROP、GRANT、DENY、REVOKE。

制造语法:DML触发器  create trigger trigger_name on
table_name_or_view_name [with encryption] {for|after|instead
of}{[delete],[insert],[update]A声明数据完整性和B过程数据完整性。} as sql_statement

DDL触发器   create trigger trigger_name on {all servler|
database}[with encryption] {for|after}{事件类型} as sql_statement

 

    DML触发器专业原理(拣器重说):
当INSERT触发器触发时,新的纪录扩展到触发器表二月inserted表中。当DELETE触发器触发时,被剔除的记录放在一个特殊的deleted表中。Deleted表是二个逻辑表,用来保存已经从表中删除的纪录。当update触发器触发时,表中原本的纪要移动到deleted表中,修改过的记录插入到inserted表中。

3.函数

  分类:标量函数、内联表值函数、多语句表值函数、

创制:标量函数create function function_name(@parametername_list) as
begin Function_body  return 再次回到的言语   end

    内联表值函数  create function function_name(@parametername_A声明数据完整性和B过程数据完整性。list)
return TABLE as  return (查询的语句 )

多语句表值函数  create function function_name (@parametername_list)

Returns 有的时候变量 table (表的定义) as begin   functin_body  return end

4.函数演练实例:

–创设mydb数据库,并创设学生表(学号、姓名、性别、年龄、职业)、课程表(课程编号、课程名称、先行课号、学分)和选课表(学号、课程号、成绩)

 

create database mydb

go

use mydb

go

 

CREATE TABLE Student         

(

Sno CHAR(9),

Sname CHAR(20),

A声明数据完整性和B过程数据完整性。Sgender CHAR(2),

Sage SMALLINT,

Sdept  CHAR(20)

)

 

insert into Student values(‘200215121′,’李勇’,’男’,20,’CS’)

insert into Student values(‘200215122′,’刘晨’,’女’,19,’CS’)

insert into Student values(‘200215123′,’王敏’,’女’,18,’MA’)

insert into Student values(‘200215125′,’张立’,’男’,19,’IS’)

 

CREATE TABLE Course

(

Cno CHAR(4),

Cname  CHAR(40),

Cpno CHAR(4),

Ccredit SMALLINT

)

A声明数据完整性和B过程数据完整性。 

insert into Course values(‘1′,’数据库’,’5′,4)

insert into Course values(‘2′,’数学’,NULL,2)

insert into Course values(‘3′,’新闻系统’,’1′,4)

insert into Course values(‘4′,’操作系统’,’6′,3)

insert into Course values(‘5′,’数据结构’,’7′,4)

insert into Course values(‘6′,’数据管理’,NULL,2)

insert into Course values(‘7′,’PASCAL语言’,’6′,4)

 

 

CREATE TABLE SC

(

Sno CHAR(9),

Cno CHAR(4),

Grade SMALLINT

A声明数据完整性和B过程数据完整性。)

 

insert into SC values(‘200215121′,’1’,92)

insert into SC values(‘200215121′,’2’,85)

insert into SC values(‘200215121′,’3’,88)

insert into SC values(‘200215122′,’2’,90)

insert into SC values(‘200215123′,’3’,80)

 

–1.创制标量函数,使用该函数。当用户输入课程名称时,重临这门课程的最低分

 

create function retGrade(@courceName varchar)

returns int

begin 

end

 

select * from sc;

select * from course;

 

–2.创办内联表值函数,当用户输入学分,再次回到全体学分为该学分的课程的音讯

create function kc (@xf smallint)

returns table

as

return(select * from course where ccredit=@xf)

 

select * from kc(4);

select * from student;

 

–3.创造多语句表值函数,用户输入职业名称时,再次来到全部该专门的学业同学的音讯

create function stu(@zy char(20))

returns @k table(sno char(20),sname char(20))

as

begin

    insert @k

    select sno,sname from student where sdept=@zy

    return

end

 

select * from stu(‘cs’);

 

十.备份和还原

Server 二〇〇九数据备份与回复

1.三种数据库复苏格局:完整苏醒情势、大容积日志记录格局、简单恢复生机方式。

2.多种备份方法:完全体据库备份、增量数据库备份、事务日志备份、数据库文件或文件组备份。

3.上涨操作:restore database语句.

十一.事务

1.定义:用户定义的三个数据库操作类别,那几个操作仍然全做,要么全不做,是叁个不可分割的专业单位。

2.性子:ACID即原子性(atomicity)、一致性(consistency)、隔绝性(Isolation)、持续性(Durability)。

原子性:事务是数据库的逻辑单元,事务中包涵的无尽操作依旧全做,要么不全做。

一致性:当事务落成时,全体的数码都不能不是平等的情事。

隔开分离性:叁个事情的施行不会被其余的政工搅扰。

绵延:贰个作业一旦付出,他对数据库中数据的改动就是永久的。

3.政工的职业规律:涉及三点:事务日志、检查点机制、检查点周期性检查作业日志。

4.管理业务:begin transaction、begin distributed transaction、commit
transaction、rollback transaction、save transaction、set
implicit_transaction

多个应用实例:

use A

create table emp(

eid int,

ename varchar(50)

)

go

use A

begin transaction

insert into emp values(1,’hello’)

save transaction a

insert into emp values(2,’hei’)

save transaction b

insert into emp values(3,’hehe’)

rollback transaction b

insert into emp values(4,’haha’)

rollback transaction a

commit transaction

select * from emp;

go

5.使用锁

锁是防守其余工作访问钦命财富的一手,也是兑现产出控制的秘技。

1).二种错误现象:脏读、不可重复读、幻读。

脏读:一个思想政治工作读到的数额就是另二个事务update更新的多少。

不足重复读:在一个事务内,多次读到同叁个多少却赢得不一致的结果。

幻读:二个作业读到的多少就是另一个业务整顿改进插入insert的多寡。

2).封锁:完成产出调整的二个首要本事。

分拣:排它锁又称写锁。若事务T对数据对象A加上X锁,则只允许T读取和修改A,别的任何业务都无法在对A加别的其余类型的锁,直到T释放A上的锁甘休。  
分享锁又叫读锁。若事务T对数据对象A加上S锁,则只允许T读取但不可能修改A,其余业务只可以在对A加S锁,无法加X锁,直到T释放A上的S锁结束。

3).顶尖封锁协议:事务T在修改数据Rubicon以前务必先对其加X锁,直到职业甘休才获释。二级封锁协议:在超级封锁协议基础上扩大事务T读取数据PRADO以前务必先对起加S锁,读完后就可以自由S锁。三级封锁协议:在一流封锁协议基础上平添事务T读取数据逍客以前必须先对起加S锁,直到工作甘休才获释S锁。

4.活锁与死锁

活锁:二个事务T是有十分大可能率被实践的,但它却处在或许等待状态。(正是要死不死的)

死锁:你等待自身的财富,笔者也在等候你的能源,大家四个都很强势,不松口,就形成了势不两立法局面,不能了事,于是形成死锁。

免去死锁:超时法:超越了鲜明的等候时间,就以为爆发了死锁,系统就能挑选一个代价一点都不大的事体,将其打消,释放此业务有着的装有锁。等待图法:

图片 1

                                   

5.并发调整的可串行性

概念:几个事情的面世实行时不易的,当且仅当其结果与按某叁遍序串行地施行这么些事务时的结果一律。

6.两段锁的情商:全部事情必须分多少个品级对数码项加锁和解锁。

7.七种职业隔开分离品级:①read uncommitted会发生脏读②read
committed大概发生不可重复读和幻读数据 ③repeatable read
或者爆发幻读④snapshot钦命其余读取数据都将是已经存在的数据⑤
serializable品级最高,能够和煦安装等待访问时间。

十二.自动化管理职责

  1. 电动实现职责:一类是推行符合规律调解的职分;二类识别和答复可能碰到的题指标天职。那几个职务是依赖自动化零部件完成的。
  2. 自动化零部件包罗:Windows 伊芙ntLog、MSSQLServer、SQLServer代理。
  3. 警报:用来回答sqlserver系统产生的事件。警报由事件触发,触发的结果能够是实行作业,也足以是同志操作员。

 图片 2

 

                            图1 作业、警报、事件时期的关系

  1. 概念作业的用户不必然是学业的全部者。注意这里是主人是login账户,不是user账户。

      2.警报的实行进度:

     
图片 3

算是计算完了。。。没有食言于昨天。其它有亟待的和谐拿着用!

相关文章