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

來源:互聯網
上載者:User

  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)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.