基础

1 范式

  第一范式

 

 

2 事务

      事务是作为一个逻辑单元执行的一系列操作,一个逻辑工作单元必须有四个属性,称为 ACID(原子性、一致性、隔离性和持久性)属性,只有这样才能成为一个事务:

     (1)原子性,事务必须是原子工作单元;对于其数据修改,要么全都执行,要么全都不执行。

     (2)一致性,事务在完成时,必须使所有的数据都保持一致状态。在相关数据库中,所有规则都必须应用于事务的修改,以保持所有数据的完整性。事务结束时,所有的内部数据结构(如 B 树索引或双向链表)都必须是正确的。

     (3)隔离性,由并发事务所作的修改必须与任何其它并发事务所作的修改隔离。事务查看数据时数据所处的状态,要么是另一并发事务修改它之前的状态,要么是另一事务修改它之后的状态,事务不会查看中间状态的数据。这称为可串行性,因为它能够重新装载起始数据,并且重播一系列事务,以使数据结束时的状态与原始事务执行的状态相同。

     (4)持久性,事务完成之后,它对于系统的影响是永久性的。该修改即使出现系统故障也将一直保持。

3 约束

域完整性约束(domain integrity constrain)
             根据关系模式规定,属性的值应该为域中的值,是否为空; RDBMS最基本,简单的约束。
实体完整性约束(entity integrity constrain)
        每个关系相当于一个实体,主键值应该是唯一的且不为空。 是实体内的约束。
引用完整性约束(referential integrity constrain)
         这是不同关系之间的约束或同一关系之间不同元组的约束。最基本,最普遍的约束 。
一般完整性约束(normal integrity constrain)
            允许用户对数据做自定义的语义约束。

4 SQL判断表、存储过程、触发器、索引是否存在

--判断一个表是否存在
select * from sysobjects where id = object_id(N‘[dbo].[表名]') and OBJECTPROPERTY(id, N'IsUserTable') = 1

--判断一个存储过程是否存在
select * from sysobjects where id = object_id(N‘[dbo].[存储过程名]') and OBJECTPROPERTY(id, N'IsProcedure') = 1

--判断一个触发器是否存在
select * from sysobjects where id = object_id(N‘[dbo].[触发器名]') and OBJECTPROPERTY(id, N'IsTrigger') = 1

--判断一个索引是否存在
SELECT name FROM sysindexes WHERE name = ‘索引名'

5 存储过程的例子

if exists (select * from sysobjects where id = object_id(N'[dbo].[sp_AddPort]') and OBJECTPROPERTY(id, N'IsProcedure') = 1)
drop procedure [dbo].[sp_AddPort]
GO

CREATE PROCEDURE sp_AddPort
@BSCID  tinyint,
@V5ID tinyint,
@Result tinyint output
AS
BEGIN
 BEGIN TRAN
 if exists(select * from T_V5INFO where BSCID=@BSCID and V5ID=@V5ID)
 begin
  Rollback Tran   /*滚回*/
          set @Result = 1  /*返回值置失败标志1*/
         return 
 end
 insert into T_V5INFO(BSCID,V5ID) values(@BSCID,@V5ID)

 if(@@ERROR<>0 or @@ROWCOUNT=0)  /*失败*/
  Begin
          Rollback Tran   /*滚回*/
          set @Result = 16 /*返回值置失败标志1*/
          return
         End
 -------------------------------------------------------------------

 set @Result = 0  /*返回值置成功标志1*/
         commit Tran
 RETURN
END
GO

 

 6 存储过程和函数的区别
存储过程是用户定义的一系列sql语句的集合,涉及特定表或其它对象的任务,用户可以调用存储过程,而函数通常是数据库已定义的方法,它接收参数并返回某种类型的值并且不涉及特定用户表。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值