SQL笔记
- 格式:doc
- 大小:85.50 KB
- 文档页数:12
1在使用SELECT時,可以創建虛擬的列(對原先的列進行一些操作),并把它顯示出來,即原來沒有的列。
2.可以對查詢出的列重新命名,即別名。
如SELECT NAME NEWNAME FROM STUDENTS;3.可以使用DISTINCT去除重複的結果,使得結果單一,不重複.4.在不同的SQL解釋器中,語法不同。
如有的不需要對語句結束加分號,有的則需要5.大小寫不區分,但是值的大小寫確是不同的。
6.請注意NULL,空值,以及為靈的區別。
7.LIKE的使用。
當要對查詢的條件進行限制的時候,但是也不需要精確的匹配的時候,就可以使用LINK對查詢的條件進行限制。
如SELECT NAME FROM STUDENTS WHERE NAME LIKE’JONES’.8.通配符的使用。
有兩種通配符%,_。
一個%可以代表很多字符,如JIM%代表所有以JIM開頭的字符串;而_代表一個字符,如JIM_代表四個字符,所有以JIM開頭的四個字符都滿足條件。
9.使用||進行字段的連接。
如SELECT FIRSTNAME || LASTNAME NAME FROM STUDENTS10.也可以使用+進行字段的連接。
可以進行字符串的連接。
但是有的解釋器不識別,會以為是兩個數字的相加,如果不是數字的話就會出錯。
11.使用邏輯判斷。
及WHERE后的條件是邏輯表達式,有AND,OR,NOT等。
NOT作用于NULL時用IS,如WHERE NAME IS NOT NULL;WHERE NAME NOT LIKE”JONES.12.集合運算。
使用UNION進行集合的合并。
其中UNION去除了合并時重複的部分,而UNION ALL并沒有去除重複部分,而是把合并的所有的元素都顯示出來。
如假如有兩張表分別表示足球FOOTBALL和籃球BASKETBALL的情況。
現在將參加足球和籃球的人員的姓名跳出來,并進行合并。
SELECT NAME FROM FOOTBALL UNION(ALL) SELECT NAME FROM BASKETB;13.使用INTERSECT進行交集運算。
如查詢出即參加了籃球又參加了足球的人員姓名,可表達為SELECT NAME FROM BASKETBALL INTERSECT SELECT NAME FROM FOOTBALL;14.使用MINUS進行減法運算,表示存在第一張表里,而不存在第二張表里的元素。
如參加了籃球而沒參加足球的人員表示為SELECT NAME FROM BASKETBALL MINUS SELECT NAME FROM FOOTBALL;15.可以使用IN,或者BETWEEN進行查詢範圍的限制。
如SELECT NAME FROM STUDENTS WHERE AGE IN(25,30,35); SELECT NAME FROM STUDENTS WHERE AGE BETWEEN 25 AND 35;其中BETWEEN …AND 包括邊界值在內。
16.匯總函數。
有COUNT ,A VG,SUM,MAX,MIN.使用COUNT時表示對滿足WHERE后條件的記錄進行數量的統計。
如SELECT COUNT(*) FROM STUDENTS WHERE AGE>20;使用SUM表示對某一列的值進行相加,返回和。
如SELECT SUM(SCORE) S1 FROM STUDENTS WHERE CLASS==1;注意:SUM只能處理數字。
使用A VG進行平均值的計算。
如SELECTA VG(SCORE) A1 FROM STUDENTS WHERE COURSE==語文;A VG也是只能對數字進行統計的。
MAX表示處理所選的字段的最大值,可以處理數字和字符串。
注意:MAX不能使用在WHERE子句中。
MIN和MAX是一樣的用法。
17.V ARIANCE表示方差,只能對數字運算。
STDDEV表示標準差,也只能對數字運算。
V ARIANCE(列名),STDDEV(列名)。
分別表示偏差的平方的平均數以及方差的平方根。
18.時間/日期函數。
ADD_MONTHS(日期,月的個數)。
表示在日期上往後推遲或向前推月的個數。
如ADD_MONTHS(TODAY,3)表示從今天起往後推遲三個月的日期。
ADD_MONTHS可以用在WHERE子句中表示查詢條件。
ST_DAY(日期)。
表示所指日期所在月的最後一天的日期是什麽。
如LAST_DAY(TODAY)表示這個月的最後一天的日期。
20.使用MONTHS_BETWEEN(日期1,日期2)函數表示在返回在兩個日期之間的月數。
這個函數對日期的次序是敏感的。
日期1表示結束的日期,日期2表示開始日期。
一般是日期1-日期2.可以用在WHERE子句后。
21.使用NEW_TIME函數可以設置新的時區。
如NEW_TIME(日期,原時區,現時區)表示把日期從原時區調到現在的時區。
22.NEXT_DAY(日期,星期幾)表示返回在我所指定的日期的附近或後面的星期幾的日期。
如今天后的星期一的日期。
NEXT_DAY(TODAY,’MONDAY’);23.SYSDATE返回系統的日期和時間。
如SELECT SYSDATE FROM STUDENTS.24.數學函數。
ABS(列名)將返回所指定列的數字的絕對值。
如SELECT ABS(A) FROM NUMBERS;SEIL(列名)表示等於或者大於指定列名的數字的最近的一個整數,FLOOR(列名)表示小於或者等於指定列名的最近的一個整數。
25.三角函數。
COS,COSH,SIN,SINH,TAN,TANH函數。
其中的列值都為弧度類型。
EXP(列)返回以E為底數,給定數據為指數的冪值。
LN和LOG返回以指定參數的對數。
LN(參數)和LOG(參數)。
其中參數必須為整數。
LOG(A,B)表示以B為底的A的對數。
26.MOD(A,B).表示取余。
與A%B相似。
POWER(A,B)表示以A為底的B次方的冪。
SIGN(A).如果A為整數,則結果為1。
如果A為負數,則結果為-1,為靈則結果為靈。
也可以用在WHERE子句中。
SQRT(A),其中A為正數。
表示A的平方根。
CHR(A)其中A為數值。
表示返回字符碼為A 的字符。
27.字符串函數。
連接函數CONCACT(字符串A,字符串B)表示將兩個字符串進行相接,與||相同。
INITCAP(A)表示將A的第一個字符大寫,其他字符小寫表示。
28.LOWER(A)和UPPER(A)分別表示將字符串的字符全部變成小寫和變成大寫。
29.LPAD(A,B,C)和RPAD(A,B,C)。
都包含三個參數。
第一個參數表示要處理的字符串。
第二個表示需將字符串改成的寬度,第三個表示需填充的字符。
30.使用LTRIM(A,B)和RTRIM(A,B)對字符串進行截斷。
若B為空格,即為空的話表示從左或者右邊對字符串A進行截斷,除去空格。
如LTRIM(NAME)表示從左邊除去NAME的空格。
若不為空格,則表示從左或者從右邊去除字符B,與LPAD和RPAD的意思正好相反。
.31.REPLACE(A,B,C)表示一個字符串A中將指定的字符串B用字符串C 代替。
其中可以沒有C或者C為空的話,表示只是查詢,而不代替。
如SELECT NAME,REPLACE(NAME,’HE’) FROM STUDENTS 表示查詢出NAME字段中的HE,并把它去除掉。
不用任何字符代替。
如果第二個參數也為空的話則返回原字段,不左任何處理。
32.SUBSTR(A,B,C)表示取子串。
A表示目標字符串,B表示子串的開始位置,C 表示子串的長度,若B為負數,表示從A的末尾數到B的絕對值的位置,取到C個字符。
如果沒有第三個參數的話,表示從B 開始的所有的字符都返回。
33.TRANSLATE(目標字符串A,源字符串B,目的字符串C)表示將A中的B用C代替。
34.INSTR(A,’B’,C,D)其中A是目標字符串,表示A中從C 開始,出現第D個B 時的位置。
默認的C和D都為1.若C為負數,則表示從A的末位置向前數。
35.LENGTH(A)表示A的長度。
36.轉換函數。
TO_CHAR(A)將A轉換為字符串。
注意:TO_CHAR與CHR的區別。
TO_NUMBER(B)表示將字符串B轉換為數字。
37.其他函數,如GREATEST(A,B,C…)表示返回幾個參數中的最大值。
而LEAST(A,B,C…)表示返回幾個參數中的最小值。
注意:每個SELECT語句都要有FROM字句,即使沒必要也要帶上,其中返回的行數將是FROM子句后的表的行數。
ER。
該函數返回當前使用數據庫的用戶的名字。
如SELECT USER FROM STUDENTS;此結果也是多個,即STUDENTS的行數,39.SQL中的子句。
STARTING WITH(字符串A),HA VING,GROUP BY,ORDER BY.STARTING WITH與LIKE exp%意思是一樣的。
如SELECT NAME FROM STUDENTS WHERE NAME STARTING WITH(‘H’)和SELECT NAME FROM STUDENTS WHERE NAME LIKE ‘H%.都是表示在學生表中查詢出以H開頭的學生的姓名。
40.ORDER BY 列名ASC|DESC表示查詢出的結果按照列名的升序或者降序進行排列。
ASC是默認的升序。
在需要輸出的列名中并不一定要包含進行選擇時使用的條件中使用的列名。
注意:若使用多個列名進行排序的話,則按照書寫的列名的先後順序進行排序。
如ORDER BY AGE ASC,NAME DESC表示先按照年齡的升序排序,再按照名字的降序進行排列。
如果知道想要依據的列進行排序的列的位置的話可以使用列的項次進行排列。
如ORDER BY 1,假如第一列是學生的學號的話。
41.匯總函數。
如COUNT,SUM,A VG,MAX,MIN。
注意:如果將正常列和匯總函數一起放在SELECT子句的話,在FROM子句后一定要使用GROUP BY 子句,並且BY中的列名一定要與SELECT中使用的列名一致。
GROUP BY 子句中的條件可以使用幾個列名,這幾個列名會同時起作用。
還有GROUP BY可以使用SELECT中未指出的字段,但是SELECT中的字段必須都出現再BY子句中。
42.HA VING條件的使用。
匯總函數不能出現在WHERE子句中。
所以使用了HA VING。
不能使用WHERE A VG(COURSE)>90;但是可以使用HA VINGA VG(COURSE)>90進行條件的限制。
在HA VING中可以使用多個匯總函數,他們一起起作用。
在HA VING中也可以使用在SELECT中未使用的字段進行限制。