精华内容
下载资源
问答
  • TSQL

    2009-12-08 12:13:48
    TSQL  TSQL是目前全球数据库语句中最强大的一种数据库语句,目前世界所有SQL数据库的语句都是按照TSQL标准执行的,使用TSQL语句可以在命令执行工具上迅速的按照语句的执行标准精确对SQL数据库进行增、删、改、查.....

    TSQL

    c2bce2031d44ff9bd43f7c31.jpg
      TSQL是目前全球数据库语句中最强大的一种数据库语句,目前世界所有SQL数据库的语句都是按照TSQL标准执行的,使用TSQL语句可以在命令执行工具上迅速的按照语句的执行标准精确对SQL数据库进行增、删、改、查。
      以下是一些TSQL语句的介绍:
      SELECT --从数据库表中检索数据行和列
      INSERT --向数据库表添加新数据行
      DELETE --从数据库表中删除数据行
      UPDATE --更新数据库表中的数据
      --数据定义
      CREATE TABLE --创建一个数据库表
      DROP TABLE --从数据库中删除表
      ALTER TABLE --修改数据库表结构
      CREATE VIEW --创建一个视图
      DROP VIEW --从数据库中删除视图
      CREATE INDEX --为数据库表创建一个索引
      DROP INDEX --从数据库中删除索引
      CREATE PROCEDURE --创建一个存储过程
      DROP PROCEDURE --从数据库中删除存储过程
      CREATE TRIGGER --创建一个触发器
      DROP TRIGGER --从数据库中删除触发器
      CREATE SCHEMA --向数据库添加一个新模式
      DROP SCHEMA --从数据库中删除一个模式
      CREATE DOMAIN --创建一个数据值域
      ALTER DOMAIN --改变域定义
      DROP DOMAIN --从数据库中删除一个域
      --数据控制
      GRANT --授予用户访问权限
      DENY --拒绝用户访问
      REVOKE --解除用户访问权限
      --事务控制
      COMMIT --结束当前事务
      ROLLBACK --中止当前事务
      SET TRANSACTION --定义当前事务数据访问特征
      --程序化SQL
      DECLARE --为查询设定游标
      EXPLAN --为查询描述数据访问计划
      OPEN --检索查询结果打开一个游标
      FETCH --检索一行查询结果
      CLOSE --关闭游标
      PREPARE --为动态执行准备SQL 语句
      EXECUTE --动态地执行SQL 语句
      DESCRIBE --描述准备好的查询
      ---局部变量
      declare @id char(10)
      --set @id = '10010001'
      select @id = '10010001'
      ---全局变量
      ---必须以@@开头
      --IF ELSE
      declare @x int @y int @z int
      select @x = 1 @y = 2 @z=3
      if @x > @y
      print 'x > y' --打印字符串'x > y'
      else if @y > @z
      print 'y > z'
      else print 'z > y'
      --CASE
      use pangu
      update employee
      set e_wage =
      case
      when job_level = ’1’ then e_wage*1.08
      when job_level = ’2’ then e_wage*1.07
      when job_level = ’3’ then e_wage*1.06
      else e_wage*1.05
      end
      --WHILE CONTINUE BREAK
      declare @x int @y int @c int
      select @x = 1 @y=1
      while @x < 3
      begin
      print @x --打印变量x 的值
      while @y < 3
      begin
      select @c = 100*@x + @y
      print @c --打印变量c 的值
      select @y = @y + 1
      end
      select @x = @x + 1
      select @y = 1
      end
      --WAITFOR
      --例 等待1 小时2 分零3 秒后才执行SELECT 语句
      waitfor delay ’01:02:03’
      select * from employee
      --例 等到晚上11 点零8 分后才执行SELECT 语句
      waitfor time ’23:08:00’
      select * from employee
      ***SELECT***
      select *(列名) from table_name(表名) where column_name operator value
      ex:(宿主)
      select * from stock_information where stockid = str(nid)
      stockname = 'str_name'
      stockname like '% find this %'
      stockname like '[a-zA-Z]%' --------- ([]指定值的范围)
      stockname like '[^F-M]%' --------- (^排除指定范围)
      --------- 只能在使用like关键字的where子句中使用通配符)
      or stockpath = 'stock_path'
      or stocknumber < 1000
      and stockindex = 24
      not stock*** = 'man'
      stocknumber between 20 and 100
      stocknumber in(10,20,30)
      order by stockid desc(asc) --------- 排序,desc-降序,asc-升序
      order by 1,2 --------- by列号
      stockname = (select stockname from stock_information where stockid = 4)
      --------- 子查询
      --------- 除非能确保内层select只返回一个行的值,
      --------- 否则应在外层where子句中用一个in限定符
      select distinct column_name form. table_name --------- distinct指定检索独有的列值,不重复
      select stocknumber ,"stocknumber + 10" = stocknumber + 10 from table_name
      select stockname , "stocknumber" = count(*) from table_name group by stockname
      --------- group by 将表按行分组,指定列中有相同的值
      having count(*) = 2 --------- having选定指定的组
      select *
      from table1, table2
      where table1.id *= table2.id -------- 左外部连接,table1中有的而table2中没有得以null表示
      table1.id =* table2.id -------- 右外部连接
      select stockname from table1
      union [all] ----- union合并查询结果集,all-保留重复行
      select stockname from table2
      ***insert***
      insert into table_name (Stock_name,Stock_number) value ("xxx","xxxx")
      value (select Stockname , Stocknumber from Stock_table2)---value为select语句
      ***update***
      update table_name set Stockname = "xxx" [where Stockid = 3]
      Stockname = default
      Stockname = null
      Stocknumber = Stockname + 4
      ***delete***
      delete from table_name where Stockid = 3
      truncate table_name ----------- 删除表中所有行,仍保持表的完整性
      drop table table_name --------------- 完全删除表
      ***alter table*** --- 修改数据库表结构
      alter table database.owner.table_name add column_name char(2) null .....
      sp_help table_name ---- 显示表已有特征
      create table table_name (name char(20), age smallint, lname varchar(30))
      insert into table_name select ......... ----- 实现删除列的方法(创建新表)
      alter table table_name drop constraint Stockname_default ---- 删除Stockname的default约束
      ***function(/*常用函数*/)***
      ----统计函数----
      AVG --求平均值
      COUNT --统计数目
      MAX --求最大值
      MIN --求最小值
      SUM --求和
      --AVG
      use pangu
      select avg(e_wage) as dept_avgWage
      from employee
      group by dept_id
      --MAX
      --求工资最高的员工姓名
      use pangu
      select e_name
      from employee
      where e_wage =
      (select max(e_wage)
      from employee)
      --STDEV()
      --STDEV()函数返回表达式中所有数据的标准差
      --STDEVP()
      --STDEVP()函数返回总体标准差
      --VAR()
      --VAR()函数返回表达式中所有值的统计变异数
      --VARP()
      --VARP()函数返回总体变异数
      ----算术函数----
      /***三角函数***/
      SIN(float_expression) --返回以弧度表示的角的正弦
      COS(float_expression) --返回以弧度表示的角的余弦
      TAN(float_expression) --返回以弧度表示的角的正切
      COT(float_expression) --返回以弧度表示的角的余切
      /***反三角函数***/
      ASIN(float_expression) --返回正弦是FLOAT 值的以弧度表示的角
      ACOS(float_expression) --返回余弦是FLOAT 值的以弧度表示的角
      ATAN(float_expression) --返回正切是FLOAT 值的以弧度表示的角
      ATAN2(float_expression1,float_expression2)
      --返回正切是float_expression1 /float_expres-sion2的以弧度表示的角
      DEGREES(numeric_expression)
      --把弧度转换为角度返回与表达式相同的数据类型可为
      --INTEGER/MONEY/REAL/FLOAT 类型
      RADIANS(numeric_expression) --把角度转换为弧度返回与表达式相同的数据类型可为
      --INTEGER/MONEY/REAL/FLOAT 类型
      EXP(float_expression) --返回表达式的指数值
      LOG(float_expression) --返回表达式的自然对数值
      LOG10(float_expression)--返回表达式的以10 为底的对数值
      SQRT(float_expression) --返回表达式的平方根
      /***取近似值函数***/
      CEILING(numeric_expression) --返回>=表达式的最小整数返回的数据类型与表达式相同可为
      --INTEGER/MONEY/REAL/FLOAT 类型
      FLOOR(numeric_expression) --返回<=表达式的最小整数返回的数据类型与表达式相同可为
      --INTEGER/MONEY/REAL/FLOAT 类型
      ROUND(numeric_expression) --返回以integer_expression 为精度的四舍五入值返回的数据
      --类型与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
      ABS(numeric_expression) --返回表达式的绝对值返回的数据类型与表达式相同可为
      --INTEGER/MONEY/REAL/FLOAT 类型
      SIGN(numeric_expression) --测试参数的正负号返回0 零值1 正数或-1 负数返回的数据类型
      --与表达式相同可为INTEGER/MONEY/REAL/FLOAT 类型
      PI() --返回值为π 即3.1415926535897936
      RAND([integer_expression]) --用任选的[integer_expression]做种子值得出0-1 间的随机浮点数
      ----字符串函数----
      ASCII() --函数返回字符表达式最左端字符的ASCII 码值
      CHAR() --函数用于将ASCII 码转换为字符
      --如果没有输入0 ~ 255 之间的ASCII 码值CHAR 函数会返回一个NULL 值
      LOWER() --函数把字符串全部转换为小写
      UPPER() --函数把字符串全部转换为大写
      STR() --函数把数值型数据转换为字符型数据
      LTRIM() --函数把字符串头部的空格去掉
      RTRIM() --函数把字符串尾部的空格去掉
      LEFT(),RIGHT(),SUBSTRING() --函数返回部分字符串
      CHARINDEX(),PATINDEX() --函数返回字符串中某个指定的子串出现的开始位置
      SOUNDEX() --函数返回一个四位字符码
      --SOUNDEX函数可用来查找声音相似的字符串但SOUNDEX函数对数字和汉字均只返回0 值
      DIFFERENCE() --函数返回由SOUNDEX 函数返回的两个字符表达式的值的差异
      --0 两个SOUNDEX 函数返回值的第一个字符不同
      --1 两个SOUNDEX 函数返回值的第一个字符相同
      --2 两个SOUNDEX 函数返回值的第一二个字符相同
      --3 两个SOUNDEX 函数返回值的第一二三个字符相同
      --4 两个SOUNDEX 函数返回值完全相同
      QUOTENAME() --函数返回被特定字符括起来的字符串
      /*
      例如:quotename('aaa','{')返回的结果就是 {aaa};
      如果用户没有自定义字符,则sqlserver默认的字符是'[',例如quotename('aaa'),返回的结果就是[aaa]。
      */
      REPLICATE() --函数返回一个重复character_expression 指定次数的字符串
      /*select replicate('abc', 3) replicate( 'abc', -2)
      运行结果如下
      ----------- -----------
      abcabcabc NULL*/
      REVERSE() --函数将指定的字符串的字符排列顺序颠倒
      REPLACE() --函数返回被替换了指定子串的字符串
      /*select replace('abc123g', '123', 'def')
      运行结果如下
      ----------- -----------
      abcdefg*/
      SPACE() --函数返回一个有指定长度的空白字符串
      STUFF() --函数用另一子串替换字符串指定位置长度的子串
      ----数据类型转换函数----
      CAST() 函数语法如下
      CAST() ( AS [ length ])
      CONVERT() 函数语法如下
      CONVERT() ([ length ], [, style])
      select cast(100+99 as char) convert(varchar(12), getdate())
      运行结果如下
      ------------------------------ ------------
      199 Jan 15 2000
      ----日期函数----
      DAY() --函数返回date_expression 中的日期值
      MONTH() --函数返回date_expression 中的月份值
      YEAR() --函数返回date_expression 中的年份值
      DATEADD( , ,)
      --函数返回指定日期date 加上指定的额外日期间隔number 产生的新日期
      DATEDIFF( , ,)
      --函数返回两个指定日期在datepart 方面的不同之处
      DATENAME( , ) --函数以字符串的形式返回日期的指定部分
      DATEPART( , ) --函数以整数值的形式返回日期的指定部分
      GETDATE() --函数以DATETIME 的缺省格式返回系统当前的日期和时间
      ----系统函数----
      APP_NAME() --函数返回当前执行的应用程序的名称
      COALESCE() --函数返回众多表达式中第一个非NULL 表达式的值
      COL_LENGTH(, ) --函数返回表中指定字段的长度值
      COL_NAME(
      
      DATALENGTH() --函数返回数据表达式的数据的实际长度
      DB_ID(['database_name']) --函数返回数据库的编号
      DB_NAME(database_id) --函数返回数据库的名称
      HOST_ID() --函数返回服务器端计算机的名称
      HOST_NAME() --函数返回服务器端计算机的名称
      IDENTITY([, seed increment]) [AS column_name])
      --IDENTITY() 函数只在SELECT INTO 语句中使用用于插入一个identity column列到新表中
      /*select identity(int, 1, 1) as column_name
      into newtable
      from oldtable*/
      ISDATE() --函数判断所给定的表达式是否为合理日期
      ISNULL(, ) --函数将表达式中的NULL 值用指定值替换
      ISNUMERIC() --函数判断所给定的表达式是否为合理的数值
      NEWID() --函数返回一个UNIQUEIDENTIFIER 类型的数值
      NULLIF(, )
      --NULLIF 函数在expression1 与expression2 相等时返回NULL 值若不相等时则返回expression1 的值
      sql中的保留字
      action add aggregate all
      alter after and as
      asc avg avg_row_length auto_increment
      between bigint bit binary
      blob bool both by
      cascade case char character
      change check checksum column
      columns comment constraint create
      cross current_date current_time current_timestamp
      data database databases date
      datetime day day_hour day_minute
      day_second dayofmonth dayofweek dayofyear
      dec decimal default delayed
      delay_key_write delete desc describe
      distinct distinctrow double drop
      end else escape escaped
      enclosed enum explain exists
      fields file first float
      float4 float8 flush foreign
      from for full function
      global grant grants group
      having heap high_priority hour
      hour_minute hour_second hosts identified
      ignore in index infile
      inner insert insert_id int
      integer interval int1 int2
      int3 int4 int8 into
      if is isam join
      key keys kill last_insert_id
      leading left length like
      lines limit load local
      lock logs long longblob
      longtext low_priority max max_rows
      match mediumblob mediumtext mediumint
      middleint min_rows minute minute_second
      modify month monthname myisam
      natural numeric no not
      null on optimize option
      optionally or order outer
      outfile pack_keys partial password
      precision primary procedure process
      processlist privileges read real
      references reload regexp rename
      replace restrict returns revoke
      rlike row rows second
      select set show shutdown
      smallint soname sql_big_tables sql_big_selects
      sql_low_priority_updates sql_log_off sql_log_update sql_select_limit
      sql_small_result sql_big_result sql_warnings straight_join
      starting status string table
      tables temporary terminated text
      then time timestamp tinyblob
      tinytext tinyint trailing to
      type use using unique
      unlock unsigned update usage
      values varchar variables varying
      varbinary with write when
      where year year_month zerofill

    来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/21021875/viewspace-621932/,如需转载,请注明出处,否则将追究法律责任。

    转载于:http://blog.itpub.net/21021875/viewspace-621932/

    展开全文
  • TSQL_Repository-源码

    2021-03-08 21:53:26
    TSQL_Repository TSQL实践代码
  • TSQL2012.sql

    2020-04-06 11:21:25
    TSQL2012数据库脚本下载
  • TSQL-Tutorial-源码

    2021-03-22 09:05:32
    TSQL-Tutorial
  • 关于TSql

    2018-04-28 22:45:00
    2、TSql:是Sql语言的另一种版本,且只能在SqlServer中使用。和Sql不同的是,TSql中增加了对变量的声明和使用。 TSql中的几个关键点 1、局部变量的声明declare @+任意字符 数据类型 2、局部变量的赋值(set 和...


     

    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

     

    转载于:https://www.cnblogs.com/fllowerqq/p/8969885.html

    展开全文
  • Beginning TSQL 2014.pdf

    2019-06-04 16:30:20
    Beginning TSQL 2014.pdf
  • TSQL 学习资料

    2014-11-12 23:16:13
    此乃TSQL学习资源。以英文写的。此学习资源附有开头介绍,内容和练习。内容共分为九课。里面详细地解释TSQL的构造。
  • TSQL概述 ppt

    2014-03-23 23:31:01
    数据库基础 TSQL概述 大纲 学习指导
  • TSQL Parser

    2016-06-08 19:42:30
    我们在进行TSQL开发或脚本检查时,经常因为代码过多,又不太可能花费太多时间反复检查,导致违反编码规范的脚本未被修正. 这种情况下,我们就需要通过程序,对脚本通过程序解析,尽量排除一些常见的,易于程序...
    我们在进行TSQL开发或脚本检查时,经常因为代码过多,又不太可能花费太多时间反复检查,导致违反编码规范的脚本未被修正.
    这种情况下,我们就需要通过程序,对脚本通过程序解析,尽量排除一些常见的,易于程序发现的问题。这时我们就需要对TSQL语法进行语义解析工作,众所周知这时一个非常困难的工程,还好微软提供了专门用于TSQL解析的类库。下面将简述两种常见的语句解析类库的使用方法

    一、过去MSSQL2008R2之前可以通过Microsoft.SqlServer.SqlParser进行解析
    引用dll见附件
    使用方法类似
                dim SQL As String=“待解析SQL语句”
                Dim xml As String = ""
                '将sql语句解析为xml格式,保存到XBase对象中返回
                xml = Microsoft.SqlServer.SqlParser.Parser.Parser.Parse(SQL).Xml.ToString()
                Dim el As XElement = XElement.Parse(xml)
    然后解析细节就是通过这个XElement 解析对应的节点,来判定了

    二、过去MSSQL2008R2之前可以通过Microsoft.SqlServer.SqlParser进行解析
         从MSSQL2012后就被MS放弃了之前的通过解析出xml的方式提供的脚本解析。转而采用更加繁琐但更细节的的Microsoft.SqlServer.TransactSql.ScriptDom类库用于TSQL解析工作,这个类库非常庞大几乎包含TSQL语法中的所有元素都进行了对象话,虽然非常繁琐,但是可以让我们更准确的解析到语句
    其引用DLL在mssql2014中路径为(安装该版本的SSMS后即存在):
    C:\Program Files (x86)\Microsoft SQL Server\120\SDK\Assemblies\Microsoft.SqlServer.TransactSql.ScriptDom.dll

    以下代码都是基于这个库进行的开发
    --将语句发给解析器,解析器反馈语句是否存在语法错误
    Imports Microsoft.SqlServer.TransactSql.ScriptDom
    Dim strSql As String=“待解析SQL语句”
    Dim SqlParser As TSql120Parser = New TSql120Parser(False)
    Dim parseErrors As IList(Of Microsoft.SqlServer.TransactSql.ScriptDom.ParseError)
    Using tReader As System.IO.TextReader = New System.IO.StringReader(strSql)
                Dim result As TSqlFragment = SqlParser.Parse(tReader, parseErrors)
                  '判定语法是否合法
                If parseErrors.Count > 0 Then
                    Dim strOutError As String = ""
                    For Each PError As ParseError In parseErrors
                        strOutError = strOutError & "Error: " & PError.Number & " Line: " & PError.Line & " Column: " & PError.Column & " Offset: " & PError.Offset & " Message: " & PError.Message & vbCrLf
                    Next
                    MessageBox.Show(strOutError)
                    Exit Sub
                End If
    End Using

    --对每个batch/单个语句进行分别处理,并对不同的语句类型,一一解析我们需要的各种属性,下面简单写了一些脚本类型的解析方法
    Dim SqlScript As TSqlScript = result
    Dim fieldList As List(Of String) = New List(Of String)
     For Each sqlBatch As TSqlBatch In SqlScript.Batches
             sb.AppendLine("one batch")
             sb.AppendLine("---------------------------")
             sb.AppendLine("/*" & strSql.Substring(sqlBatch.StartOffset, sqlBatch.FragmentLength) & "*/")
              '解析当前batch中的所有独立语句
             For Each sqlStatement As TSqlStatement In sqlBatch.Statements
                       '根据不同类型进行分别解析
                      Select Case sqlStatement.GetType.Name.ToString()
                            Case "SelectStatement"
                                Exit Select

                            Case "UseStatement"
                                sb.AppendLine("UseStatement")
                                sb.AppendLine("/*" & strSql.Substring(sqlBatch.StartOffset, sqlBatch.FragmentLength) & "*/")
                                Dim sUS As UseStatement = DirectCast(sqlStatement, UseStatement)
                                sb.AppendLine("USE DB is " & sUS.DatabaseName.Value.ToString)
                                Exit Select
                            Case "CreateProcedureStatement"
                                sb.AppendLine("CreateProcedureStatement")
                                sb.AppendLine("/*" & strSql.Substring(sqlBatch.StartOffset, sqlBatch.FragmentLength) & "*/")
                                Dim sCPC As CreateProcedureStatement = DirectCast(sqlStatement, CreateProcedureStatement)
                                If sCPC.ProcedureReference.Name.SchemaIdentifier Is Nothing Then
                                    sb.AppendLine("this proc name is " & "[dbo].[" & sCPC.ProcedureReference.Name.BaseIdentifier.Value.ToString & "]")
                                Else
                                    sb.AppendLine("this proc name is " & "[" & sCPC.ProcedureReference.Name.SchemaIdentifier.Value.ToString & "].[" & sCPC.ProcedureReference.Name.BaseIdentifier.Value.ToString & "]")
                                End If

                                Exit Select

                            Case "CreateTableStatement"
                                Dim sTB As CreateTableStatement = DirectCast(sqlStatement, CreateTableStatement)
                                '获取table name和schema
                                Dim sTBName As String = ""
                                If sTB.SchemaObjectName.Identifiers.Count > 0 Then
                                    For Each sio As Identifier In sTB.SchemaObjectName.Identifiers
                                        sTBName = sTBName & ".[" & sio.Value.ToString & "]"
                                    Next
                                    sb.AppendLine("this table name is " & sTBName.Substring(1, sTBName.Length - 1))
                                End If
                                Exit Select
                            Case "CreateIndexStatement"
                                sb.AppendLine("CreateIndexStatement")
                                sb.AppendLine("/*" & strSql.Substring(sqlBatch.StartOffset, sqlBatch.FragmentLength) & "*/")
                                Dim sIX As CreateIndexStatement = DirectCast(sqlStatement, CreateIndexStatement)
                                 '获取Index name
                                sb.AppendLine("the index name is " & sIX.Name.Value.ToString)
                                 '判定是否为Unique 
                                If sIX.Unique = True Then
                                    sb.AppendLine("this index is unique")
                                End If
                                 ‘获取with中的参数,这里仅对FillFactor进行判定
                                For Each sio As IndexExpressionOption In sIX.IndexOptions
                                    If sio.OptionKind.ToString = "FillFactor" Then
                                        sb.AppendLine("this index's FillFactor is " & DirectCast(sio.Expression, IntegerLiteral).Value.ToString)
                                    End If
                                Next
                                Exit Select
                            Case Else
                                Exit Select
                       End Select
              Next
     Next
    展开全文
  • Tsql语句

    2018-01-08 16:50:00
    Tsql语句: 选中数据库 -> 点开查询 -> 创建查询 -> 输入代码 -> 运行 表中刷新后显示 创建表 create table shangpin(  code int primary key, name varchar(50) not null, price ...

    Tsql语句:

    选中数据库 -> 点开查询 -> 创建查询 -> 输入代码 -> 运行

    表中刷新后显示

     

    创建表

     

    create table shangpin(
      code int primary key,
          name varchar(50) not null,
          price float,
          pinpai int,
          foreign key(pinpai) references pinpai(ids)
    )

     

    create table pinpai(
          ids int auto_increment primary key,
          name varchar(50)              
    )

     

     

     

    效果图:

     

    逻辑:

    主表一定是在从表之前的,从表只能和主表的主键有关系。

     

    注释语法:#

     

    关键字:

    主键:primary key

    非空:not null

    自增长列:auto_increment

     外键:foreign key

    转载于:https://www.cnblogs.com/Whitehat/p/8243522.html

    展开全文
  • JSON to tsql

    2012-08-08 22:13:42
    JSON-tsql 支持在tsql 中进行json的转换
  • TSQL编码规范

    2012-10-30 12:22:22
    TSQL编码规范,提高编码质量
  • plsql与tsql的语法不同,大家可以参考下。
  • plsql与tsql的语法不同

    2020-09-11 08:06:28
    plsql与tsql的语法不同简单整理,大家可以参考下。
  • Parse JSON in TSQL

    2017-04-19 06:25:42
    Is it possible to parse JSON in TSQL? I dont mean to create a JSON string, i mean to parse a json string passed in as a parameter.数据库parseJSON 转表
  • TSQL查询实例

    2013-07-28 19:01:16
    通过一个事例数据库来讲解TSQL查询功能,入门到精通的案例讲解。通过例子更形象的理解T-SQL
  • 使用正则表达式匹配tsql注释语句让我们来看一些例子:复制代码 代码如下:--获取表的count信息select count(*) from T with(nolock)--获取特定值的count信息select count(*) from T with(nolock)where v = '--value'--...
  • 使用TSQL语句创建数据库以前用的是鼠标在界面上手动创建,这样创建会比较麻烦,而且还会经常出问题。在其它电脑上要用的话还需要重复操作。所以要使用程序代码操作,能通过代码的就不用手动操作。在数据库界面选择要...
  • 贝根斯 WTF? ... 您使用宏定义为您的TSQL代码提供数据,这将为您带来良好的旧TSQL。 我为什么需要它? 为您的企业数据库更快地编写某些类型的查询。 如何使用它? 检查examples.sql并感到高兴。
  • TSQL设计教程

    2012-09-22 15:14:17
    高级TSQL程序设计,高级查询在数据库中用得是最频繁的,也是应用最广泛的。
  • MYSQL80 TSQL updates

    2020-12-01 21:48:17
    <div><p>I was getting errors during startup due to use of tsql keywords in the SQL queries. the table name 'groups' and the field 'rank' were both flagging as invalid sql and throwing ...
  • TSQL解析hadoop配置

    2014-05-17 10:18:18
    使用SQLSERVER访问hadoop2.0http地址,通过powershell下载其配置文件(xml格式);在TSQL然后通过xml查询,解析出hadoop2.0配置详细信息,这样可以通过熟悉的TSQL检索查询hadoop配置,并归类之
  • TSQL 与 PL SQL 比较

    2015-01-29 17:14:54
    TSQL 与 PL SQL 比较
  • 我相信接触过SQL Server数据库的很多朋友都知道,它是以"--"开头来进行注释的,下面的方法是使用正则表达式匹配tsql注释语句的方法,大家参考使用吧
  • SQL Server计划自动备份(TSQL版),做了一个测试可行的步骤方法。SQL Server计划自动备份(TSQL版),做了一个测试可行的步骤方法。
  • sql-使用TSQL确定表的主键我想使用TSQL确定表的主键(存储过程或系统表都可以)。 SQL Server(2005或2008)中是否存在这种机制?9个解决方案70 votes这应该使您开始:SELECT *FROM INFORMATION_SCHEMA.TABLE_...
  • sybase TSQL入门

    2009-11-07 21:18:21
    我自己整理的sybase TSQL的介绍文章,参考一下

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,099
精华内容 839
关键字:

tsql