SQL Server 2012 - SQL查詢

来源:http://www.cnblogs.com/i-shanghai/archive/2017/01/18/6295834.html
-Advertisement-
Play Games

執行計劃顯示SQL執行的開銷 工具→ SQL Server Profiler : SQL Server 分析器,監視系統調用的SQL Server查詢 Top查詢 -- Top Percent 選擇百分比 SELECT top 30 percent * FROM [SchoolDB].[dbo].[... ...


  1. 執行計劃顯示SQL執行的開銷
  2. 工具→ SQL Server Profiler : SQL Server 分析器,監視系統調用的SQL Server查詢
  3. Top查詢
    -- Top Percent 選擇百分比
    SELECT top 30 percent *  FROM [SchoolDB].[dbo].[Student]
    
    -- Top 支持定義變數查詢
    declare @per int = 30
    SELECT top ( @per) percent *  FROM [SchoolDB].[dbo].[Student] 
  4.  
  5. 常用Where查詢
    -- Top Percent 選擇百分比
    SELECT top 30 percent *  FROM [SchoolDB].[dbo].[Student]
    
    -- Top 支持定義變數查詢
    declare @per int = 30
    SELECT top ( @per) percent *  FROM [SchoolDB].[dbo].[Student]
    
    --重命名
    select StuName as [姓 名]  FROM [SchoolDB].[dbo].[Student]
    
    --通配符查詢
    select *  FROM [SchoolDB].[dbo].[Student] where  Height like '1[67][0-9]'
    
    --IsNull 把Null數據轉換為其他值。NULL和任何欄位做比較返回的都是NULL
    select *  FROM [SchoolDB].[dbo].[Student] where  ISNULL(StuBirthday,0)  <'1990-01-01'
    
    -- Exists 存在,適用於內外表的查詢,Exists不關心查詢到的內容,只關心是否能查詢到數據
    select * From [Student] as Stu1 where exists(
    	 --select 1 
    	 select * From [Student] as Stu2 where StuID=Stu1.StuID  and Stu2.Height>160
    )
     
    
    --CharInedx 字元a在字元串aa中出現的位置
    select CHARINDEX('a','sdafasdad',1)
    
    --PatIndex ,查詢通配符字元串的位置
    select * From [Student] where PatIndex ('王_',StuName)>0
  6. 聚合函數
    -------------聚合函數-------------
    
    --group by 單欄位分組-- 
    
    --每個班級的人數
    select class as '班級', count(*) as '人數' from [Student] 
    group by Class
    
    --每個班級的平均身高、最小生日
    select class as '班級',AVG(Height) as '平均身高',Min(StuBirthday) as '最小生日'  from [Student] 
    group by Class
    
    select class as '班級',Min(StuBirthday) as '平均身高' from [Student] 
    group by Class
    
    --group by 多欄位分組-- 
    select class as '班級',StuSex as '性別',COUNT(*),AVG(Height) as '平均身高',Min(StuBirthday) as '最小生日'  from [Student] 
    group by Class,StuSex
    -- having Class='1'  --分組後進行過濾
    having  AVG(Height)>=159  --分組後進行過濾
    
    --SUM求和,AVG平均,MAX最大,Cast轉化
    select class as '班級', SUM(height) as '總身高',MAX(height) as '身高最高', CAST(AVG(height/1.0) as decimal(18,2))  as '平均高'  from [Student] 
    group by Class
    
    --Distinct
    select class, count(*) as '班級人數',count(1) as '班級人數',count(StuID) as '班級人數',count(StuSex) as '班級性別',count(distinct(StuSex)) as '班級不同的性別'
    from [Student] 
    group by Class
  7. 嵌套查詢
    ------------嵌套查詢----------
     
    ------------1.1子查詢 ----------------
    SELECT  *
    FROM    ( SELECT    dbo.Student.* ,
                        dbo.ClassInfo.ClassName
              FROM      dbo.Student
                        JOIN dbo.ClassInfo ON Student.Class = dbo.ClassInfo.ID
            ) AS T;
    -- T 是臨時的查詢結果集
    
    ------------1.1 嵌套子查詢(內部子查詢結果一次性提供結果集供外部查詢) ----------------
    SELECT  *
    FROM    dbo.Student
    WHERE   Class IN ( SELECT   ID
                       FROM     dbo.ClassInfo );
    
     ------------1.2 相關子查詢(外部表中的數據逐條作為參數傳遞給內部表中的數據) ----------------
    SELECT  *
    FROM    dbo.Student AS Stu
    WHERE  EXISTS ( SELECT * FROM dbo.ClassInfo  WHERE ID=Stu.Class  );
    
    -- IN :子查詢數據量小,而外表數據大 (子查詢數據逐條迴圈)
    -- Exist:子查詢數據量大,而外表數據小 (Exist只關心是否能查詢到數據)
    -- 能用關聯查詢,儘量不用子查詢
    
    
    -----------2. 創建物理臨時表 -----------
    CREATE TABLE #TableTemp
        (
          id INT NOT NULL
                 IDENTITY(1, 1)
                 PRIMARY KEY ,
          name NVARCHAR(10)
        );
    
    INSERT  INTO #TableTemp
            ( name )
    VALUES  ( N'你好'  -- name - nvarchar(10)
              );
    
    SELECT  *
    FROM    #TableTemp;
    
    DROP TABLE #TableTemp;
    
    -----------3. into 臨時表(物理表)---------
    SELECT  dbo.Student.* ,
            dbo.ClassInfo.ClassName
    INTO    #TableTemp
    FROM    dbo.Student
            JOIN dbo.ClassInfo ON Student.Class = dbo.ClassInfo.ID;
    
    SELECT  *
    FROM    #TableTemp;
    
    DROP TABLE #TableTemp;
    
    ----------4.複製表結構----------
    SELECT  *
    INTO    Student_His
    FROM    dbo.Student
    WHERE   1 = 2;
    
    ----------5.創建表變數----------
    DECLARE @tmp_Table TABLE
        (
          id INT NOT NULL
                 IDENTITY(1, 1)
                 PRIMARY KEY ,
          name NVARCHAR(20)
        );
    
    INSERT  @tmp_Table
            ( name )
    VALUES  ( -- id - int
              N'表變數'  -- name - nvarchar(20)
              );
    
    SELECT  *
    FROM    @tmp_Table;
    
    ----------6.公共表表達式, CTE:Common Table Expression。可以生成多個臨時表,然後再進行連接查詢---------- 
    ;WITH  T AS ( SELECT   dbo.Student.* ,
                            dbo.ClassInfo.ClassName
                   FROM     dbo.Student
                            JOIN dbo.ClassInfo ON Student.Class = dbo.ClassInfo.ID
                 ),
    			 T1 AS(
    				SELECT * FROM dbo.Student
    			 )
    	-- Select、Update 緊跟在 With As 才有效		 
        SELECT  T.*
        FROM    T JOIN T1 ON t.StuID=T1.StuID 
    
    ----------7.使用ANY、SOME、ALL關鍵字----------
    SELECT  *
    FROM    dbo.Student
    WHERE   Class =ALL ( SELECT   ID
                       FROM     dbo.ClassInfo  WHERE ID=1);
    

      


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • http://www.cnblogs.com/xusir/archive/2012/12/24/2830957.html ...
  • 概述 昨天下午突然看到,《爐石傳說》游戲資料庫發生宕機並引發數據丟失事故的新聞。剛看到時,滿滿的不可思議。暴雪啊,網易啊。 都是很牛叉的公司。他們出的游戲我都是很喜歡的。 當我看到,第一時間著手搶修,重啟伺服器,並嘗試數據恢復時,我的想法是他們的高可用方案呢?為什麼不馬上切換? 當我看到相關備份數據 ...
  • 介紹 經常會有人問profile工具該怎麼使用?有沒有方法獲取性能差的sql的問題。自從轉mysql我自己也差不多2年沒有使用profile,忽然profile變得有點生疏不得不重新熟悉一下。這篇文章主要對profile工具做一個詳細的介紹;包括工具的用途和使用方法等。profile是SQLServ ...
  • 今天公司編輯部有一妹紙,遇到問題,是需要處理資料庫中重覆的數據,於是想辦法幫忙解決,要求刪除重覆的數據,該表中只有一個欄位,假設為保存的公司名,這是經過多重過濾之後,最終留下的的數據,需要進行篩選,然後重覆的數據只保留一條,最上邊或最下邊的都可以,有且僅有一條,整張表的數據量大概在20W左右,重覆量 ...
  • ###11數據表中的數據類型 * A:MySQL中的我們常使用的數據類型如下 詳細的數據類型如下(不建議詳細閱讀!) 分類 類型名稱 說明 整數類型 tinyInt 很小的整數 smallint 小的整數 mediumint 中等大小的整數 int(integer) 普通大小的整數 小數類型 flo ...
  • 記得在自己學習資料庫知識的時候特別喜歡看案例,因為優化的手段是容易掌握的,但是整體的優化思想是很難學會的。這也是為什麼自己特別喜歡看案例,今天也開始分享自己做的優化案例。 最近一直很忙,博客產出也少的可憐,今天整理了一下自己做過優化或各種方案的客戶已經超過100家了,今天分享的案例算是在這些客戶中比 ...
  • Apache Flink是一個面向分散式數據流處理和批量數據處理的開源計算平臺,它能夠基於同一個Flink運行時,提供支持流處理和批處理兩種類型應用的功能。 現有的開源計算方案,會把流處理和批處理作為兩種不同的應用類型,因為它們所提供的SLA(Service Level Aggreement)是完全 ...
  • 編輯 用戶: SYSTEM 1.1, 1.2, 2.1, 2.2, 3.1, 3.2, 4.1, 4.2, 5.1, 5.2, 6.1, 6.2, 7.1, 7.2, 8.1, ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...