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
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) 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) isnull(express,value):如果express不為空則返回express,否則返回value。例如:
select isnull(fname,』佚名』) as 姓名 from t_employee
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
索引index
(1) 全表掃瞄,對資料進行檢索(select)效率最差的就是全表掃瞄,就是一條一條的找。
(2) 如果沒有目錄,查詢漢語字典就要一頁頁的翻,而有了目錄,只要查詢目錄即可,為了提高檢索的速度,可以為經常檢索的列新增索引,相當於建立目錄。
(3) 建立索引的方式,在表設計器中單擊右鍵,選擇」索引/鍵」到新增到在列中選擇索引包含的列。
(4) 使用索引能夠提高查詢效率,但是索引也是佔據空間的,而且新增,刪除,更新資料的時候也需要同步更新索引,因此會降低insert,update,delete的速度,只有在經常檢索的字段(where)上建立索引。
(5) (*)即使建立了索引,任然有可能全表掃瞄,比如:link,函式,型別轉換等。
表連線ioin
(1) select o.billname,c.name,c.age
from t_orders as o join t_customers as c on o.customerid=c.id
子查詢(1) 將乙個查詢語句做成乙個結果集供其它sql語句使用,就像使用普通的表一樣,被當做結果集的查詢語句被稱為子查詢。所有可以使用表的地方幾乎都可以使用子查詢來代替。
select * from (select * from t2 where fage<30)。
資料庫知識 基礎篇
一定要記住,sql 對大小寫不敏感!某些資料庫系統要求在每條sql命令的末端使用分號。在我們的教程中不用分號。分號是在資料庫系統中分隔每條 sql 語句的標準方法,這樣就可以在對伺服器的相同請求中執行一條以上的語句如果您使用的是 ms access 和 sql server 2000,則不必在每條 ...
資料庫 Sql總結
關係型資料庫 mysql oracle db2 sqlserver 非關係型資料庫 redis mongodb a 關係型資料庫 是指採用了關係模型來組織資料的資料庫。關係模型指的就是二維 模型,而乙個關係型資料庫就是由二維表及其之間的聯絡所組成的乙個資料組織。優點 可以使用sql語言便捷的運算元據...
資料庫知識總結
這是我關於之前學習資料庫一些知識的總結 首先資料庫分為兩種,關係型資料庫,如mysql,還有非關係型資料庫,如nosql。這裡主要是對比較常用的關係型資料庫進行的總結。關係型資料庫是基於關係代數理論的,它的優缺點 優點 健壯性強,社群龐大 缺點 表結構不直觀,實現複雜,速度慢 join會做乙個笛卡爾...