zoukankan      html  css  js  c++  java
  • SQL SERVER数据库基本操作

     SQL SERVER

     存储过程

    1  create proc 存储过程名称
    2  as
    3  begin
    4    set nocount on;
    5    --sql语句
    6  end
    7  go 
    

      

      

    变量

    --1、变量名以@开头 select,set
    declare @num int 
    set @num=1
    print @num
    
    declare @num1 int =1
    print @num1
    
    declare @id int 
    select @id from result where name=''
    

      

    事务

      

    begin transaction    --开启一个事务
    declare @error int=0    --定义变量 赋值
    --卖家,卖加的账户要加钱
    update AccountCompany set UserAccount = UserAccount+9000 where id=2
    set @error=@error+@@ERROR    --ERROR全局变量,获取错误的编号
    --买家,账户扣钱
    update AccountCompany set UserAccount = UserAccount-9000 where id=1
    set @error=@error+@@ERROR
    if @error<>0
      begin
        RollBack TRANSACTION --事务进行回滚
      end
      else
      begin
        COMMIT TRANSACTION --提交
      end
    
    select * from AccountCompany

    触发器

    优点:

    1、触发器是自动的,当对表中的数据做了任何修改之后立即被激活

    2、触发器可以通过数据库中相关表进行层叠修改

    3、触发器可以强制限制,这些限制比用CHECK约束所定义的更复杂,与CHECK约束不同的是,触发器可以引用其他表中的列

    触发器的作用

    触发器的主要作用就是其能够实现由主键和外键所不能保证的复杂参照完整性和数据的一致性,它能够对数据库中的相关表进行级联修改,提高比CHECK约束更复杂的的数据完整性,并自定义错误消息。触发器的主要作用主要有以下接个方面:

    1. 强制数据库间的引用完整性

    2. 级联修改数据库中所有相关的表,自动触发其它与之相关的操作

    3. 跟踪变化,撤销或回滚违法操作,防止非法修改数据

    4. 返回自定义的错误消息,约束无法返回信息,而触发器可以

    5. 触发器可以调用更多的存储过程

    触发器: 在对数据库数据进行操作(增加(insert)、修改(update)、删除(delete))后,可以自动执行的操作

    触发器分为两类:instead of 触发器 ,after(for)触发器。

      instead of 触发器:在数据更新到数据库之前执行的操作

      after(for)触发器:在数据更新到数据后再执行的操作

    数据临时载体:inserted和deleted

      inserted:存储操作中新增的或者更新的数据

      deleted:存储操作中删除的数据

    --Insert操作Instead of 触发器    在数据更新到数据库之前执行的操作
    create trigger 触发器名称
        on 表名
        instead of insert --操作(增删改)
    as
    begin
        --需要执行的业务
    end
    --Insert操作After 触发器     在数据更新到数据后在执行的操作
    create trigger 触发器名称
        on 表明
        After Insert
    as
    begin
        --需要执行的业务
    end
    --GO的意思是分批处理语句
    

      

    自定义函数

    用户自定义函数的类型:

    1、标量值函数(返回一个标量值)

    2、表格值函数(内联表格值函数、多语句表值函数,返回一个结果集即返回多个值)

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

    --标量值函数
    go
    create function funName
    (@strName nvarchar(50))
    returns bit
    as 
    begin 
        declare @len bit
        if(len(@strName)>1)
        begin
            set @len=0
        end
        else
        begin
            set @len=1
        end
    ​
        return @len
    end
    go
    ​
    select dbo.funName('张')
    

      

    --内联表格值函数
    go
    create function fun1 (@id int)
    returns table --返回一个表
    as
        return select * from Lemon..Man where Id=@id;
        
    go
    ​
    select * from fun1(2)
    

      

    --多语句表值函数
    go
    create function fun2
    ()
    returns @tableName table(strname nvarchar)
    as 
    begin
         insert @tableName select strname from @tableName
         return 
    end
  • 相关阅读:
    替换OSD操作的优化与分析
    Centos7下Jewel版本radosgw服务启动
    如何统计Ceph的RBD真实使用容量
    Ceph中的Copyset概念和使用方法
    Proftp最简匿名访问配置
    Windows could not set the offline local information.Error code:0X80000001解决方法
    《一百岁感言》 杨绛
    取扑克牌的问题
    马云的懒人理论
    明代地图总目
  • 原文地址:https://www.cnblogs.com/monthv/p/13215650.html
Copyright © 2011-2022 走看看