zoukankan      html  css  js  c++  java
  • 高级SQL语句

    变量:

    对于变量,无论是赋值还是引用,都必须在变量名前面加一个“@"符号。

    变量的声明:declare @var_name data_type

    变量的赋值:set declare @var_name=value

          select @var_name=col from table,注意这里的col必须是table表中返回的一个单值。

    函数的创建:

    标量函数:函数返回一个值,其创建过程大致为:

    create function func_name(@para1 data_type, ...) returns data_type
    as
    begin
    ...
    return @ret_value
    end

    表值函数:函数返回一个元组,其创建过程大致为:

    create function func_name(@para1 data_type, ...) returns table
    as
    return
    (
    ...
    )

    可以在returns table部分定义返回表的列名以及变量类型。

    一些常见的函数:

    SQL语句中有使用频率比较高的函数,这里我稍微整理了下

    convert函数,用于进行变量类型转换,使用规则为:convert(data_type, @var_name),将变量@var_name的类型转换成data_type类型

    cast函数,也是用于进行变量转换的,使用规则为:cast(@var_name as data_type),将变量@var_name的类型转换成data_type类型

    print函数,用于打印一个变量的值,使用规则为:print @var_name

    如果avg的参数是整数,但是要求返回值是小数的话,需要先将这个整数型的参数转换成小数再参与avg运算。

    if语句:

    if(condition)
    begin
    ...
    end
    else
    begin
    ...
    end

    常规的循环语句:

    while condition
    begin
    ...
    end

    游标循环遍历:

    declare @var_name data_type                          --声明一个变量用于存储游标中的值
    declare c cursor for select col from table           --声明一个游标,来存储表的一列数据
    open c                                               --打开游标
    fetch next from c into @var_name                     --将游标中的值放入var_name变量中以进行操作
    while @@FETCH_STATUS = 0                             --@@FETCH_STATUS是一个全局变量,用于判断游标中的值是否遍历完毕
    begin
    ...
    fetch next from c into @var_name                     --这一步相当于常规循环中的步长语句
    end
    close c                                              --关闭游标
    deallocate c                                         --释放游标占的内存

     创建用户定义聚合:

    参考链接:创建用户定义聚合

    以及调用CLR时需要注意的几个问题:

  • 相关阅读:
    CDN用户访问调度流程
    最近复习原型 终于明白了一点 写下原型相对比较完美的一种继承方式
    flex布局学习
    Vuex基本使用
    Promise的基本使用
    创建对象的几种方式
    父访问子的数据方法
    购物车案例
    插槽的使用
    ref获取DOM元素
  • 原文地址:https://www.cnblogs.com/TheFutureIsNow/p/10807622.html
Copyright © 2011-2022 走看看