zoukankan      html  css  js  c++  java
  • SQL Server2012 T-SQL 基础教程

    第一章 T-SQL查询与编程的背景

       SQL Server 排序规则(collation)

    1.3 创建表和定义数据完整性

     /* U:代表用户表,P:存储过程  -----*/

         IF OBJECT_ID ('dbo.SixCampaign', 'U') IS NOT NULL

               DROP TABLE dbo.SixCampaign

    第二章 单表查询

    2.1 SELECT语句的元素

           topselect top(5) WITH TIES *

                   FROM  ORDER BY 字段 DESC ----返回与检索到的第5行中最后一行Orderby字段值相同的其它所有行

           OFFSET-FETCH

                   select * FROM  Order by 字段 OFFSET 50 ROWS FETCH NEXT 25 ROWS ONLY

                                                                    OFFSET 0 ROW FETCH First(NEXT) 25 ROWS ONLY

         逻辑处理顺序:1.FROM 

                            2.WHERE

                            3.GROUP BY

                            4.HAVING

                            5.SELECT (表达式、DISTINCT)

                            6.ORDER BY TOP/OFFSET-FETCH

    2.2 谓词和运算符

         运算符优先级(从最高到最低):

                                       1.() 圆括号

                                       2.* 乘号、除号、取余

                                       3.+ 正号、负号、加号 串联、减号

                                       4.=、>、<、>=、<=、<>、!=、!>、!< 比较运算符

                                       5.NOT

                                       6.AND

                                       7.Between INLIKEOR

                                       8.= 赋值

    2.3 CASE 表达式  

          ISNULLISNULL(字段,'') 返回第一个非NULL的参数值 函数

          COALESCE(字段1,字段2,字段3,.............) (标准):返回第一个非NULL

          IIF:IIF(表达式,1,0),满足表达式时返回,否则返回0

          CHOOSECHOOSE(<index>,<expr1>,<expre2>,<expre3>),返回列表中指定索引的表达式

    2.4 NULL 标记

          where [字段]='XX'  [字段]<>'XX' 输出结果中均不包含 NULL 值结果集,如需输出 NULL 结果集:[字段] IS NULL [字段]=NULL 错误)

    2.5 同时操作

    2.6 使用字符数据

          where [字段] COLLATE Latin1_General_CS_AS = N'davis'  ----区分大小写

          运算符和函数:   1.字符串连接(加号运算符和CONCAT函数) +号连接时如果某字段为NULL 则返回NULLCONCAT([字段1],' '+[字段2],' '+[字段3])

                                 2.Substring

                                 3.Left RIGHT

                                 4.LEN 字符数 DATALENGTH 字节长度 函数 LEN会删除字符串尾随空格 

                                 5.CHARINDEX函数:返回子字符串在字符串中第一次出现的位置

                                 6.PATINDEX函数:返回模式在字符串中第一次出现的位置,例如 select PATINDEX ('%[0-9]%', 'abcc123hh7c'输出结果:5

                                 7.REPLACE函数

                                 8.REPLICATE函数:按照指定的次数重复字符串,例如 select REPLICATE ('abc', 3输出结果:abcabcabc

                                 9.STUFF函数

                                 10.UPPERLOWER函数:分别返回输入字符串的全部大写或小写字符

                                 11.RTRIMLTRIM函数:分别删除尾随或前导空格后的输入字符串

                                 12.FORMAT函数:将输入值格式化成一个字符串, 例如 select FORMAT (123, '0000000'输出结果:0000123

                                 13.LIKE谓词:LIKE '[ABC]%'  LIKE '[^A-E]%'LIKE '%[_]%' or LIKE '%!_%'ESCAPE'!' 转义字符

    2.7 使用日期和时间数据

          select GETDATE(),CURRENT_TIMESTAMP ,getutcdate(), sysdatetime(),sysutcdatetime (),sysdatetimeoffset()

         CASTCONVERTPARSE函数,及其TRY_对应函数  (标准使用CAST

         DATEADDDATEDIFFDATEPARTDATENAMEYEARMONTHDAY  、ISDATE 

         2012FROMPARTSEOMONTH返回月末日期

         DATEFROMPARTSselect DATEFROMPARTS (2015, 8,1 输出结果:2015-08-01

    2.8 查询元数据

    第三章 连接

          Cross join 笛卡尔积 

    第四章 子查询

    第五章 表表达式

         表表达式:派生表、公用表表达式(CTE)、视图、内嵌表值函数(内嵌TVF

        递归CTE:默认递归100

    5.3 视图

         1.ENCRYPTION :可用于创建或修改视图、存储过程、触发器、用户自定义函数 UDF   

            SELECT  OBJECT_DEFINITION(OBJECT_ID('视图名')):获取视图定义文本,前提条件是该视图未定义ENCRYPTION 选项

            Alter View 视图名 WITH ENCRYPTION。。。。。:EXEC sp_helptext '视图名 -----对象‘视图名’的文本已加密

                            SELECT  OBJECT_DEFINITION(OBJECT_ID('视图名')) ---返回NULL

         2.SCHEMABINING选项:对视图和UDF可用,它将被引用对象的架构和列绑定到引用对象架构中。它指示不能删除被引用对象,也不能删除或修改被引用的列。

         3.Check Option选项:目的是防止出现视图修改与视图筛选的冲突,假设已存在一个视图查询定义。

               Alter View *** With SCHEMABINING

               As

              Select *** From ** where **

               with Check Option 

               Go

    5.4 内嵌表值函数 :通过传递参数查询表

    5.5 APPLY运算符

          Cross Apply:(Cross join

          Outer Apply:(Left join

    第六章 集合运算符

    6.1 UNION运算符

         UnionAB的并集

         union AllA+B

    6.2 INTERSECT运算符

          IntersectAB的交集  (和谓词EXISTS

          Intersect all:如果A出现3行,B 5行,则返回minimum(x,y),返回3行

    6.3 EXCEPT运算符

          ExceptA-BAB的差异

    6.4 优先级 :1)INTERSECT;2)UNION/EXCEPT

    6.5 规避不支持的逻辑阶段

    第七章 查询

    7.1 开窗函数

         SUM(*) OVER(Partition by * order by * Rows Between Unbounded preceding and current row) --窗口的框架子句

                              Unbounded following窗口分区的最后一行    框架位于分区开始                     当前行

    7.1.1 排名开窗函数

            ROW_NUMBER() OVER(Partition by [Values1] Order by [Values2])1 2 3 4...

            RANK() OVER(Partition by [Values1] Order by [Values2])1 2 2 4。。。。

            DENSE_RANK() OVER(Partition by [Values1] Order by [Values2])1 2 2 3.。。。

            NTILE(10) OVER(Partition by [Values1] Order by [Values2])10个分区,每个分区的行数为总行数除以10取整,如果有余数从开头的分区依次添加一条额外行。

    7.1.2 偏移开窗函数

            LAG([字段1],n,x) OVER(Partition By [字段2] Order by ***):按照分区返回前n行【字段1】的值,没有返回值时默认为“x”,后两个参数没有时默认返回前一行,且无返回值时默认为NULL

            LEAD:返回下一行值

            FIRST_VALUE:返回分区的第一行的某指定字段值

            LAST_VALUE:返回分区的最后一行的指定字段值

    7.1.3 聚合窗口函数

            SUM([字段1]) Over(Partiotion BY *** order by ****)Over部分均可省略

    7.2 透视数据

          PIVOT

    7.3 逆透视数据

          UNPIVOT

    7.4 分组集

          SQL能够在同一查询中定义多个分组集,包括Group By子句的Grouping setsCubeRollup从属子句,以及GroupingGrouping_ID函数。

         Group by Grouping sets(分组1),(分组2),(分组3)

         Group by Cube([a],[b],[c]):这3个字段的所有组合分组集和不分组的情况,((a,b,c),(a,b),(a,c),(b,c),(a),(b),(c),())

         Group by Rollup(a,b,c):其假定层次结构为a>b>c,分组集为((a,b,c),(a,b),(a),()

         函数:Grouping([字段]),如果该列是当前分组集的成员返回0,否则返回1;

                   Grouping_ID(a,b,c)4中组合方式,b2中组合方式,c1种,以0表示为分组集成员,1不是分组集成员,(a,b)分组集时该函数返回:0*4+1*2+1*1=1

    第八章 数据修改

           数据操作语言(Data Manipulation LanguageDML):包括SELECT、INSERT、UPDATE、DELETE、TRUNCATE MERGE语句。

    8.1 插入数据

        1.INSERT VALUES:插入多行数据时以逗号分隔,可以将其作为表值构造函数以标准方式构造一个派生表,如

                  SELECT * From  (Values (1,'20150701',4,'B'),(2,'20150702',1,'A'),(3,'20150703',3,'C'')) AS O(OrderID,OrderDate,EmpID,Custid);

        2.INSERT SELECT

        3.INSERT EXEC:将存储过程或动态SQL批处理返回的结果集插入到目标表中。

                  INSERT INTO [Table](Values.....)  EXEC 存储过程

        4.SELECT INTO

        5.BULK INSERT:将来自文件的数据插入到一个现有表中。

                  BULK INSERT 表名 FROM '文件路径'

                      WITH

                           (

                              DATAFILETYPE = 'char' ,  ----数据文件类型,如char、native

                              FIELDTERMINATOR = ',' ,    ------字段终止符,如逗号

                              ROWTERMINATOR = ' '  ---行终止符,如换行符

                           );

    8.1.6 标识列属性和序列对象

        1.标识列属性:identity自增长列:identity(第一个值,增量值 ,可以使用更为通用的$identity 形式(SELECT $identity FROM 表名)

    8.2 删除数据

        1.DELETE

        2.TRUNCATE

    8.3 更新数据

        1.UPDATE 

    8.4 合并数据

        1.MERGE()

     1 Merge into CHH_Owner AS T
     2 
     3 Using (select * from VEDK_Owner where MyFlag in (0 ,1)) AS S
     4 
     5 on T .Tmagic= s.tmagic and t.magic =s. magic and t. location=s .location
     6 
     7 when matched
     8 
     9 then update set t.Surname =s. Surname,t .Address= s.Address ,t. Email=s .Email,
    10 
    11                 t.MOBILE =s. MOBILE,t .Telephone_1= s.Telephone_1 ,t. Telephone_2=s .Telephone_2, t.Fdate =s. Fdate
    12 
    13 when not matched --目标表中没有,源表中有
    14 
    15 then insert values( s.Tmagic ,s. Magic,s .Location, s.VIN ,s. SaleDate,s .Surname, s.Address ,s. Email,s .MOBILE, s.Telephone_1 ,s. Telephone_2,s .Fdate, 1,'2500-12-31' )
    16 
    17 --when Not matched by source --目标表中存在,源表中不存在
    18 
    19 --then delete

    8.5 通过表表达式修改数据

    8.6 使用TOP和OFFSET-FETCH修改

    8.7 OUTPUT子句  inserted deleted

    第九章 事务和并发处理

    9.1 事物

        事物是一个工作单元,可能包含查询和修改数据以及修改数据定义等多个活动。

        显示定义事物的开始:BEGIN TRAN(或BEGIN TRANSACTION

        显示定义事物的结束:COMMIT TRAN

        如果不希望提交事物(即要撤销修改):ROLLBACK TRAN (或 ROLLBACK TRANSACTION

        事物的四个属性(ACID):原子性、一致性、隔离性、持续性

    9.2 锁和阻塞

    第十章 可编程对象

          

          

  • 相关阅读:
    数据结构C语言实现----入栈操作
    数据结构C语言实现----创建一个栈
    数据结构C语言实现----销毁链表
    数据结构C语言实现----从链表中删除结点
    数据结构C语言实现----向链表中插入结点
    数据结构C语言实现----创建一个链表
    《C程序设计语言》 练习3-5
    交易是如何被创建和打包的5
    交易是如何被创建和打包的6
    交易是如何被创建和打包的4
  • 原文地址:https://www.cnblogs.com/stayting/p/6650250.html
Copyright © 2011-2022 走看看