zoukankan      html  css  js  c++  java
  • 关于TSql


     

    1、Sql:结构化查询语言(Structrued  Query  Language)

    2、TSql:是Sql语言的另一种版本,且只能在SqlServer中使用。和Sql不同的是,TSql中增加了对变量的声明和使用。

    TSql中的几个关键点

    1、局部变量的声明declare  @+任意字符   数据类型

    2、局部变量的赋值(set 和select 两种方式,区别是什么?)select方式的赋值连接表格的使用而set方式的赋值不行,详细看下面代码

    3、局部变量的使用和投影(打印)——select (投影),print(打印)——

    4、TSql中的全局变量——看代码(常见的有@@identity:最后一次插入的标识列,@@rowCount:受上一个Sql影响的行数)

    5、if语句

      1、流程控制:查询学号20060202的学员信息如果平均成绩不合格就打印姓名和平均成绩,否则只打印学号

           2、多分支语句:分等级打印学生成绩

           3、使用 case语句把bool类型转为有意义中文

           4、使用case分等级打印学生成绩信息

    --局部变量
    
    /*
    declare @name varchar(8)-----name为变量名,varchar为数据类型
    --局部变量赋值:
     set @name = 值
     select @name = 值
    */
     
    /**/
    --0声明和简单的使用变量
    declare @name varchar(8)
    --select @name = '划拉'
    set @name = '划拉'
    select @name
    go
    
    
    
    select * from student
    
    --1.声明三个用于储存学号、出生日期、和平均成绩的变量并赋值
        --set方式
    declare 
    @stuId char(8),@stuBirth smalldatetime,
    @stuAvgrade numeric(3,1)
    set @stuId = '201201'
    set @stuBirth = '1988-5-6'
    select @stuAvgrade = '96.3'
    select @stuId,@stuBirth,@stuAvgrade
    --print @stuId
    --print @stuBirth
    go
        --select方式
    declare 
    @stuId char(8),@stuBirth smalldatetime,
    @stuAvgrade numeric
    
    select @stuId = stuId, @stuBirth = stuBirth, @stuAvgrade = stuAvgrade from student
    where stuName = '丽思'
    select @stuId,@stuBirth,@stuAvgrade
    go
    
    
    --全局变量
    
    
    
    select @@error
    
    @@error   --最后一个T-SQL错误的错误号
    @@identity  --最后一次插入的标识列  
    /*新增一名老师,同时立刻分配学生
    insert into teacher('李磊')
    declare @tid = @@IDENTITY
    insert into studet values('学生A',@tid)
    insert into studet values('学生B',@tid)
    
    select @@identity
    */
     
    create table emp
    (
        empId int identity(1,1) primary key,
        empName varchar(20)
    ) 
    
    insert into emp values('张三')
    insert into emp values('李四')
    
    select * from emp
    
    select @@identity
    
      
    @@language  --当前使用的语言的名称
    @@max_connections --可以创建的同时连接的最大数目
    @@rowcount  --受上一个SQL语句影响的行数
    @@servername  --本地服务器的名称
    @@servicename  --该计算机上的SQL服务的名称
    @@timeticks  --当前计算机上每刻度的微妙数
    @@transcount  --当前连接打开的事物数
    @@version  --SQL Server的版本信息
    
    --2,查询上次自动增长变量值,上一个SQL语句影响的行数
    
    select @@identity
    select @@rowcount
    
    
    --流程控制
    --IF语句
    --3查询学号20060202的学员信息如果平均成绩不合格就打印姓名和平均成绩,否则只打印学号
    
    declare 
    @stuId char(8),
    @stuName varchar(10),
    @stuAvgrade numeric;
    
    set @stuId = '20060202';
    select @stuName = stuName, @stuAvgrade = stuAvgrade from student
    where stuId = @stuId 
    
    if @stuAvgrade < 60
    begin
        print @stuName;
        print @stuAvgrade;
    end
    
    else
        print @stuId;
    
    go
    
    --4多分支语句分等级打印学生成绩
    
    declare 
    @stuId char(8),
    @stuName varchar(10),
    @stuAvgrade numeric;
    
    set @stuId = '20060202';
    select @stuName = stuName, @stuAvgrade = stuAvgrade from student
    where stuId = @stuId 
    
    if @stuAvgrade >= 90.0
        print '优秀'
    else if @stuAvgrade >= 80.0
        select '良好'
    else if @stuAvgrade >= 70.0
        select '中等'
    else if @stuAvgrade >= 60.0
        select '及格'
    else
        select '不及格'
    go
    
    --5使用 case语句把bool类型转为有意义中文
    
    create table employee
    (
        empId int identity(1,1) primary key,
        empName varchar(10) not null,
        empSex bit not null
    )
    
    insert into employee values('才干',1)
    insert into employee values('小彬',1)
    insert into employee values('丽丽',0)
    insert into employee values('乐乐',0)
        --给列起别名的版本
    select empName as 姓名, 性别 =
    case empSex 
        when 1 then '' 
        when 0 then '' 
    end
    from employee
    
        --使用原表列名的写法
    select empName, empsex =
    case empSex
        when 1 then ''
        when 0 then ''
    end
    from employee
    
    --6.使用case分等级打印学生成绩信息
    
    select 学号 = stuId, 姓名 = stuName, 平均成绩 = 
    case 
        when stuAvgrade > 90.0 then  '优秀'
        when stuAvgrade > 80.0 then  '良好'
        when stuAvgrade > 70.0 then  '中等'
    end
    from student
    
    -- while 循环语句
    
    while(1=1)-----条件永远成立
    select * from student
  • 相关阅读:
    ACL-包过滤技术
    基于Openwrt虚拟路由MAC地址
    openwrt串口控制台+联网
    HSRP
    LeetCode37题解(yield生成器提高速度)
    递归+HashMap套路(可以对付可降解问题)
    python实现24点游戏(地球上最短的24点游戏代码?)
    怎么把pygame的过程录制到mp4
    python排列组合算法
    递归和迭代,以及汉诺塔,采用迭代法不容易实现的说明
  • 原文地址:https://www.cnblogs.com/fllowerqq/p/8969885.html
Copyright © 2011-2022 走看看