sql知識(shí)點(diǎn)歸納總結(jié)
1Case的使用
Case具有兩種格式,簡(jiǎn)單Case函數(shù)和Case搜索函數(shù)1)Casesexwhen‘1’then‘男’
When‘2’then‘女’
Else‘其他’end
2)Casewhensex=‘1’then‘男’
Whensex=‘2’then‘女’
Else‘其他’end
注:1)只返回第一個(gè)符合條件的值,剩下的Case部分將會(huì)被自動(dòng)忽略2union/unionall的使用
1)select*fromtable1
unionall
select*fromtable22)select*fromtable1
union
select*fromtable2
注:1)不合并重復(fù)的行,2)會(huì)合并重復(fù)的行3數(shù)據(jù)表的連接
1)、內(nèi)連接(自然連接):只有兩個(gè)表相匹配的行才能在結(jié)果集中出現(xiàn)2)、外連接:包括
(1)左外連接(左邊的表不加限制)(2)右外連接(右邊的表不加限制)(3)全外連接(左右兩表都不加限制)3)、自連接(連接發(fā)生在一張基表內(nèi))
selecta.studentno,a.studentname,b.classnamefromstudentsa,classesbwherea.classid(+)=b.classid;STUDENTNOSTUDENTNAMCLASSNAME--------------------------------------------------1周虎一年級(jí)一班2周林一年級(jí)二班一年級(jí)三班以上語(yǔ)句是右連接:
即"(+)"所在位置的另一側(cè)為連接的方向,右連接說(shuō)明等號(hào)右側(cè)的所有記錄均會(huì)被顯示,無(wú)論其在左側(cè)是否得到匹配。也就是說(shuō)上例中,無(wú)論會(huì)不會(huì)出現(xiàn)某個(gè)班級(jí)沒(méi)有一個(gè)學(xué)生的情況,這個(gè)班級(jí)的名字都會(huì)在查詢結(jié)構(gòu)中出現(xiàn)。反之:
selecta.studentno,a.studentname,b.classnamefromstudentsa,classesbwherea.classid=b.classid(+);STUDENTNOSTUDENTNAMCLASSNAME--------------------------------------------------1周虎一年級(jí)一班2周林一年級(jí)二班3鐘林達(dá)
則是左連接,無(wú)論這個(gè)學(xué)生有沒(méi)有一個(gè)能在一個(gè)班級(jí)中得到匹配的部門號(hào),這個(gè)學(xué)生的記錄都會(huì)被顯示。
selecta.studentno,a.studentname,b.classnamefromstudentsa,classesbwherea.classid=b.classid;
這個(gè)則是通常用到的內(nèi)連接,顯示兩表都符合條件的記錄總之,
左連接顯示左邊全部的和右邊與左邊相同的右連接顯示右邊全部的和左邊與右邊相同的內(nèi)連接是只顯示滿足條件的!
4Distinct(去重)
5組函數(shù):如sum(),avg(),count()
1數(shù)據(jù)類型數(shù)字:number(n)數(shù)字number(n,m)浮點(diǎn)字符串:char(n)定長(zhǎng),方便查詢,varchar(n)變長(zhǎng),節(jié)省空間,varchar2(n)oracle自定義變長(zhǎng)日期:date
創(chuàng)建表createtable表名(列名列類型,…)插入數(shù)據(jù)insertinto表名values(列值,…)
注:數(shù)據(jù)庫(kù)中字符用單引號(hào)表示,數(shù)字不用Commit;
查詢select*from表名刪除表droptabledept_xxx查詢“||”符號(hào)表示兩個(gè)數(shù)據(jù)串接起來(lái)Distinct只能跟在select后邊如:selectdistinctjobfromemp_xxxWhere條件查詢注:sql語(yǔ)句大小寫不敏感,但數(shù)據(jù)大小寫敏感
如:select*fromemp_xxxwherejob=’Analyst’如果數(shù)據(jù)上analyst就查不出來(lái)
Between低值and高值In(列表)如:select*fromemp_xxxwherejob=’Manager’orjob=’Analyst’
Select*fromemp_xxxwherejobin(‘Manager’,’Analyst’)模糊匹配like%“%”表示0至多個(gè)字符,跟like配合使用“_”下劃線表示一個(gè)字符
如:select*fromemp_xxxwherejoblike‘%sale_’查詢哪些員工沒(méi)有獎(jiǎng)金Select*fromemp_ningwherebonusisnull;注:這里用的是is而不是=
否定形式:isnotnull,notbetween…and..,notin
Commit提交數(shù)據(jù),rollback數(shù)據(jù)回滾數(shù)字函數(shù)Round(數(shù)字,小數(shù)點(diǎn)后的位數(shù))用于數(shù)字的四舍五入Trunc(數(shù)字,小數(shù)點(diǎn)后的位數(shù))用于截取注:如果沒(méi)有延續(xù)二個(gè)參數(shù),默認(rèn)是0轉(zhuǎn)換函數(shù)To_date()將字符串?dāng)?shù)據(jù)按指定格式,轉(zhuǎn)換為日期數(shù)據(jù)To_char()將日期數(shù)據(jù)按指定格式轉(zhuǎn)換為字符串?dāng)?shù)據(jù)To_char(日期數(shù)據(jù),格式):把日期數(shù)據(jù)轉(zhuǎn)換為字符數(shù)據(jù)Selectto_char(sysdate,’yyyy-mm-ddhh24:mi:ss’)fromdual;日期格式:
To_date按指定時(shí)間格式插入數(shù)據(jù)Insertintoemp_xxx(empno,ename,hiredate)values(1012,’any’,to_date(‘201*-10-10’,’yyyy-mm-dd’))
Case語(yǔ)句,decode函數(shù)
函數(shù)的嵌套:f3(f2(f1(p1,p2),p3),p4)
查詢結(jié)果排序orderby***desc,asc注:排序可以用列名,列別名,表達(dá)式,函數(shù),甚至可以用數(shù)字,表示按第幾列排序
組函數(shù)Count(*),avg(),sum(),max(),min();注:組函數(shù):count/avg/sum/max/min如果函數(shù)中寫列名,默認(rèn)忽略空值A(chǔ)vg/sum針對(duì)數(shù)字的操作Max/min對(duì)所有數(shù)據(jù)類型都可以操作
分組查詢groupby***Groupby列名:表示按指定列分組查詢例:每個(gè)部門的薪水總和和平均薪水Selectdeptno,sum(salary)sum_s,avg(nvl(salary,0))avg_sfromemp_xxxGroupbydeptno;
Having子名用于對(duì)分組后的數(shù)據(jù)進(jìn)行過(guò)濾
注:區(qū)別where是對(duì)表中數(shù)據(jù)的過(guò)濾,having是對(duì)分組得到的結(jié)果數(shù)據(jù)進(jìn)一步過(guò)濾
如:平均薪水大于5000無(wú)的部門數(shù)據(jù),沒(méi)有部門的不算在內(nèi)
Selectdeptno,avg(nvl(salary,0))avg_sfromemp_xxxwheredetnoisnotnullgroupbydeptnohavingavg(nvl(salary,0))>5000
子查詢查詢最高薪水的是誰(shuí)Selectenamefromemp_xxxwheresalary=(selectmax(salary)fromemp_xxx)
總結(jié):查詢語(yǔ)句的基本格式:Select字段1,字段2,字段3,表達(dá)式,函數(shù),。。。From表名Where條件Groupby列名Having帶組函數(shù)的條件
Orderby列名
組函數(shù):count/avg/sum/max/min單行函數(shù)Trim,replace,lengthTo_number
子查詢:?jiǎn)涡斜容^運(yùn)算符><>=6000表關(guān)聯(lián),
主鍵(primarykey,pk)主鍵要求不重復(fù),不能是空值外鍵(Foreignkeyfk)外鍵參照主鍵的數(shù)據(jù)
3內(nèi)連接,匹配表,驅(qū)動(dòng)表
Rownum關(guān)鍵字是Oracle數(shù)據(jù)庫(kù)提供的,代表秸民
更新數(shù)據(jù)Update表名set列名=新列值,列名=新的列值
注:更新(update)數(shù)據(jù)表時(shí),注意條件,如果不加條件,修改的是全部表記錄
刪除數(shù)據(jù)Delete[from]表名where條件
Drop刪除表(刪除結(jié)構(gòu)和全部的表數(shù)據(jù))Droptable表名操作將刪除數(shù)據(jù)存儲(chǔ)到臨時(shí)空間中,不直接刪除,可以回退
Truncate保留表結(jié)構(gòu),刪除表中所有數(shù)據(jù)
Truncatetable表名;在功能上等同于Delete+commit,直接刪除,不占用臨時(shí)空間,不能回退
擴(kuò)展閱讀:SQL SERVER重要知識(shí)點(diǎn)歸納
1,數(shù)據(jù)模型:由數(shù)據(jù)結(jié)構(gòu)、數(shù)據(jù)操作和數(shù)據(jù)的完整性約束組成。
2,在E-R概念模型中,信息由實(shí)體型、實(shí)體屬性和實(shí)體間聯(lián)系3種概念單元來(lái)表示。
3,第一范式(1NF):設(shè)R是一個(gè)關(guān)系模式,如果R中的每個(gè)屬性都是不可分解的,則稱R是第一范式;第二范式(2NF):如果關(guān)系模式R是第一范式,且每個(gè)非碼屬性都完全依賴于碼屬性,則稱R是第二范式;第三范式(3NF):如果關(guān)系模式是R第二范式,且沒(méi)有一個(gè)非碼屬性傳遞依賴于碼,則稱
R是第三范式。
4,Transact-SQL語(yǔ)句的分類如下所示:
1變量聲明Transact-SQL語(yǔ)言可以使用兩類變量,局部變量和全局變量!
2數(shù)據(jù)定義語(yǔ)言(DataDefinitionLanguage,DDL),用來(lái)建立數(shù)據(jù)庫(kù)及數(shù)據(jù)庫(kù)對(duì)象,絕大部分○
以Create開(kāi)頭,如CreateTable等
3數(shù)據(jù)控制語(yǔ)言(DataControlLanguage,DCL),用來(lái)控制數(shù)據(jù)庫(kù)組件的存取訪問(wèn)、權(quán)限等命○
令,如GRANT、REVOKE等
4數(shù)據(jù)操縱語(yǔ)言(DataManipulationLanguage,DML),用來(lái)操縱數(shù)據(jù)庫(kù)中數(shù)據(jù)的命令,如○
SELECT、UPDATE等
5流程控制語(yǔ)言(FlowControlLanguage,FCL),用于控制應(yīng)用程序流程的語(yǔ)句,如IF、CASE○
等。
5,數(shù)據(jù)類型:整數(shù)型:
bigint(8個(gè)字節(jié),-263~263-1),int(4個(gè)字節(jié),-231~231-1),
smallint(2個(gè)字節(jié),-215~215-1),tingyint(1個(gè)字節(jié),0~255);
小數(shù)數(shù)據(jù)類型:
decimal[(p[,s])]p精度:指定小數(shù)點(diǎn)左邊和右邊可以存儲(chǔ)的十進(jìn)制數(shù)字的最大個(gè)數(shù)。1~38s小數(shù)位數(shù):0~p之間的值;numeric[(p[,s])]近似數(shù)值型:
float[(n)]n:1~53取值范圍:-1.79308~1.79308real取值范圍:-3.4038~3.4038
字符型(字符常量必須包含在單引號(hào)或雙引號(hào)中):
char[(n)]:長(zhǎng)度為n個(gè)字節(jié)的固定長(zhǎng)度且非Unicode的字符數(shù)據(jù),存儲(chǔ)大小為n個(gè)字節(jié)。n必須是一個(gè)介于1和8000之間的數(shù)值。
varchar[(n)]:長(zhǎng)度為n個(gè)字節(jié)的可變長(zhǎng)度且非Unicode的字符數(shù)據(jù)。n必須是一個(gè)介于1和8000之間的數(shù)值。存儲(chǔ)大小為輸入數(shù)據(jù)的字節(jié)的實(shí)際長(zhǎng)度,而不是n個(gè)字節(jié),所輸入的數(shù)據(jù)字符長(zhǎng)度可以為0
text:用來(lái)聲明變長(zhǎng)的字符數(shù)據(jù)。在定義的過(guò)程中,不需要指定字符的長(zhǎng)度,最大長(zhǎng)度為231-1(2147483647)個(gè)字符。當(dāng)服務(wù)器代碼頁(yè)使用雙字節(jié)字符時(shí),存儲(chǔ)量仍是2147483647字節(jié)。存儲(chǔ)大小可能小于2147483647字節(jié)(取決于字符串)邏輯數(shù)值型:
bit:可以存儲(chǔ)整數(shù)型數(shù)據(jù)1、0或NULL。如果輸入0以外的其他值,SQLServer均將其作為1看待。貨幣型:
money:可存儲(chǔ)的貨幣數(shù)值介于-263~263-1之間,精確到貨幣單位的萬(wàn)分之一,貨幣數(shù)據(jù)的存儲(chǔ)精確度為4位小數(shù),存儲(chǔ)大小為8個(gè)字節(jié);
smallmoney:可存儲(chǔ)的貨幣數(shù)據(jù)值介于-214748.3648~214748.3647,貨幣數(shù)據(jù)的存儲(chǔ)精確度為4位小數(shù),精確到貨幣單位的萬(wàn)分之一,存儲(chǔ)大小為4個(gè)字節(jié)。Unicode字符型:
nvarchar:當(dāng)列中各項(xiàng)所包含的Unicode字符數(shù)不同時(shí)(至多為4000)時(shí)使用;nchar:當(dāng)列中各項(xiàng)為一固定長(zhǎng)度時(shí)(至多為4000個(gè)Unicode字符)時(shí)使用;ntext:最大長(zhǎng)度為2-1.當(dāng)列中任意項(xiàng)超過(guò)4000個(gè)Unicode字符時(shí)使用。
它們分別與字符型的varchar[(n)]、char[(n)]和text類型相對(duì)應(yīng)。使用Unicode字符時(shí),應(yīng)該在前面加一個(gè)標(biāo)識(shí)符N,但是存儲(chǔ)時(shí)并不存儲(chǔ)該標(biāo)識(shí)符。
日期時(shí)間類型:
datetime:從1753年1月1日到9999年12月31日的日期和時(shí)間數(shù)據(jù),精確度為千分之三(3ms或0.003s)
smalldatetime:從1900年1月1日到2079年6月6日的日期和時(shí)間數(shù)據(jù),精確到分鐘。29.998
或更低的smalldatetime值向下舍入為最接近的分鐘,29.999s或更高的smalldatetime值向上舍入為最接近的分鐘。
例如:’4-16-201*03:48:39.257’,’04/16/201*13:30:20PM’
SQLServer可以識(shí)別的日期格式有字母格式、數(shù)字格式和無(wú)分隔字符串格式3種。字符格式允許使用以當(dāng)前語(yǔ)句給出的月全名(如April)或月的縮寫(如Apr)來(lái)指定日期數(shù)據(jù)。字符格式的日期需要放在單括號(hào)內(nèi)?捎玫淖址腿掌诟袷椒謩e為:Apr[il][15][,]201*Apr[il][15][,][20]06Apr[il]201*[15][15]Apr[il][,]201*15Apr[il][,][20]0615[20]06Apr[il]201*APR[IL][15]201*[15]APR[IL
]SQLServer可以識(shí)別以下數(shù)據(jù)格式。用單引號(hào)(’’)把每一種括起來(lái)。下面都是有效的時(shí)間格式:
14:30
14:30[:20:999]14:30[:20.9]4AM
4PM
[0]4[:30:20:500]AM
二進(jìn)制數(shù)據(jù)類型:
二進(jìn)制數(shù)據(jù)由十六進(jìn)制數(shù)表示。例如,十進(jìn)制245等于十六進(jìn)制數(shù)F5.在SQLServer201*中,二進(jìn)制數(shù)據(jù)使用binary、varbinary和image數(shù)據(jù)類型存儲(chǔ)。binary:在每行中都是固定的長(zhǎng)度(最多為8KB)
varbinary:在每行中所包含的十六進(jìn)制數(shù)字的個(gè)數(shù)可以不同(最多為8kb)
image:可以用來(lái)存儲(chǔ)超過(guò)8KB的可變長(zhǎng)度的二進(jìn)制數(shù)據(jù),如word文檔、excel電子表格、位圖圖像、圖形交換格式(GIF)文件和聯(lián)合圖像專家組(JPEG)文件。
其他數(shù)據(jù)類型:
1cursor游標(biāo)數(shù)據(jù)類型,用于創(chuàng)建游標(biāo)變量或者定義存儲(chǔ)過(guò)程的輸出參數(shù)。它是唯一的一○
種不能賦值給表的列(字段)的基本數(shù)據(jù)類型。
2Sql_variant數(shù)據(jù)類型,可以存儲(chǔ)除了text、ntext、timestamp和自己本身以外的其他所有○
類型的變量
3table數(shù)據(jù)類型,能夠保存函數(shù)結(jié)果,并將其作為局部變量數(shù)據(jù)類型,可以暫時(shí)存儲(chǔ)應(yīng)用○
程序的結(jié)果,以便在以后用到。
4uniqueidentifier數(shù)據(jù)類型,全局唯一標(biāo)示符,是一個(gè)16字節(jié)長(zhǎng)的二進(jìn)制數(shù)據(jù)類型,是○
SQLServer根據(jù)計(jì)算機(jī)網(wǎng)絡(luò)適配器和主機(jī)CPU時(shí)鐘產(chǎn)生的唯一號(hào)碼而生成的全局唯一標(biāo)示符。唯一標(biāo)示符代碼可以通過(guò)調(diào)用NEWID函數(shù)或者其他SQLServer應(yīng)用程序編程接口來(lái)獲得。5timestamp時(shí)間戳數(shù)據(jù)類型,可以反映數(shù)據(jù)庫(kù)中數(shù)據(jù)修改的相對(duì)順序!
6,在查詢分析器中輸入如下命令并執(zhí)行即可創(chuàng)建用戶定義數(shù)據(jù)類型:Sp_addtype@typename=address,@phystype=’char(30)’,@nulltype=’notnull’
7,定義變量:
DECLARE@variable_namedatatype[,…]
變量不能是text、ntext或image數(shù)據(jù)類型。變量最大長(zhǎng)度為30個(gè)字符賦值:
通常用SET和SELECT語(yǔ)句為變量賦值,其語(yǔ)法格式為:SET@variable_name=expressionSELECT@variable_name=expression
在局部變量沒(méi)有被賦值之前,其值是NULL,如果要在程序體重引用,特別是在循環(huán)結(jié)構(gòu)中,必須先為其賦值。
全局變量通常用來(lái)跟蹤服務(wù)器范圍和特定會(huì)話期間的信息,不能明顯地被賦值或聲明。全局變量不能由用戶定義,也不能由應(yīng)用程序在處理器之間交叉?zhèn)鬟f信息。8,SQLServer201*中較常用的全局變量變量@@connections@@cpu_busy@@cursor_rows@@datefirst@@dbts@@error@@fetch-status@@identity@@idle@@io_busy@@langid@@language@@LOCK_TIMEOUT@@max_precision@@nestlevel@@options@@pack_received@@pack_sent@@packet_errors@@procid@@remserver@@rowcount@@servername@@servicename@@textsize@@total_errors@@trancount@@transtate@@tranchained@@total_read@@version@@spid
說(shuō)明SQLServer自啟動(dòng)以來(lái)建立的連接數(shù)SQLServer自啟動(dòng)以來(lái)系統(tǒng)處理的毫秒數(shù)打開(kāi)游標(biāo)時(shí)滿足條件的行數(shù)值為1~7,指定每周的星期幾為第一天最后一次的timestamp值前一條SQL語(yǔ)句報(bào)告的錯(cuò)誤游標(biāo)中上條FETCH語(yǔ)句的狀態(tài)上次INSERT操作中使用的IDENTITY值上次啟動(dòng)SQLServer以來(lái)閑置的毫秒數(shù)上次啟動(dòng)SQLServer以來(lái)用于輸入輸出操作的毫秒數(shù)當(dāng)前所用語(yǔ)言的ID號(hào)當(dāng)前所用語(yǔ)言的名稱返回用SET語(yǔ)句設(shè)置的鎖定超時(shí)的值,以毫秒為單位返回decimal及numeric型數(shù)據(jù)的最大精度當(dāng)前執(zhí)行的存儲(chǔ)過(guò)程的嵌套層數(shù)返回當(dāng)前的SET選項(xiàng)的設(shè)置信息上次啟動(dòng)SQLServer以來(lái)從網(wǎng)絡(luò)上接收的輸入包數(shù)上次啟動(dòng)SQLServer以來(lái)從網(wǎng)絡(luò)上發(fā)送的輸出包數(shù)上次啟動(dòng)SQLServer以來(lái)從網(wǎng)絡(luò)上發(fā)生的錯(cuò)誤包的數(shù)目返回當(dāng)前執(zhí)行的存儲(chǔ)過(guò)程的ID號(hào)返回遠(yuǎn)程SQLServer數(shù)據(jù)庫(kù)服務(wù)器的名稱前一條命令處理的行數(shù)本地SQLServer的名稱正在運(yùn)行的SQLServer的注冊(cè)名用SET語(yǔ)句設(shè)置的當(dāng)前TEXTSIZE值,以字節(jié)為單位上次啟動(dòng)SQLServer以來(lái)的磁盤讀寫錯(cuò)誤數(shù)事務(wù)嵌套的級(jí)別事務(wù)的當(dāng)前狀態(tài)當(dāng)前事務(wù)的模式上次啟動(dòng)SQLServer以來(lái)發(fā)生的讀磁盤數(shù)SQLServer和OS版本級(jí)別當(dāng)前進(jìn)程ID@@max_connections返回服務(wù)器允許的最大并發(fā)連接數(shù)9,SQLServer提供的比較運(yùn)算符:多出!(不大于)兩種
10,邏輯運(yùn)算符邏輯運(yùn)算符含義ALLANDANYBETWEENEXISTSINLINKNOTORSOME
11,通配符及其含義:通配符%_(下劃線)[a-f][acf][^a-f][^aef]含義代表0個(gè)或多個(gè)任意字符代表任意1個(gè)字符指定范圍([a~f])或集合([abcdef])中的任何單個(gè)字符代表字符a、c或f不屬于指定范圍([a~f])或集合([abcdef])的任何單個(gè)字符除了a、e或f之外的任意一個(gè)字符當(dāng)一組比較關(guān)系的值都為TRUE時(shí),才返回TRUE當(dāng)要比較的兩個(gè)布爾表達(dá)式的值都為TRUE,才返回TRUE只要一組比較關(guān)系中有一個(gè)值為TRUE,就返回TRUE只有操作數(shù)在定義的范圍內(nèi),才返回TRUE如果在子查詢中存在,就返回TRUE如果操作數(shù)在所給的列表表達(dá)式中,則返回TRUE如果操作數(shù)與模式相匹配,則返回TRUE對(duì)所有其他的布爾運(yùn)算取反只要比較的兩個(gè)表達(dá)式有一個(gè)為TRUE,就返回TRUE如果一組比較關(guān)系中有一些為TRUE,則返回TRUE
12,字符串連接運(yùn)算符為加號(hào)(+),可以將兩個(gè)或多個(gè)字符串合并或連接成一個(gè)字符串。還可以連接二進(jìn)制字符串。
13,運(yùn)算符優(yōu)先級(jí)
1+(正)、-(負(fù))、~(按位NOT)○
2*(乘)、/(除)、%(模)○
3+(加)、+(連接)、-(減)○
4=、>、=、和!14,常用數(shù)學(xué)函數(shù)函數(shù)名稱ABSACOSASINATANATN2CEILINGCOSCOTDEGREEEXPFLOORLOGLOG10PIPOWERRADIANSRANDROUNDSINSQUARESQRTTAN函數(shù)功能簡(jiǎn)述求絕對(duì)值反余弦函數(shù)反正弦函數(shù)反正切函數(shù)增強(qiáng)的反正切函數(shù)求僅此于最大值的值余弦函數(shù)余切函數(shù)角度轉(zhuǎn)弧度計(jì)算e的x次冪求僅次于最小值的值求自然對(duì)數(shù)增強(qiáng)的自然對(duì)數(shù)常量,圓周率求x的y次方角度轉(zhuǎn)弧度求隨機(jī)數(shù)指定小數(shù)的位數(shù)正弦函數(shù)開(kāi)方求平方根正切函數(shù)
15,日期/時(shí)間函數(shù)
1、GETDATE()函數(shù):用于返回SQLServer系統(tǒng)中的當(dāng)前日期時(shí)間。
2、DATEADD()函數(shù):用于進(jìn)行兩個(gè)時(shí)間數(shù)據(jù)的相加,返回新的日期/時(shí)間3、DATEDIFF()函數(shù):用于返回兩個(gè)指定時(shí)間之間的間隔
4,DATENAME()函數(shù):用于返回一個(gè)指定的時(shí)間名字。例如:當(dāng)前的年、月或者日的名稱。5、DATEPART()函數(shù):和DATENAME()函數(shù)極其相似,只不過(guò)該函數(shù)返回的是具體的時(shí)間數(shù)
值而不是時(shí)間的名稱
16,聚合函數(shù)
聚合函數(shù)在結(jié)果集中通過(guò)對(duì)被選列值的收集處理并返回一個(gè)數(shù)值型的計(jì)算結(jié)果。(1)AVG()函數(shù)
該函數(shù)用于計(jì)算大量數(shù)據(jù)的平均值。
(2)COUNT()函數(shù)
在進(jìn)行數(shù)據(jù)查詢時(shí),該函數(shù)可以返回參數(shù)中非NULL值的數(shù)目。(3)SUM()函數(shù)
該函數(shù)用于計(jì)算指定數(shù)據(jù)項(xiàng)的總和(4)MAX()和MIN()函數(shù)
MAX()和MIN()函數(shù)用于計(jì)算多個(gè)數(shù)據(jù)項(xiàng)當(dāng)中的極值(最大值和最小值)。17,常用字符串函數(shù):函數(shù)名稱ASCIICHARCHARINDEXDIFFRENCELEFTLENLOWERLTRIMNCHARPATINDEX函數(shù)功能簡(jiǎn)述返回字符表達(dá)式最左端字符的ASCII代碼值將ASCII代碼轉(zhuǎn)換為字符的字符串函數(shù),ASCII碼應(yīng)是介于0~255的整數(shù),否則將返回NULL值返回字符串中指定表達(dá)式的起始位置以整數(shù)返回兩個(gè)字符表達(dá)式的SOUNDEX值之差,返回的整數(shù)是SOUNDEX值中相同字符的個(gè)數(shù),返回的值從0~4不等,4表示SOUNDEX值相同返回從字符串左邊開(kāi)始指定個(gè)數(shù)的字符返回給定字符串表達(dá)式的字符個(gè)數(shù),其中不包含尾隨空格將大寫字符數(shù)據(jù)轉(zhuǎn)換為小寫字符數(shù)據(jù)后返回字符表達(dá)式刪除起始空格后返回字符表達(dá)式返回Unicode標(biāo)準(zhǔn)所進(jìn)行的定義,用給定整數(shù)代碼返回Unicode字符返回指定表達(dá)式中某模式第一次出現(xiàn)的起始位置;如果在全部有效的文本和字符數(shù)據(jù)類型中沒(méi)有找到該模式,則返回0SQLServer分隔標(biāo)識(shí)符REPLACEREPLICATEREVERSERIGHTSOUNDEXSPACESTRSTUFFSUBSTRINGUNICODEUPPER
用第三個(gè)表達(dá)式替換第一個(gè)字符串表達(dá)式中出現(xiàn)的所有第二個(gè)給定字符串表達(dá)式以指定的次數(shù)重復(fù)字符表達(dá)式返回字符表達(dá)式的反轉(zhuǎn)返回從字符串右邊開(kāi)始指定個(gè)數(shù)的字符返回由4個(gè)字符組成的代碼(SOUNDEX),以評(píng)估兩個(gè)字符串的相似性返回由重復(fù)的空格組成的字符串返回由數(shù)字?jǐn)?shù)據(jù)轉(zhuǎn)換來(lái)的字符數(shù)據(jù)刪除指定長(zhǎng)度的字符并在指定的起始點(diǎn)插入另一組字符求子串函數(shù)按照Unicode標(biāo)準(zhǔn)的定義,返回輸入表達(dá)式的第一個(gè)字符的整數(shù)值返回將小寫字符數(shù)據(jù)轉(zhuǎn)換為大寫的字符表達(dá)式QUOTENAME返回帶有分隔符的Unicode串,分隔符的加入可使輸入的字符串稱為有效的18,控制流語(yǔ)句:
1.BEGIN…END語(yǔ)句:用于將多個(gè)T-SQL語(yǔ)句組合為一個(gè)程序塊。2.IF…ELSE語(yǔ)句:有條件地執(zhí)行語(yǔ)句3.CASE語(yǔ)句:可以進(jìn)行多個(gè)分支的選擇語(yǔ)法格式:
CASE
WHENTHEN[…n]
[ELSE]END搜索CASE格式:
CASE
WHENTHEN[…n]
[ELSE]
END
4.WHILE語(yǔ)句:通過(guò)布爾表達(dá)式來(lái)設(shè)置一個(gè)條件,當(dāng)這個(gè)條件成立時(shí),重復(fù)執(zhí)行一個(gè)語(yǔ)句或語(yǔ)句塊,重復(fù)執(zhí)行的部分稱為循環(huán)體?梢允褂肂reak和Continue關(guān)鍵字在循環(huán)內(nèi)部控制WHILE循環(huán)中語(yǔ)句的執(zhí)行
5.GOTO語(yǔ)句:遇到GOTO語(yǔ)句后,直接跳轉(zhuǎn)到lable標(biāo)號(hào)處繼續(xù)執(zhí)行,而GOTO后面的語(yǔ)句將不被執(zhí)行。
6.RETURN:可以從查詢或過(guò)程中無(wú)條件退出?稍谌魏螘r(shí)候用于從過(guò)程、批處理或語(yǔ)句塊中退出,而不是執(zhí)行位于RETURN之后的語(yǔ)句。
如果沒(méi)有指定返回值SQLServer系統(tǒng)會(huì)根據(jù)程序執(zhí)行的結(jié)果返回一個(gè)內(nèi)定值,RETURN命令返回的內(nèi)定值
返回值含義
0-1-2-3-4-5-6-7-8
程序執(zhí)行成功找不到對(duì)象數(shù)據(jù)類型錯(cuò)誤
死鎖
違反權(quán)限原則
語(yǔ)法錯(cuò)誤
用戶造成的一般錯(cuò)誤
資源錯(cuò)誤如磁盤空間不足非致命的內(nèi)部錯(cuò)誤已達(dá)到系統(tǒng)的極限
致命的內(nèi)部不一致性錯(cuò)誤表或指針破壞數(shù)據(jù)庫(kù)破壞硬件錯(cuò)誤
-9-10-11-12-13-14
7.WAITFOR語(yǔ)句:可以在指定的時(shí)間或者過(guò)了一定的時(shí)間后,執(zhí)行語(yǔ)句塊、存儲(chǔ)過(guò)程或者事務(wù)。語(yǔ)法格式為:
WAITFOR
8.PRINT語(yǔ)句:該語(yǔ)句將用戶定義的消息返回客戶端,其格式為:PRINT字符串|局部變量|函數(shù)|字符串表達(dá)式
19.使用DBCCSHRINKDATABASE命令收縮數(shù)據(jù)庫(kù)。
20.使用Transact-SQL命令查看數(shù)據(jù)庫(kù)語(yǔ)法:sp_helpdb[[@dbname=]’name’]示例:sp_helpdb‘Test_DB’
使用Transact-SQL命令查看數(shù)據(jù)庫(kù)的設(shè)置:DATABASEPROPERTYEX(database,property)
21。若要?jiǎng)?chuàng)建可移動(dòng)數(shù)據(jù)庫(kù),則必須使用sp_create_removable系統(tǒng)存儲(chǔ)過(guò)程,而不要使用
SQLServer企業(yè)管理器或CREATEDATABASE語(yǔ)句創(chuàng)建數(shù)據(jù)庫(kù)SP_CREATE_REMOVABLE系統(tǒng)存儲(chǔ)過(guò)程可以創(chuàng)建3個(gè)或更多文件
1一個(gè)文件包含系統(tǒng)表○
2一個(gè)文件包含事務(wù)日志○
3一個(gè)或多個(gè)文件包含數(shù)據(jù)庫(kù)○
重命名列:
采用sp_rename函數(shù)可以更改當(dāng)前數(shù)據(jù)庫(kù)中用戶創(chuàng)建對(duì)象(如表、列或用戶自定義類型)的名稱。
格式為:EXECsp_rename‘表名.列名’,’COLUMN’
UPDATE語(yǔ)句有日志記錄,如果要更改大量的text或image數(shù)據(jù),考慮使用UPDATETEXT或WRITETEXT語(yǔ)句,這兩個(gè)語(yǔ)句在默認(rèn)情況下午日志記錄。
友情提示:本文中關(guān)于《sql知識(shí)點(diǎn)歸納總結(jié)》給出的范例僅供您參考拓展思維使用,sql知識(shí)點(diǎn)歸納總結(jié):該篇文章建議您自主創(chuàng)作。
來(lái)源:網(wǎng)絡(luò)整理 免責(zé)聲明:本文僅限學(xué)習(xí)分享,如產(chǎn)生版權(quán)問(wèn)題,請(qǐng)聯(lián)系我們及時(shí)刪除。