zoukankan      html  css  js  c++  java
  • T_SQL 结构化查询语言 (参考http://www.cnblogs.com/xinchun/archive/2012/07/23/2601714.html)

    SQL 程式设计语言的增强版,它是用来让应用程式与 SQL Server 沟通的主要语言。T-SQL 提供标准 SQL的DDL 和 DML 功能,加上延伸的函数、系统预存程序以及程式设计结构(例如 IF 和 WHILE)让程式设计更有弹性。

    t_sql是sqlserver提供的结构化查询语言,Transact Structured Query Language 它是ANSI和ISO SQL 标准的Microsoft SQL Server方言或扩展,中文理解为:SQL SERVER专用标准结构化查询语言增 强版。在 Microsoft SQL Server 7.0 中 T-SQL 有着为数不少的新增功能,包括新的预存程序、系统资料表、函数、资料型别、陈述式以及现存陈述式中的选项。这些都被保留在 SQL Server 2000 中,因此我们在这里要先回顾 (特别是在您还不很熟悉 SQL Server 7.0 中 T-SQL 的功能,这个温习就很重要了)。因为有太多的新功能需要讨论,在此我们仅为每个类别举少数例子来加以介绍。

    (结构化查询语言(Structured Query Language)简称SQL(发音:/ˈɛs kjuː ˈɛl/ "S-Q-L"),结构化查询语言是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统;同时也是数据库脚本文件的扩展名。结构化查询语言是高级的非过程化编程语言,允许用户在高层数据结构上工作。它不要求用户指定对数据的存放方法,也不需要用户了解具体的数据存放方式,所以具有完全不同底层结构的不同数据库系统可以使用相同的结构化查询语言语言作为数据输入与管理的接口。结构化查询语言语句可以嵌套,这使他具有极大的灵活性和强大的功能。)

    一些用法,可以理解为类似于函数方法类的语言(个人理解)

    今天和大家一起来分享一下SQL语句,T-SQL的用法和语法,以及一些例子,目的是帮助大家一起来复习一下T-SQL的基本语句,以便在项目中更 快速的运用,当然对于新手来说就更应该去学习和总结了。我个人感觉数据库这方面对于程序员来说很重要,无论是对于JAVA程序员还是DOTNET程序员以 及其他编程人员来说都是必须掌握的。为了帮助大家更好的来回顾T-SQL,本人利用空闲的时间整理的一下T-SQL的语句和语法。希望对大家有用!

    好的!我们先来看几个图像:

    棱形三角形正方形圆形梯形

    上面这些图形都是用T-SQL实现的,文章的最后我们一起来用T-SQL画出这些图形。

    首先,我们开始回顾一下T-SQL的基本语法:

    • 函数

    abs(x):求绝对值

    例:    select abs(-3)     值为:3

    sqrt(x)求平方根

    例:    select sqrt(4)     值为:2.0

    rand([0])返回0~1之间的随机float

    floor(X):返回小于或等于X值的最大整数

    例:    select floor(34.5)   值为:34

    ceiling(X):返回大于或等于X值的最小整数;

    例:    select ceiling(34.5)  值为:35

    round(x,length):四舍五入函数,length为正,则对X小数位数四舍五入,length为负,则对X从小数点左边length位起四舍五入,若length既为负数且其绝对值大于X整数部分     数字个数,则函数值为0;

    复制代码
    例:    select ROUND(63.567, 1)      值为:63.600
    
          select ROUND(63.567, -1)     值为:60.000
    
          select ROUND(63.567, 0)      值为:64.000
    
          select ROUND(63.567, -3)       值为:0.000
    复制代码

    Sign(X):求符号函数,X>0则sign(x)=1; X=0 则sign(X)=0;X<0 则sign(X)=-1

    例:     select sign(-3)        值为:-1
    
            select sign(3)        值为:1
    
            select sign(0)         值为:0

    Power(X,y):求X的y次方;

    例:    select power(4,2)    值为 :16
    • 字符串函数

    ASCII(串):返回字符表达式最左端字符的ASCII 码值;

    例:    select ASCII('bc')   值为:98

    CHAR(ASCII码):用于将ASCII 码转换为字符,如果没有输入0 ~ 255 之间的ASCII 码值,返回值为NULL ;

    例:    select char(97)    值为:a

    Lower(串):把字符串全部转换为小写;    

    例:    select lower('QingPingGuo')     值为: qingpingguo

    Upper(串) :把字符串全部转换为大写;

    例:    select upper('QingPingGuo')    值为: QINGPINGGUO

    LTrim(串), RTrim(串):去掉左右空格;

     例(去左空格):  select '博客园'+LTrim('   青苹果   ')+'博客园'    值为:博客园青苹果    博客园

    space(个数):返回指定个数的空格;

    replicate(,次数):将串重复指定次数;

    例:    select replicate('青苹果',2)    值为:青苹果青苹果

    Left(, 个数):返回已知串从左边开始指定个数的字符;

    例:    select left('青苹果在博客园', 4)    值为:青苹果在

    Right(, 个数):返回已知串从右边开始指定个数的字符; 

    例:    select right('青苹果在博客园', 4)    值为:在博客园

    DataLength(串):返回串的字节数长度,计算串尾空格。可以用它检查varchar,text等的动态长度;

    例:    select datalength('青苹果在博客园')    值为:14

    SubString(串, 开始位置, 长度):返回从字符串左边’开始位置’起数量为’长度’的字符串。其中表达式可以是字符串或二进制串或含字段名或字符型变量的表达式。在这里要注意一下SUBSTRING()函数不能用于TEXT 和IMAGE 数据类型;

    例:    select substring('青苹果在博客园',5,2)     值为:博客

    Len(串) :返回表达式的长度。注意它返回的是字符数,而不是字节数。不计算串尾空格;

    例:    select   len('青苹果cnblogs    ')      值为:10

    Replace('1','2','3'):用串3替换串1中出现的所有串2字符;

    例:    select replace('青苹果在北京','北京','博客园')    值为:青苹果在博客园

    Stuff(串1, 开始位置, 长度, 串2):删除串1指定位置开始指定长度的字符串,并在指定位置插入串2;

    例:    select stuff('青苹果是程序猿吗?',5,3,'攻城狮')    值为:青苹果是攻城狮吗?

    reverse(串) :将指定的字符串的字符排列顺序颠倒;

    例:    select reverse('12345')    值为:54321

    charindex(串1,串2):返回串1在串2的开始位置,可从所给出的‘开始位置’进行查找;

    例:    select charindex('guo','qingpingguo')    值为:9
    • 转换函数

    所谓转换函数就是把某种数据类型转换的表达式显示转换成另一种数据类型的函数。
    CAST(表达式 AS 数据类型[(长度)])

    例:  select  '今天是:' + Cast(GetDate() as char(10))  值为:今天是:07 23 2012

    CONVERT(转换后的目标数据类型[(length)],表达式[style])

    例:  select  '今天是:' +convert(char(10),getdate())    值为:今天是:07 23 2012

    下面来看一个求差值的函数datediff函数;

    DATEDIFF(datepart,date1,date2)

    例:  select  datediff(yy,'1988.09.14','2012.12.21')  值为:24
        select  datediff(mm,'1988.09.14','2012.12.21')  值为:291
    • 聚合函数

    聚合函数也就是统计函数,它主要是对一组值进行计算,它的功能分别是:求和(sum)、求最小(min)、求最大(max)、求总行数(count)、求平均值(avg)

    例:   求和:select sum(Name) from TableName
           求最小:select min(Name) from TableName
           求最大:select max(Name) from TableName
          求总数:select count(Name) from TableName
          求平均:select avg(Name) from TableName
    • T-SQL的一些关键字

    Print  向客户端返回用户信息

    例:  print '青苹果'         屏幕上就会显示“青苹果三个字“

    Go      用来通知SQL一批语句的结束

    Distinct   掉重复值

    Declare    用来声明变量

    例:  declare @a int

    Set    为变量赋值

    例:  set @a='青苹果'

    While  在SQL中用来循环(好像在SQL中用来做循环的关键字不多)

    复制代码
    语法:    WHILE <条件表达式>
                     BEGIN
                        <命令行或程序块>
                       [BREAK]
                       [CONTINUE]
                       [命令行或程序块]
                     END
    复制代码

    While比较重要,我们来做个例子加深一下对While循环的理解:

    复制代码
    declare @a int
    set @a=1
    while @a<5
    begin 
    print '青苹果'
    set @a=@a+1
    end

    输出结果:青苹果
         青苹果
         青苹果
         青苹果
    复制代码

    if else    判断语句

    判断语句用的还是比较多的我们还是来做个例子说明一下;

    求:a、b、c三个数的最大值?

    复制代码
    declare  @a int,@b int,@c int,@max  int
    set @a=1 set @b=2 set @c=3 
    if  @a>@b               
       set  @max=@a
    else
       set  @max=@b
    if  @max<@c
       set  @max=@c      
    print   @max

    输出结果:3
    复制代码

    begin end  用来设定一个程序块,将在BEGIN…END内的所有程序视为一个单元执行。

    Exists     判断是否存在

    Case   也是用来判断的,和IF语句差不多,它的格式为:

     CASE  <运算式>
            WHEN <运算式1> THEN  <结果1>WHEN<运算式n> THEN   <结果n>
              [ELSE  <结果n+1>]
      END

     Return   用于结束当前程序的执行,返回到上一个调用它的程序或其它程序。在括号内可指定一个返回值。

    Goto标示符  用来改变程序执行的流程,使程序跳到标有标识符的指定的程序行再继续往下执行。要注意的是作为跳转目标的标识符可为数字与字符的组合,但必须以“:”结尾,如:“1023:” “qingpingguo:”

    复制代码
    例子:
            declare @a int 
           set @a = 1  
         qingpignguo:       
         print @a       
           set @a = @a + 1 
           while @a < 6   
          goto qingpignguo

    输出结果:12345
    复制代码

    最后一个给大家看个好玩的:

    Waitfor    用来暂停程序执行,直到等待指定时间之后,或所设定的时间已到才继续往下运行程序。

    语法:  waitfor {delay '时间'|time '时间'}

    解释:

    (1)‘时间’必须为DATETIME类型数据,且不能包括日期,如‘10:12:05’

    (2)DELAY:用来设定等待的时间长短,最多为24小时。(是一个时间间隔)

    3)TIME:用来设定等待结束的时间点(是一个具体的时间)

    例子:
        waitfor  delay '00:00:03'
       print '你好,我是青苹果'
       go

    以上就是T-SQL的所有内容了,接下来我们来利用最后的时间画几个图形:

    直角三角形:

    复制代码
    declare @a int 
    set @a=1
    while(@a<11)
    begin
    print replace(space(@a),' ','*')
    set @a=@a+1
    end
    复制代码

    直角三角形 输出结果:

    正方形:

    复制代码
    declare @a int
    declare @b int
    declare @c nvarchar(100)
    set @a=1
    set @b=1
    set @c=''
    while (@a<9)
    begin
       while (@b<15)
       begin 
        set @c=@c+'*'
        set @b=@b+1
       end
        print @c 
    set @a=@a+1
    end
    复制代码

    正方形 输出结果:

    菱形:

    复制代码
    declare @a int,@b int
    set @a=1 set @b=15
    
    if(@b%2!=1)
    print '数字必须都是奇数'
    else
    while(@a<=@b)
    begin
    if(@a%2=1)
    print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
    set @a=@a+1
    end
    set @a=@a-2
    while (@a<=@b)
    begin
    if(@a%2=1)
    print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
    set @a=@a-1    
    if (@a<0)
    break
    end
    复制代码

    菱形 输出结果:

    梯形:

    复制代码
    declare @a int,@b int
    set @a=7 set @b=21
    if(@a%2=1)
    while(@a<@b)
    begin
    print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
    set @a=@a+2
    end
    复制代码

    梯形 输出结果:

    矩形:

    复制代码
    declare @a int
    declare @b int
    declare @c nvarchar(100)
    set @a=1
    set @b=1
    set @c=''
    while (@a<9)
    begin
       while (@b<23)
       begin 
        set @c=@c+'*'
        set @b=@b+1
       end
        print @c 
    set @a=@a+1
    end
    复制代码

    矩形 输出结果:

    圆形:

    复制代码
    declare @a int,@b int
    set @a=9 set @b=13
    
    while (@a<=@b)
    begin
    if(@a%2=1)
    print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
    set @a=@a+1
    end
    set @a=@a-1
    begin
    print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
    end
    while (@a<=@b)
    begin
    if(@a%2=1)
    print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
    set @a=@a-1
    if(@a<10)
    break
    end
    set @a=@a-2
    begin
    print space((@b-@a)/2)+replace(space(@a),' ','*')+space((@b-@a)/2)
    end
    复制代码

    圆形输出结果:

    The End! 以上就是本文的所有内容,可能写的不够全面,有不足的地方希望大家多多补充,多多发表意见!谢谢!

  • 相关阅读:
    leetcode 33. Search in Rotated Sorted Array
    leetcode 32. Longest Valid Parentheses
    leetcode 28. Implement strStr()
    leetcode 27. Remove Element
    leetcode 26. Remove Duplicates from Sorted Array
    leetcode 24. Swap Nodes in Pairs
    leetcode 22. Generate Parentheses
    树莓派的频率管理和热控制
    sql执行insert插入一条记录同时获取刚插入的id
    全程直播个人博客重构过程,采用springboot+dubbo+jpa技术栈。
  • 原文地址:https://www.cnblogs.com/wangyt223/p/2993322.html
Copyright © 2011-2022 走看看