SQL資料庫開發知識總結:提高篇

来源:http://www.cnblogs.com/shouce/archive/2016/02/23/5208724.html
-Advertisement-
Play Games

1.聯合結果集 (1) 簡單的結果集聯合 select FNumber,FName,Fage from T_Employee\ union select FidCardNumber,FName,Fage from T_Employee (2) 查詢的基本原則是:每個結果集必須有相同的列數,沒個結果集


1.聯合結果集

(1) 簡單的結果集聯合

  select FNumber,FName,Fage from T_Employee\

  union

  select FidCardNumber,FName,Fage from T_Employee

(2) 查詢的基本原則是:每個結果集必須有相同的列數,沒個結果集的列必須類型相同。

  select FNumber,FName,Fage,FDepartment from T_Employee

  union

  select FidNumber,FName,Fage,’臨時工,無部門’ from T_Employee

  1. union All

(1)  select FName,Fage from T_Employee

union

select FName,Fage from T_Emoloyee

   (*) union合併兩個查詢結果集,並且將其中完全重覆的數據行合併為一條記錄。

(2) select FName,Fage from T_Employee

  union All

  select FName,Fage from T_Employee

(*) union因為要進行重覆值的掃描,所以效率低,因此如果不是確定要合併重覆行,那麼推薦用union All

  1. 資料庫函數

(1) 數字函數

 1) ABS():求絕對值    select ABS(-3)

 2) ceiling():舍入到最大整數。例如:3.33將被舍入為4,2.89將被舍入為3,-3.61將被舍入為-3。ceiling的英文意思是天花板。

 3) floor():舍入到最小整數。例如:3.33將被舍入為3,2.89將被舍入為2,-3.61將被舍入為-4。floor的英文意思是:地板。

 4) round():四捨五入。舍入到“離我半徑最近的數”。round的英文意思是:半徑。

例如:select Round(-3.1415926,3)   執行結果是:-3.1420000

(2) 字元串函數

 1) len():計算字元串長度,   select len(‘234’)   執行結果是3。例如:

   select FName,len(FName) from T_Employee。

 2) lower(),upper():轉小寫,轉大寫。

 3) ltrim():字元串左側的空格去掉。例如:去掉兩邊的空格:

   rtrim():字元串右側的空格去掉。

  例如:去掉兩邊的空格:ltrim(rtrim(‘   韓迎龍    ’))

 4) SubString(string,start_position,length),參數string為主字元串,start_position為字元串在主字元串中的起始位置,length為子字元串的最大長度。例如:

  select substring(‘abcdefghijk’,2,3)   執行結果為:bcd。

  select FName,Substring(FName,2,2) from T_Employee。

(3) 日期函數

 1) getdate():取得當前日期的時間。

 2) dateadd(datepart,number,date),計算增加以後的時間,參數date為待計算的日期,參數number為增量,參數datepart為計量單位。例如:

  dateadd(day,3,date)為計算日期date的3天後的日期。

  dateadd(month,-3,date)為計算日期date的8個月前的日期。

  select dateadd(day,-3,getdate()) 執行結果是:當前時間的前三天。

 3) datediff(datepart,startdate,enddate):計算兩個日期之間的差額。datepart為計量單位。

   select datetdiff(hh,getdate(),dateAdd(day,-3,getdate()))  執行結果為-72。

   select FName,FInDate,DateDiff(year,FInDate,getdate()) from T_Employee 員工的工齡。

 4) datepart(datepart,date):返回一個日期的特定部分。例如:

  select datepart(year,getdate()),datepart(month,getdate())  執行結果:2012  4 

(4) 類型轉換函數

 1) cast(expression as data_type)

 2) Convert(date_type,express)

  例如:select cast (’123’as int),cast(‘2012/4/9’ as dattime),Convert(datetime,’2012/4/9’)

  1. 空值處理函數

(1) isNull(express,value):如果express不為空則返回express,否則返回value。例如:

  select isNull(Fname,’佚名’) as 姓名 from T_Employee

  1. Case函數用法

(1) 單值判斷,相當於switch case,語法為:

 case expression

when value1 then returnvalue1

when value2 then returnvalue2

when value3 then returnvalue3

else defaultreturnvalue

end

舉例如下:select FName,

         (

                     when 1 then ‘普通用戶’

                     when 2 then ‘會員’

                     when 3 then ‘VIP’

              else ‘未知客戶類型’

              end

       ) as 客戶類型 from T_Customer

  1. 索引Index

(1) 全表掃描,對數據進行檢索(select)效率最差的就是全表掃描,就是一條一條的找。

(2) 如果沒有目錄,查詢漢語字典就要一頁頁的翻,而有了目錄,只要查詢目錄即可,為了提高檢索的速度,可以為經常檢索的列添加索引,相當於創建目錄。

(3) 創建索引的方式,在表設計器中單擊右鍵,選擇”索引/鍵”到添加到在列中選擇索引包含的列。

(4) 使用索引能夠提高查詢效率,但是索引也是占據空間的,而且添加,刪除,更新數據的時候也需要同步更新索引,因此會降低insert,update,delete的速度,只有在經常檢索的欄位(where)上創建索引。

(5) (*)即使創建了索引,任然有可能全表掃描,比如:link,函數,類型轉換等。

  1. 表連接ioin

(1) select o.BillName,c.Name,c.Age

 from T_Orders as o join T_Customers as c on o.customerID=c.ID

註:簡單的join可以將兩張表按照一定的規律連接起來,使我們可以再兩張甚至更多的表之間進行查詢。

  1. 子查詢

(1)  將一個查詢語句做成一個結果集供其它SQL語句使用,就像使用普通的表一樣,被當做結果集的查詢語句被稱為子查詢。所有可以使用表的地方幾乎都可以使用子查詢來代替。

  select * from (select * from T2 where FAge<30)。


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

-Advertisement-
Play Games
更多相關文章
  • 一 、在初始化方法中把所有需要高亮關鍵字的label加入到labels數組中,並且把這些label原來字體的顏色加入到 labelTextColors中 ,代碼如下 self.labels = [NSArray arrayWithObjects:self.textLabel,self.detailT
  • 1.獲取HOME鍵方向 視圖控制器本身能檢測到屏幕的旋轉,如果要處理屏幕旋轉,需要重寫方法 supportedInterfaceOrientations(設置設備支持旋轉的方法, 如果不添加,視圖控制器將無法檢測到屏幕的旋轉) 旋轉後鍵盤收回 - (void)viewWillTransitionTo
  • 使用AS創建ADIL文件時AS會在main文件夾下給我們生成一個aidl文件夾和一個相同包名的包,通常我們會把所有和ADIL相關的類或文件放在這個包下,但是如果存在自定義的類時,程式編譯時無法通過,提示找不到自定義的包。解決辦法如下,在啟動Module的build.gradle中加入如下代碼: so
  • 1、在iTunes Connect 上面提交審核後,點擊下麵鏈接申請加急審核 鏈接:https://developer.apple.com/appstore/contact/appreviewteam/index.html 2、進去預設是:"request an expedited app revi
  • 兩種方法用來隱藏tabBar 1.在本頁面隱藏 #pragma mark - 隱藏tabBar - (void)viewWillAppear:(BOOL)animated{ self.tabBarController.tabBar.hidden = YES; } - (void)viewWillDi
  • 前言: 這裡算是比較實用的一篇了吧,進行了網路安全部署 準備: bmob賬號,JSPatch,公鑰,私鑰,MD5加密,AFNetWorking下載文件 #import <CommonCrypto/CommonDigest.h> #import <BmobSDK/Bmob.h> #import "AF
  • 今天開始嘗試用MYSQL,裝的時候碰見了些常見的問題,在這裡把它曬出來,希望它對自己和行友們都有些幫助: 錯誤1:執行配置的第二步:系統提示:“Configuration file tmeplate E:\網站\mysql\my-template.ini could not be processed
  • 修改oracle 10g的字元集 修改資料庫字元集為:ZHS16GBK查看伺服器端字元集 SQL > select * from V$NLS_PARAMETERS; 修改: $sqlplus /nolog SQL>conn / as sysdba 若此時資料庫伺服器已啟動,則先執行 SHUTDOWN
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...