oN a.goodclassID = b.goodclassID
wHERE goodclassName = @class
RETuRN @x
END
调用:SELEcT dbo.f_goodscount(‘服装’) 或者
SELEcT goodsName AS 商品名,dbo.f_goodscount(‘服装’) AS 种类数 From ….
13.5 内嵌表值函数的不同之处在于RETuRNS 后只能是table,RETuRN后面只能是单个的 SELEcT语句,没有相关联的返回变量也没有函数体。调用时放在查询语句的FRom子句中。
13.6 触发器是一种不需要由用户来调用的存储过程,当用户对表进行uPDATE、INSERT或DELETE操作时自动触发执行。作用:保证业务规则和数据完整性。优点:用编程方法来实现复杂的处理逻辑和业务规则,增强数据完整性约束。
13.7 触发器适用场合:比cHEcK语句更复杂的数据约束(可引用其他表中的列);为保证数据库性能而维护的非规范化数据(如增加统计总值的列);实现复杂的业务规则
13.8 AFTER/FoR:后触发型触发器,可在同一操作上建立多个;INSTEAD oF:前触发型,在同一操作上只能建立一个。所有的涉及对数据库对象操作的语句均不允许出现在触发器中。
13.9 DELETED表:存储uPDATE和DELETED操作语句所影响行的更新前的旧数据;
INSERTED表:存储uPDATE和INSERT操作语句所影响行的更新后的新数据。
13.10 维护数据操作完整性的后触发器示例:销售量大于库存量则撤销当前销售,小于时则在插入销售单据明细时同时修改库存量。
create Trigger operatoncon
oN T_SaleDetail FoR INSERT
AS
IF EXISTS(Select * From inserted a Jion T_goods b
oN a.goodsID = b.goodsID wHERE a.Quanity > b.Totalcharge)
BEgIN
RoLLBAcK
PRINT ‘此商品库存量小于此次销售数量’
END
ELSE
uPDATE T_goods SET Totalcharge = Totalcharge –
(SELEcT Quanity From inserted)
13.11 维护不同列之间取值完整性的后触发器示例:保证商品表中的单价与价格变动表中一致
cREATE TRIggER Priceconstraint
oN T_PriceHistory FoR INSERT, uPDATE
AS
DEcLARE @newprice money
SELEcT @newprice = SalePrice From inserted
uPDATE T_goods SET SaleunitPrice = @newprice
wHERE goodsID IN (SELEcT goodID From inserted )
13.12 前触发器指定执行触发器而不执行引发触发器的SQL语句,因此,如果数据操作满足完整性约束则在触发器中必须重新执行这些数据操作语句。
前触发器示例:保证销售单据中的会员卡是有效日期内的会员卡:
cREATE TRIggER cardValid
oN T_SaleDetail INSTEAD oF INSERT, uPDATE
AS
IF NoT EXISTS (SElETcT * From inserted a JoIN T_card b oN a.cardID=b.cardID
wHERE a.SalDate NoT BETwEEN b.StartDate AND b.EndDate)
INSERT INTo T_SaleDetail SELEcT * From inserted (若满足条件此语句重新执行)
13.13 用SQL语句修改存储过程、用户自定义函数、触发器的语法与创建基本一致,只是将cREATE改为了ALTER。(查询分析器中实现) www.gaofen123.com
第14章 安全管理
14.1 数据库的安全控制:在DBmS的不同层次提供对有意和无意损害行为的安全防范。
有意的非法活动:加密存、取数据;有意的非法操作:用户身份验证、限制操作权;
无意的损坏:提高系统的可靠性和数据备份
14.2 数据库权限的种类:对DBmS进行维护的权限;对数据库对象和数据进行操作的权限
SQL Server权限种类(与数据库用户分类对应):隐含权限(预定义的内置权限);语句权限(DDL语句权限,创建删除数据库对象);对象权限(DmL语句权限,操作数据库对象)
14.3 数据库用户的分类:数据库系统管理员(SA,全部权限);数据库对象拥有者(创建数据库对象的用户,对所拥有的对象具有一切权限);普通用户:只具有对数据的编辑查询功能
14.4 三个认证过程:身份认证,只认证用户是否有连接到数据库服务器的“连接权”;合法用户,验证是否是数据库的合法用户;权限认证,验证用户是否具有要进行的操作的操作权限
14.5 系统内置的登录账户:BuILTINAdministrator;SA;域名Administrator,均DBmS管理员
14.6 创建SQL Server身份认证的登录账户:EXEcuTE sp_addlogin ‘user3’,’123’,’jessymin’
user3为登录账户,123为密码,jessymin为默认数据库;wINDowS认证:sp_grantlogin
14.7 删除登录账户存储过程:EXEc droplogin ‘user3’(SQL Server身份验证);EXEc revokelogin ‘Server1nt_user’(wINDowS身份验证)
14.8 登录账户可以连接到SQL Server服务器上但并不具有访问任何数据库的能力,必须再成为数据库的合法用户。一个登录账户可以映射为多个数据库用户,管理数据库用户的过程实际上就是建立登录账户与数据库用户之间的映射关系的过程。新建的数据默认只有一个用户:dbo,它是数据库的拥有者。
14.9 创建数据库用户:EXEc sp_adduser ‘u2’,’u2’,’user_role’,用户名与登录账户一致,并让其成为“user_role”角色的成员。删除:EXEc sp_dropuser ‘u2’
14.10 合法用户除了对所属数据库系统表具有一些查询权限外并不对数据库中的用户数据和对象具有任何权限,还得得到对数据库数据和对象的操作权限
14.11 收回权限:不允许用户或角色具有某种操作权,或者收回曾经授予的权限,置空标记;
拒绝访问:拒绝某用户或角色具有某种操作权,即使由于继承获得的权限也无效,叉叉标记
14.12 用Transact-SQL语句管理对象权限入管理语句权限:P245
14.13 角色:数据库中具有相同权限的一组用户。系统预定义的固定角色;自定义用户角色
14.14 固定的服务器角色:*amdin + dbcreator,权限最重要最高的是sysadmin,角色成员源均为系统的登录账户:EXEc sp_addsrvrolemember ‘Server1nt_user’ ,‘sysadmin’
14.15 固定的数据库角色:db_*+public,权限最高的是db_owner:EXEc sp_addrolemember ‘db_owner’,’user3’ (注意用户和用色的顺序)
14.16 public角色:每个用户均自动为其成员,不具任何权限但可赋予权限。如果想让所有数据库用户均具有某个特定权限则可将该权限授予public
14.17 用户自定义的用户角色:EXEc sp_addrole ‘myrole’
14.18 只要权限没有被拒绝过,角色中成员权限是角色的权限加上成员自己的权限。
第15章 备份和恢复数据库
15.1 备份的两种方式:先创建备份设备(备份数据库的场所),再将数据库备份到备份设备上(永久备份设备);直接将数据库备份到物理文件上(临时备份设备)
15.2 创建磁盘备份设备:EXEc sp_addumpdevice ‘disk’,’mydiskdump’,’..mydump.bak’
15.3 常用备份策略:完全备份加差异备份加日志备份,备份和恢复速度都比较快,而且当系统出现故障时丢失的数据较少。
15.4 Transact-SQL语句:BAcKuP DATABASELog jessymin To mydiskdump wITH INIT
wITH INIT表示覆盖掉原有内容,相当于“重写现有媒体”
15.5 恢复的一般顺序:先恢复最近的完全数据库备份;再恢复完全备份之后的最近的差异备份;最后按日志备份的先后顺序恢复自最近的完全备份或差异备份之后的所有日志备份。
15.6 Transact-SQL语句恢复过程示例:
1)首先恢复完全备份
RESToRE DATABASE jessymin FRom mydiskdump wITH FILE=1,NoREcoVERY
2)然后恢复差异备份(如果有的话)
RESToRE DATABASE jessymin FRom mydiskdump wITH FILE=2,NoREcoVERY
3)最后恢复日志文件
RESToRE Log jessymin FRom mydiskdump
+《四级教程数据库工程师重难点整理(1)》相关文章
- 四级教程数据库工程师重难点整理(1)
- › 四级教程数据库工程师重难点整理(1)
- 在百度中搜索相关文章:四级教程数据库工程师重难点整理(1)
- 在谷歌中搜索相关文章:四级教程数据库工程师重难点整理(1)
- 在soso中搜索相关文章:四级教程数据库工程师重难点整理(1)
- 在搜狗中搜索相关文章:四级教程数据库工程师重难点整理(1)