zoukankan      html  css  js  c++  java
  • SQL高级应用

    1、游标的使用
    Selectdelete updateinsert into 表 selct*from

    定义游标,让游标指向sql查询的结果
    declare demoCursor Cursor for select 列名1,列名2,列名3 from 表名
    open demoCursor
    declare @UserName nvarchar(32)
    declare @UserId int
    declare @UserAge int

    fetch next from demoCursor into
    @UserName,
    @UserName,
    @UserName


    close demoCursor
    deallocate domeCursor--释放游标

    2、视图
    把一个查询结果作为虚拟表 提供给开发人员使用

    create View VW_UserInfo as
    select *from UserInfo where UserAge>40

    视图的使用:
    select*from VW_UserInfo 视图可以直接当表用

    3、临时表

    用#修饰临时表
    crete table #testTb
    (
    Id int identity(1,1) primary key not null,
    Name nvarchar(32) null

    )
    --临时表的使用和普通表一样。
    select*from #TestTb

    --临时表用完之后一定要:释放掉临时表
    drop table #TestTb

    临时表的用法:
    select *into #Tb from Userinfo
    select *from #Tb
    drop table #Tb

    临时表多用于高并发的情况的优化

    数据库:锁概念
    锁的级别:X:排它锁 S:共享锁

    insert update delete 会在表上加 X
    select 在表上添加 S锁。

    多表连接:
    select * from Employee as E
    left join Position as P on E.PositionId = p.PositionId7

    4、 sql异常处理
    begin try
    sql…
    end try
    begin catch
    sql
    end catch


    5、事务

    begin transaction 开启事务

    conmit transaction 提交事务

    rollback transaction 回滚事务

    事务AdoNet实现:
    SqlTransaction trans = conn.BeginTransaction();
    注意:cmd.Transaction = trans;应该将事务对象初始化命令。

    6、系统存储过程
    exec sp_databases
    exec sp_tables
    exec sp_columns 'UserInfo'

    动态执行SQL脚本:

    declare @strSql nvarchar(max)
    set @strSql ='select * from UserInfo'
    exec (@strSql)

  • 相关阅读:
    Ubuntu Server下docker实战 02: docker进阶配置
    Ubuntu Server下docker实战 01: 安装docker
    简单一个方法实现商品组合管理--递归笛卡尔
    Little-Endian小字节序
    BinaryWriter和BinaryReader用法
    C#位运算
    TCP协议三次握手过程分析
    简述HTTP过程
    c# 版贪食蛇
    今日头条列表json
  • 原文地址:https://www.cnblogs.com/Mr-Prince/p/12219577.html
Copyright © 2011-2022 走看看