數據庫查詢的基礎技巧

               窗外,一片煙水迷離,不遠處燈光璀璨,喧鬧之聲清晰可辯,那些記憶裏的愛與哀愁,千絲萬縷,交織成殤,彷彿今日連綿的惆悵一去不返。數據庫

誒閒話少說仍是繼續敲個人代碼吧express

             

  Hello ,你們好,歡迎來到差點是美男,你好我好你們好的技術平臺,接下來就由我爲你們揭開數據庫基礎查詢的神祕面紗吧ide

    揭開以前先來跟我瞭解一下T-SQL的查詢機制:函數

                查詢是針對表中已經存在的數據行而言的,能夠簡單的理解爲「篩選」將符合條件的數據抽選出來。數據表在接受查詢請求的時候,能夠簡單的spa

理解爲「它將逐行判斷」,判斷是否符合查詢條件。若是符合查詢條件就提取出來,而後把全部被選中的行組織在一塊兒,造成另一個相似於表的結構。構成code

的查詢結果,一般叫作記錄集(RecordSet)因爲記錄集的結構實際上和表的結構相似,都是由組成的,所以在記錄集上依然依然能夠進行再次查詢。blog

 

最最最基礎SELECT查詢語句:排序

Select<列名>
From<表名>
[Where <查詢條件表達式>]
[Order By <排列的列名>[ASC(升序)或DESC(降序)]
Select查詢語法

查詢全部的數據行和列:ci

例如查看學生表全部的行和列
Select  *  from  students

查詢部分行和列字符串

例如查看是北京學生的部分信息
Select  Scode. Sname,SAddress
From students
Where SAddress ='北京'

在查詢中使用列的別名

Select SCode  AS 學生編號,SName  AS 學生姓名
From Students
Where SAddress ='北京'

請聽專業人士如何解釋AS子句:

AS子句能夠用來改變結果集中的名稱,也能夠爲組合或者計算出的列指定名稱,還有一種狀況是讓標題列的信息更易懂。

查詢空值

//查詢學生信息表中沒有填寫Email的信息的學生,
//反向取值使用IS NOT NULL
Select SName From Students
Where SEmsil IS NULL

在查詢中使用常量列

//例如查詢學校名稱統一都是「北大青鳥」,查詢語句以下:
Select 姓名=SName,地址=SAddress,'北大青鳥'AS學校名稱
From Students

查詢返回限制的行數

//查詢返回衆多學生記錄中前位女生的姓名和地址信息
Select TOP  5  SName, SAdress
From Students
Where SSex=0 

按必定的百分比提取記錄用到PERCENT關鍵字

Select TOP 20 PERCENT SName, SAddress
From Students 
Where SSex=0

查詢排序

專業人士教你使用Order By 裝X之術

Order By  :須要排列查詢選中的行的時候就要使用Order By 子句,而且告訴你們一個祕密,它可使升序或降序排列(ASC升序DESC降序)通常人我不告訴他。記住若是不指定ASC或DESC結果集按默認ASC升序排序。

//例如查詢學生的成績,升序查看
Select StudentName,StudenScore
From Score
Where StudentScore>=60
Order by Score

通配符:

%:任意長度的任意字符,(包含0個)

:_:任意的單個字符,只能是一個字符

where後多個條件經過and鏈接,order by才用逗號

=(徹底匹配)like(模糊查詢)

在查詢基礎之上的技術:使用函數

函數:經常使用的有四類函數,分別是字符串函數丶日期函數丶數學函數丶系統函數。

字符串函數:

// 返回字符表達式中最左側字符的ASCII代碼值
select Ascii('a') --a:97,A:65 
//將整數ASCII代碼轉換爲字符
select Char(97)--97:a,65:A 
//返回表達式中指定字符的開始位置
select Charindex('b','abcdefg',5)
//以整數返回兩個字符表達式的SOUNDEX值之差
select Difference('bet','bit')--3
//返回字符表達式最左側指定數目的字符
select Left('abcdefg',3)--abc 
//返回給定字符串表達的字符數
select Len('abcdefg')--7 
// 返回將大寫字符轉換爲小字符的字符表達式
select Lower('ABCDEFG')--abcdefg 
//返回刪除了前導空格以後字符表達式
select Ltrim('   abcdefg')--abcdefg 
//返回具備給定的整數代碼的UNICODE字符
select Nchar(65)--A
//返回指定表達式中模式第一次出現的開始位置
select Patindex('%_cd%','abcdefg')--2
//返回爲成爲有效的SQL SERVER分隔標識符而添加了分隔符的UNICODE字符串
select Quotename('create table') 
//用第三個表達式替換第一個表達式中出現的第二個表達式
select Replace('abcdefg','cd','xxx')--abxxxefg 
//按指定次數重複表達式
select Replicate('abc|',4)--abc|abc|abc|abc|
//返回字符表達式的逆向表達式
select Reverse('abc')--cba

日期函數:

//得到當前系統時間
select getdate()
//返回表示指定日期的指定日期部分的字符串
//其中datepart 能夠是year,month,weekday
DateName ( datepart , date ) 
SELECT DATENAME(year, getdate()) AS 'Year Name' --------返回:2012
 
SELECT DATENAME(month, getdate()) AS 'Month Name'  --------返回:07
 
SELECT DATENAME(weekday, getdate()) AS 'Weekday Name'------返回:星期一
//DATEADD (datepart , number, date ),向指定日期加上一段時間,返回新的 datetime 值。
select DateAdd(MM,2,'2008-8-8') --------------返回:2008-10-08 00:00:00.000

select DateAdd(dd,2,'2008-8-8') --------------返回:2008-08-10 00:00:00.000

select dateadd(hh,-1,getdate()) --------------返回:2012-07-02 15:26:25.240,返回前一個小時的時間
//.DATEDIFF ( date-part, date-expression-1, date-expression-2 ) 返回兩個日期之間的時間間隔,此函數計算兩個指定日期之間的差值,結果爲日期部分中等於(date2-date1)的有符號的整數值
SELECT datediff( hour, '4:00AM', '5:50AM' )---------------------------返回: 1

SELECT datediff( month, '1987/05/02', '1995/11/15' )------------------返回: 102

SELECT datediff( day, '00:00', '23:59' )------------------------------返回:0

SELECT datediff( day,  '1999/07/19 00:00',  '1999/07/23 23:59' )------返回:4

SELECT datediff( month, '1999/07/19', '1999/07/23' )------------------返回:0

SELECT datediff( month, '1999/07/19', '1999/08/23' )------------------返回:1
//DATEPART ( datepart ,date )返回表明指定日期的指定日期部分的整數。
SELECT DATEPART(year,getdate()) as 'Year'    --------返回:2009

SELECT DATEPART(month,getdate()) as 'Month'   ---------返回:2

SELECT DATEPART(weekday,getdate()) as 'Weekday' ---------返回:3,如:Sunday = 1、Saturday = 7

SELECT DAY(getdate())             -----------------------返回:24

 

順便給你們提供一個福利能夠給你們帶來更快的效率(不用謝,我姓雷名鋒):

數學函數:

//返回從0到1之間的隨機Float值
Select rand()---返回0.79288062146374
//取數值表達式的絕對值
Select ABS(-100)--返回100
 
//向上取整,取大於或等於指定數值,表達式的最小整數
Select CEILING(43.5)--返回44
//向下取整,取小於或等於指定數值,表達式的最大整數
Select FLOOR(43.5)--返回43
//取數值表達式的冪值
Select POWER(5,2)--返回25
//取數值表達式的四捨五入爲指定精度
Select ROUND(43.543,1)--返回43.500
//對於正數返回+1.負數返回-1.對0返回0
Select SIGN(-43)--返回-1
//取浮點表達式的平方根
Select SQRT(9)--返回3

系統函數:

//返回當前用戶的名字
Select CURRENT-user返回你登錄的用戶名
//返回用於指定表達式的字節數
Select DATALENGTH('我愛你中國')返回5
//從給定的用戶ID返回用戶名
Select USER- NMAE(1)--返回從任意數據庫中返回「dbo」

因爲系統函數用到的地方比較少因此你們能夠稍微瞭解幾個就ok

好了各位,不知道我講到這裏對各位有沒有一丟丟的幫助,若是有請別忘了留下您的腳印。只要熟悉select查詢語句和函數的用法我想查詢數據庫對於咱們是小菜一碟。謝謝你們

肯花寶貴時間的來觀望個人文章。若是以爲不錯就請關注我吧

相關文章
相關標籤/搜索