网站导航网学 原创论文 原创专题 网站设计 最新系统 原创论文 论文降重 发表论文 论文发表 UI设计定制 论文答辩PPT格式排版 期刊发表 论文专题
返回网学首页
网学原创论文
最新论文 推荐专题 热门论文 论文专题
当前位置: 网学 > 交易代码 > SQL语法 > 正文

SQL高级语法汇总

论文降重修改服务、格式排版等 获取论文 论文降重及排版 论文发表 相关服务

【网学网提醒】:网学会员,鉴于大家对SQL高级语法汇总十分关注,会员在此为大家搜集整理了“SQL高级语法汇总”一文,供大家参考学习!


    SQL高级语法汇总
    CUBEROLLUP及COMPUTE关键词
    CUBE关键词是用来将所要进行查询的各分组字段内的数据求和的运算。
    COMPUTE关键字则是用来将分组做小计,也就是说将字段内进行分组并且将每一组生成一或多个总和平均值等
    范例
    selectcust_id,SUM(pay1)ASpay11frompay_listGROUPBYpay1WITHCUBE
    go
    以上代码导致错误因为在SUM汇总函数所指定的字段名称pay1与CUBE关键词一并使用所导致发生的错误消息
    修改
    SELECTcust_id,SUM(pay1)aspay11FROMpay_listGROUPBYcust_idWITHCUBE
    GO
    ROLLUP关键词
    将GROUPBY后面所加的第一个字段名称来求和而其他的字段并不做
    ROLLUP以及CUBE关键词二者之间不同的地方就是ROLLUP只会将GROUPBY后面的第一个字段名称求总和而CUBE则会将每一个字段都求总和的操作
    范例
    SELECT厂商编号,产品名称,SUM(数量)AS总数量FROMprocedGROUPBY厂商编号,产品名称WITHROLLUP
    GO
    COMPUTE关键词
    用来将分组小计也就是在字段内进行分组,并且将每一组生成一或多个总和平均值等
    范例
    select厂商编号,产品名称,数量fromprocedcomputesum(数量)
    go
    以厂商编号作为分类根据时
    select厂商编号,产品名称,数量fromprocedorderby厂商编号COMPUTESUM(数量)BY厂商编号
    go
    7.5HAVING语句
    HAVING语句是用来指定组或汇总的搜索条件的。HAVING语句一般只能与SELECT语句一起使用,并且他通常是会在GROUPBY子句中使用
    。
    范例
    计算出其进货的总数量大于200的厂商编号及产品名称
    SELECT厂商编号,产品名称,SUM(数量)AS数量FROMprocedGROUPBY厂商编号,产品名称HAVINGSUM(数量)>100
    GO
    7.6DISTINCT及ALL关键词
    范例
    SELECTDISTINCTFROMproced
    go
    7.7ESCAPE关键词
    如果想将统配符百分号符号视为字符而非统配符时,可以使用ESCAPE关键词再加上百分号符号即可。
    范例
    在customs表格中,找出符合折扣为50%的所有记录
    usemisdb
    go
    select*fromcustomswherediscllike'50%'escape'%'
    go
    7.8批注
    方式一:以/*开始以*/结束
    方式二:--批注一行
    范例:
    编写批注的正确用法使用"/*"和"*/"
    /*编写批注的用法*/
    /*USEPubs
    GO*/
    select*fromauthors
    go
    7.9区域变量与全局变量
    SQLSERVER中,变量可分为两种一是区域变量另一种是全局变量
    在SQLSERVER中,区域变量一般都是由用户自己定义的,其表示方式是以"@"来作为变量名称的开头。而全局变量则是由系统提供的,并且其表示方式是以"@@"来作为变量名称的。
    区域变量的生命周期是使用DECLARE语句开始,直到此批处理执行结束时就结束。
    DECLARE@TESTint--区域变量@TEST生命周期开始
    @TEST=5
    SELECT*FROMauthorsWHEREau_id=@TEST
    GO--批处理结束执行,@TEST变量的生
    命周期结束
    SELECT*FROMauthors
    GO
    区域变量
    要使用区域变量,首先要先将区域变量进行声明,在声明区域变量之后系统会将区域变量值初始设置为NULL值,然后再使用SET或SELECT语句来进行设置变量值。将变量进行声明时,你必须要使用DECLARE语句来进行声明。
    DECLARE@TESTint--声明变量TEST及其数据类型
    SET@TEST=5--设置变量TEST的值为5
    声明多个变量名称之间使用逗号来分割。
    DECLARE@A1char(10),@a2int,@a3char(10)
    使用SELECT语句设置变量时有以下两种方法
    一直接设置变量值
    DECLARE@TESTint
    SELECT@TEST=5
    二将查询结果指定给变量,但此种方式必须要求其查询结果是单一值
    DECLARE@TESTint
    SELECT@TEST=数量FromcustomerWHEREcust_id='A001'
    使用SELECT语句来指定变量值时,若你有多个变量要指定多个变量值时,每个变量之间可以用逗号来分割开来。
    7.10流程控制
    BEGIN...END
    用来将一串T-SQL语句使用BEGIN...END的关键词括在一起,以便让被括在一起之内的T-SQL语句可以被执行。
    如果所要执行的T-SQL语句只有一行,就不用使用BEGIN...END语句来执行,因为只有一行T-SQL语句就不需要被括在一起来执行。
    语法
    BEGIN{
    sql_statement|statement_block
    }
    END
    BEGIN...END语句组可以是镶套的。
    范例
    --BEGIN...END语句的使用范例
    usepubs
    go
    begin
    select*fromauthorswhereau_idlike'2*'
    end
    begin
    selectcust_id,cust_namefromcustomorderbycust_id
    end
    IF...ELSE语句
    语法
    IFBoolean_expression
    {sql_statement|statement_block}
    else
    {sql_statement|statement_block}
    如果要执行的T-SQL语句不只一行时,就必须要使用BEGIN...END语句组
    范例
    --IF...ELSE语句的使用范例
    if(selectavg(总成绩)from学生成绩)<60
    print'你的总成绩不及格'
    else
    print'你的总成绩及格,恭喜你!'
    --镶套IF...ELSE语句的使用范例
    if(selectsum(订单数量)from订单表格)>1000
    print'他们是最佳客户'
    else
    if(selectsum(订单数量)from订单表格)>500
    print'必须与他们保持联络'
    else
    print'再想想办法吧!!'
    WHILE循环BREAK及CONTINUE语句
    语法声明
    whileBoolean_expression
    {sql_statement|statement_block}
    [BREAK]--退出最内层的WHILE循环
    {sql_statement|statement_block}
    [CONTINUE]--重新执行WHILE循环忽略掉在CONTINUE之后的任何T-SQL语句
    如果有两个或两个以上的WHILE循环组成镶套WHILE循环时,内层的BREAK语句会退出到下一个外层循环。首先在较内层循环结束处之后的T-SQL语句会被执行,然后开始下一个外层的循环。
    范例
    --使用WHILECONTINUEBREAK语句的使用范例
    while(selectavg(单价)from订单表格)<60
    begin
    set单价=单价*4
    if(selectmax(单价)from订单表格)>80
    break
    else
    continue
    end
    GOTO语句
    GOTO语句
    可以用来改变执行流程至某个标签名称
    语法声明
    定义标签名称时
    label:
    要改变执行时
    gotolabel
    标签名称摆在GOTO语句之前或之后并没有特别限制。
    注意GOTO语句只能在WHILE或IF...ELSE语句内往外跳至标签名称处而不能由外面语句跳进IF...ELSE或WHILE语句内。
    范例
    --GOTO语句的使用范例
    if(selectmax(单价)from订单表格)>100
    gotomax_label
    else
    gotomin_label
    max_label:
    print'太贵了'
    min_label:
    print'价格合理'
    RETURN语句
    将目前正在执行的批处理T-SQL语句,退出程序或语句中断,并返回或不返回数值。
    当RETURN语句与存储过程一起使用时,其RETURN并不会返回一个NULL值。但当某程序尝试返回NULL值时,则会生成警告消息,接着会返回一个为0的数值。
    语法声明
    return[integer_expression]
    integer_expression指要返回的整数值
    范例
    --return的使用范例
    createprocedurecheck_maxdata
    as
    if(selectstatefromauthorswhereau_id='123-34-45')
    return1
    else
    return2
    WAITFOR语句
    WAITFOR语句是用来指定触发语句组,存储过程或事物执行的时间,时间间隔或事件。执行WAITFOR语句之后,必须等到指定的时间或指定的事件发生后,才能使用到SQLServer的连接。
    如果想知道目前谁在使用或等待时,可以使用系统存储过程sp_who来了解。
    声明语法
    WAITFOR{DELAY'time'|TIME'time'}
    参数说明
    DELAY用来设置要SQLServer必须要等待所到指定的时数已过时,才可以使用SQLServer的连接
    time用来指定要等待的时间
    只能指定时间而不能设置日期。其等待时间的设置最多可指定到24小时。
    TIME用来指示SQLServer等待到所指定的时间。
    范例
    --此范例会在下午6:00时会执行select_data存储过程
    begin
    waitforTIME'18:00'
    EXECselect_data
    end
    begin
    waitforTIME'15:20'
    print'ninhao'
    end
    范例
    --WAITFORDELAY的使用范例
    usepubs
    go
    --设置要sqlserver等待一分钟再执行下列语句
    waitfordelay'00:01:00'
    select*fromauthors
    go
    7.11CASE,RAISERROR语句
    CASE
    根据条件列表之后来执行表达式,其CASE可分为两种格式:
    1一种格式是属于简单的CASE格式,这种CASE会比较表达式与一组简单表达式,以便决定结果。
    2另一种格式是属于搜索的CASE格式,这种格式会评估一组布尔表达式,以便决定其结果。
    简单CASE声明
    CASEinput_expression
    WHENwhen_expressionTHENresult_expression
    [..n]
    [
    ELSEelse_result_expression
    END
    如果想使用搜索CASE格式时,可以根据下面的语法来进行声明
    CASE
    WHENBoolean_expressionTHENresult_expression
    [..n]
    [
    ELSEelse_result_expression
    END
    CASE如果没有ELSE且没有任何比较运算其结果为真时CASE语句会返回一个NULL值
    范例
    --此范例是介绍如果使用简单的CASE格式
    use
    p
    ubs
    go
    select产品类别=
    casetype1
    when'水果'thensum1=sum1+1
    when'五金'thensum2=sum2+1
    when'药品'thensum3=sum3+1
    elsesum0=sum0+1
    end
    go
    范例
    --此范例会介绍如果使用搜索CASE格式
    USEMIS
    GO
    SELECT语文成绩=
    CASE
    WHENscorel<59THEN'不及格'
    WHENscorel>60andscorel<=70THEN'中上成绩'
    WHENscorel>=91andscorel<+100THEN'成绩优良'
    END
    GO
    RAISERROR语句
    RAISERROR语句会返回用户所自定义的错误消息,并且设置系统旗标,记录曾发生过的错误。
    使用RAISERROR指定用户自定义的错误消息时,请使用大于50,000的错误消息代码和0至18的重要性层级。
    使用系统存储过程sp_addmessage来创建自定义的错误消息
    RAISERROR语句其语法声明
    使用RAISERROR语句来创建并返回用户自定义的错误信息时,请使用sp_addmessage来添加用户自定义的错误消息,并使用sp_dropmessage来删除用户自定义的错误消息。
    发生错误时,错误代码会放置在@@ERROR函数中,此函数存放着最近生成的错误代码。
    范例
    --使用RAISERROR的范例
    --使用sp_addmessage来创建自定义错误消息,其中76548是指错误代码,9是代表严重程度,而"错误消息测试"则是代表消息内容
    EXECsp_addmessage76548,9,'错误消息测试'
    GO
    RAISERROR(76548,9,1)
    7.12EXEC语句
    用来执行存储过程或T-SQL语句的批处理程序等语句。
    范例
    --执行系统存储过程sp_who的方式
    EXECsp_who
    go
    范例
    --执行程序test_pro,并传递一参数
    EXECtest_procase_id--其中test_pro为程序名称,而case_id为参数
    GO
    范例
    --使用多个参数以及一个输出参数
    --其中a01,b01指的是要给test_pro程序使用的参数
    --而@a1则是指要输出的参数名称,我们使用@test来接受@a1所返回的值
    EXECtest_pro'a01','b01',@a1=@testOUTPUT
    范例
    --执行远程程序test1,并传递一个参数
    --其中Mis_Server.mis.dbo.order1指的是要执行在远程服务器mis_server,在mis@t1指的是接受自执行后的order1程序状态值
    EXEC@t1=Mis_Server.mis.dbo.order1'981-098'
    GO
    范例
    --以字符串方式
    EXEC('THIS'+'A098.18364.47')
    GO
    本文来自CSDN博客,转载请标明出处:blog.csdn.net/chuxue1342/archive/2007/10/06/1812805.aspx
    
  • 上一篇资讯: SSH学习资料
  • 下一篇资讯: sql高级语法
  • 设为首页 | 加入收藏 | 网学首页 | 原创论文 | 计算机原创
    版权所有 网学网 [Myeducs.cn] 您电脑的分辨率是 像素
    Copyright 2008-2020 myeducs.Cn www.myeducs.Cn All Rights Reserved 湘ICP备09003080号 常年法律顾问:王律师