当前位置:Gxlcms > 数据库问题 > 关于sql server 的那些事

关于sql server 的那些事

时间:2021-07-01 10:21:17 帮助过:13人阅读

 1 ---临时表
 2 CREATE TABLE #Temp
 3     (
 4       ID INT ,
 5       Name NVARCHAR(50) ,
 6       Age INT
 7     );
 8 
 9 ---全局临时表
10 CREATE TABLE ##TempAll
11     (
12       ID INT ,
13       Name NVARCHAR(50) ,
14       Age INT ,
15       UID INT
16     );
17 
18 ----with开头的临时表
19 WITH    t AS ( SELECT   a.ID ,
20                         a.Name
21                FROM     #Temp AS a
22                         INNER JOIN ##TempAll AS b ON b.ID = b.UID
23              )
24     SELECT  *
25     FROM    t;
26 
27 ---释放临时表
28 DROP TABLE #Temp;
29 DROP TABLE ##TempAll;

  二、解析,编译sql

      针对导数据时,写了一堆sql,不敢轻易执行,最好执行前先解析,编译,是否存在问题。在SQL SERVER中提供 SET PARSEONLY { ON | OFF }   和SET NOEXEC { ON | OFF }   语句。

      SET  PARSEONLY 表示只解析但不编译或执行语句。它会检查Tansact-SQL语句的语法并返回任何错误信息。 SET  PARSEONLY on 开始分析语句,OFF 开始编译执行语句。

      SET NOEXEC 表示编译但不执行语句。可以让 SQL Server 在执行 Transact-SQL 代码时,验证代码中的语法和对象名。它也可以用于调试通常是较大的批处理中的部分语句。

---解析
SET PARSEONLY ON; 
GO
-----检查的语句
SELECT  *
FROM    ##TempAll;        

---编译执行
SET PARSEONLY OFF;
GO
-----------------------------------------
---编译
SET NOEXEC ON;
GO
----编译的语句
SELECT  *
FROM    dbo.S_SJZD;
GO 

-----开始编译执行
SET NOEXEC OFF; 
GO 

  三、去重

    导数据时经常会遇到各种重复数据,去重也是重要的一环。常用的去重方法,我只道三种,1)DISTINCT;2)GROUPY BY ;3) ROW_NUMBER() OVER  排序去重。每一种都有各自的优缺点。

 

-------去重
----1.DISTINCT
SELECT DISTINCT
        Name
FROM    #Temp;

----2.Group By 去重
SELECT  Name
FROM    #Temp
GROUP BY Name
HAVING  COUNT(Name) > 1;

---3.排序去重
WITH    t AS ( SELECT   ROW_NUMBER() OVER ( PARTITION BY Name ORDER BY Name DESC ) AS a ,
                        *
               FROM     #Temp
             )
    SELECT  *
    FROM    t
    WHERE   a = 1;

暂时先写到这里,遇到了,再整理。。。

 

关于sql server 的那些事

标签:生命周期   使用   导数据   having   off   1.5   那些事   create   select   

人气教程排行