2020年9月5日星期六

T_SQL编程

Transact-SQL语言是SQL Server为用户提供的一种编程语言,是对标准SQL的实现和扩展,它具有标准SQL的主要特点,

同时增加了变量、运算符、函数和流程控制等语言元素,使得其功能更加强大。

 

1.批处理,什么是批处理

  所谓 "批" 是从客户机传递到服务器上的一组完整的数据的sql指令。

  作用:

    只是通知查询分析器有多少语句包含在当前批,查询分析器将两个Go之间的语句组成一个字符串交给服务器去执行。

    当前的批处理语句出现错误不会影响下一个批处理

2.sql 中的变量

  变量的声明:

    declare 变量名  数据类型  [,变量名  数据类型]

    注意:变量名前必须加@符号

  变量的赋值:

     单个赋值:set 变量名=值

     多个赋值:select 变量名=值 [,变量名 =值]

     将查询出的结果赋值:select 变量名=列名1  [,变量名 =列名..] from 表名  [ where .....]

  常用的系统变量(全局变量):

   @@ERROR:返回执行上一条T-sql 语句所返回的错误号

   @@IDENTITY:返回最近一次插入的identity列的值

   @@PROCID:返回当前存储过程的Id标识

   @@REMSERVER:返回在登录记录中记载远程SQL server服务器的名字

   @@SPID:返回当前服务器进程的Id标识

   @@TRANCOUNT:返回当前连接中,处于活动状态事务的数目

   @@VERSION:返回当前SQL server服务器的安装日期、版本、处理器类型

   @@TOTAL_ERRORS:返回自SQLServer服务器启动后,所遇到的读写总数

   @@ROWCOUNT:返回上一条SQL语句所影响到数据行的数目

   注意:系统变量是只读的,不能进行修改或赋值操作,一般是将系统变量赋值给局部变量(也就是我们自定的变量)来使用的

3.控制流程语句

  1. IF...ELSE条件判断语句

    语法格式:

      IF 判断的条件

         表达式|SQL1语句

      ELSE

        表达式|SQL2

     例如,根据学号来判断student数据库的考试成绩(Exam)是否有记录

      

Declare @stuNo varchar(30)        set @stuNo ='135147'      IF (SELECT COUNT(*) FROM Exam where stuNo=@stuNo)=0       begin            PRINT ('学号为'+@stuNo+'学员没有考试成绩记录')         end      Else        begin           PRINT ('学号为'+@stuNo+'学员参加了考试,有成绩记录')        end

 

 

 

      **PRINT:是在屏幕上显示输出的信息,beggin - end 相当于其他语言里面的{ }(用于执行多个表达式语句)

  2. CASE 语句   

    (1)简单表达式

        CASE 表达式

          WHEN  与条件比较的值    THEN   表达式

          [WHEN ...N.... THEN ....  ]

          [ELSE  条件都不成立时要执行的表达式]

        END

       eg:

      

 SELECT stuNo 学号 ,stuName 姓名,stuAge, 年龄,          case   stuSex             when '男' then '先生'             when ‘女' then '女士'             else '未知'          end ’称呼‘

 

 

 

    (2)选择表达式

        CASE

           WHEN 比较的表达式     THEN  表达式

           [WHEN ..N ... THEN ... ]

           [ELSE  条件都不成立时要执行的表达式]

        END 

 

        如果比较的表达式为true ,就执行THEN 里面的表达式

        eg:

          

select examno 考号,stuno 学号,score 分数 ,            case               when score<60 then 'D'               when score<70 then 'C'               when score<80 then 'B'               when score<90 then 'A'            end '等级'          from Exam

 

 

 

  3.WHILE循环语句

    语法:

       WHILE  表达式

        Begin

           //T-sql语句

           【BREAK】   

          【CONTINUE】

        End

 

    当表达式的结果为真时,服务器加将重复执行该循环里面的T-sql语句

    【BREAK】的作用就是无条件的结束该循环,并开始执行紧跟着End后面的语句。

    【CONTINUE】的作用就是跳过本次循环,开始执行下一次循环。

 

     eg:将不及格的笔试分数提升到2分,并在存在的最低分不低于60分的情况下,跳出循环

       

 1 declare @score float 2  3        set @score=0 4  5        while exists (select * from Exam where score<60) 6  7         begin 8  9           update Exam set score+=2 where score<6010 11           select @score=MIN(score) from Exam12 13           if @score<6014 15              continue16 17           else18 19              break;20 21         end

 

 

 

 

4.函数

  1.数学函数

    ABS(数值表达式) :求绝对值,返回数值类型表达式的绝对值    例如: select ABS(-45.3)

    ASCII(字符型表达式):求ASCII码函数,返回该字符对应的ASCII数字  例如: select ASCII('h')

    AVG([ALL|DISTINCT]表达式)  :求平均值   例如:select AVG(score) from Exam

    COUNT([ALL|DISTINCT]表达式|*) 统计数量   例如: select count(*) from Exam

    CEILING(数值型表达式):上舍。返回最小的大于或等于给定数值型表达式的整数值。

    FLOOR(数值型表达式):下舍。返回最大的小于或等于给定数值表达式的整数值。

    POWER(数值型表达式1,数值型表达式2):乘方运算函数。进行乘方运算,POWER(2,3)表示2的3次方。

    PI():求圆周率。不使用参数

    SQRT(float 型表达式):求指定float表达式的平方根,返回float型的结果。

    ROUND(数值型表达式,整数):四舍五入,将数值表达式四舍五入成整数指定精度的形式。

    RAND (整型表达式):产生随机数。返回一个0和1之间的随机数。 

  2.字符串函数

   ---转发至:https://www.cnblogs.com/ruhaoren/p/12758965.html

SELECT ASCII('ABC');--计算字符串第一个字符的ASCII值SELECT CHAR(65);--把给定ASCII编码转换成字符SELECT LOWER('AbC');--全转换为小写SELECT UPPER('aBc');--全转换为大写SELECT LTRIM(' AAA');--去掉左边的空格SELECT RTRIM('AAA ');--去掉右边的空格SELECT LEN(' ABC ');--计算字符个数,不包含后面的空格SELECT LEFT('ABCDEFG',3);--从左边返回指定个数的字符SELECT RIGHT('ABCDEFG',3);--从右边返回指定个数的字符SELECT SUBSTRING('ABCDEFG',3,2);--从第三个字符开始返回2个字符SELECT CHARINDEX('A', 'CCBBAA'); --返回第一个参数字符串在指定字符串中的位置SELECT REPLACE('AABBCC','A','D'); --用第三个参数替换第一个参数中的第二个参数所指定字符串

 

 

 

 

  3.日期函数

    GETDATE()

        返回当前的系统时间。例如:SELECT GETDATE() DATEPART(datepart,date)

        以整数形式返回给定 date 型数据的指定日期部分。一个 date 型数据日期部分的取值。

    DATENAME(datepart,date)以字符串形式返回给定 date 型数据的指定日期部分。

   DATEADD(datepart,number,date)在给定当日器变量指定日期部分的基础上,加上一个整型数值。

   DATEDIFF(datepart,date,enddate)返回开始日期和结束日期在给定日期间的差值。

   DAY(date):返回指定日期 DAY 部分的数值。

   MONTH(date):返回指定日期 MONTH 部分的数值。

   YEAR(date):返回指定日期 YEAR 部分的数值。

 

 

select GETDATE() --获取当前系统时间select DATENAME(YEAR,GETDATE()) --返回日期年份部分select DATEADD(DAY,1,GETDATE()) --返回在日期天数部分加一的日期select DATEDIFF(YEAR,'2000-1-1',GETDATE()) --返回两个日期年份的差值select DAY(GETDATE()) --返回天数部分select MONTH(GETDATE()) --返回月份select YEAR(GETDATE()) --返回年份

 

 

 

  

 

    

T_SQL编程亚马逊北美站运营指南tchiboe票联经验分享|​亚马逊实操型运营大神每天必做的20项工作附详细操作流程复旦教授称:美中贸易较量,中国真有"三张王牌"?C2B亚马逊站内广告排名很差,是什么原因造成的?40个亚马逊海外卖家常用选品、调研、库存工具2019

没有评论:

发表评论