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
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...