SQL Server 複習

來源:互聯網
上載者:User

SQL主要分為DDL和DML兩類:create table \drop table、ALTER TABLE等屬於DDL,select insert等屬於DML;

sqlsERVERZH中兩種常用的主鍵類型,int\識別欄位(又稱自動成長列)uniqueidentifier,用識別欄位的欄位在insert的時候不用指定主索引值;Sqlserver中產生GUID的函數:newid().net中:GUID.NewGuid(),返回GUID類型;

delete:刪除資料,drop table把整個表直接刪除

資料檢索:

檢索需要的列,select 列值進行計算:select age+100 from person

列別名:select id as '編號',name as '姓名',age as '年齡' from person

還可以檢索不與任何錶關聯的資料:select 1+1;select newid() select getdate()

彙總函式:對查詢的結果進行統計;

資料排序:asc descselect * from person order by age asc,id desc這裡面有一個先後順序,先按照年齡進行升序,如果年齡中有相同的則按照id進行降序排列order by子句要放到where之後:可以解釋為對結果集進行排序

萬用字元過濾:使用like單字元萬用字元半形底線_,多字元萬用字元半形百分比符號%

空值處理:在資料庫中一個列如果沒有指定值那麼值就為null,這個和C#中的null室友區別的,查詢列值為null時使用is:空值處理函數isnull('被判斷的值','如果被判斷的值為空白返回第二個參數')
多值匹配:使用in :select * from person where id in (1,2,3)between and :select * from person where id between 2 and 4

資料分組:先按照欄位進行分組,然後處理各組的資料,出現在select中的欄位名必須是彙總函式或者出現在group by 中的欄位;

彙總函式中的欄位可以是其他列的欄位;select count(*)as '姓名相同的人數' ,name  as'姓名',max(age)as '改組中的最大年齡' from person group by name 

having語句:在where中不能使用彙總函式,必須使用HAVING,Having要位於group by 之後,起到對組進行過濾的作用;能出現在having中的欄位要和在select中能用的的欄位一樣,即對組內的資料進行過濾

限制結果集的行數:select top 或者SQl server 2005後增加的row_number()函數

去掉重複資料:

distinct是針對整個行的而不是針對某個欄位:select distinct name ,age from personu

聯合結果集union 

把兩個執行結果整合到一起;select  id,name from person2 union select id ,name from person上下兩行的列數,欄位的資料類型一致select  0,name  from person2union select id ,name from personunion

預設將重複資料合併掉,如果不需要去掉重複資料使用

union all 

select  0,name,age  from person2union allselect id ,name,age from person資料報表執行個體select 'person2中的最小年齡',min(age) from person2union allselect 'person中的最大年齡',max(age) from personunion allselect 'person中的最小年齡',min(age) from person
數字函數

abs() ceiling() floor() round()

字串函數:

len() lower() ltrim() rtrim() substring('',strarposition,length) 

日期函數:

getdate()  dateadd(depart,number,date)計算增加以後的日期,參數date為待計算的日期,參數number為增量,參數depart為計量單位如day ,year...datediff(depart,statrdate,enddate)datepart(depart,date);返回一個日期的特定部分;擷取每年入職的人數case函數用法:

可用於修改表的輸出樣式:

單值判斷,

相當於switch cas

ecase expression

when value1 then returnvalue

when value1 then returnvalue

else defaultreturnvalue

 end

實現if else,

此時case後沒有運算式:

select * ,

(case 

when age>30 then '大齡青年'

when age=30 

then '30'

else '小屁孩'

end)

as '客戶類型'

from person

索引:

只在經常檢索的欄位上建立索引,即使建立了索引也有可能全表掃描:比如:like,函數,

類型轉換

串連查詢join

子查詢:將一個查詢語句作為一個結果集給其他語句使用;就像使用普通的表一樣,

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.