實(shí)驗(yàn)小結(jié)(FAQ):
關(guān)于openGauss數(shù)據(jù)庫在使用SQL過程中需要注意的事項(xiàng),總結(jié)如下(以下有SQL通用的弦悉, 也存在數(shù)據(jù)庫特性的,具體以實(shí)踐經(jīng)驗(yàn)為準(zhǔn)):
1瀑志、關(guān)鍵字“Tid”
關(guān)鍵字“Tid”在openGauss數(shù)據(jù)庫中被認(rèn)定為關(guān)鍵字污秆,不能作為字段被定義;
2良拼、數(shù)據(jù)(日期)類型“datetime”
openGauss數(shù)據(jù)庫中不存在類型“datetime”庸推;
3、round() 函數(shù)使用
round(x),描述:離輸入?yún)?shù)最近的整數(shù)刮吧。返回值類型:與輸入相同掖蛤。
round(v numeric, s int),描述:保留小數(shù)點(diǎn)后s位蚓庭,s后一位進(jìn)行四舍五入。返回值類型:numeric .
4器赞、group by 子句
GROUP BY語句和SELECT語句一起使用港柜,用來對相同的數(shù)據(jù)進(jìn)行分組。您可以對一列或者多列進(jìn)行分組爽锥,但是被分組的列必須存在畔柔。
5靶擦、HAVING子句
HAVING子句可以讓我們篩選分組后的各組數(shù)據(jù)雇毫。WHERE子句在所選列上設(shè)置條件棚放,而HAVING子句則在由GROUP BY子句創(chuàng)建的分組上設(shè)置條件寂纪。
6捞蛋、EXISTS 柬姚、 NOT EXISTS
EXISTS的參數(shù)是一個任意的SELECT語句搬设,或者說子查詢。系統(tǒng)對子查詢進(jìn)行運(yùn)算以判斷它是否返回行拿穴。如果它至少返回一行默色,則EXISTS結(jié)果就為”真”狮腿;如果子查詢沒有返回任何行, EXISTS的結(jié)果是”假”吃度。
這個子查詢通常只是運(yùn)行到能判斷它是否可以生成至少一行為止贴硫,而不是等到全部結(jié)束。
7英遭、IN 、NOT IN
右邊是一個圓括弧括起來的子查詢兑牡,它必須只返回一個字段均函。左邊表達(dá)式對子查詢結(jié)果的每一行進(jìn)行一次計算和比較。如果找到任何相等的子查詢行洛勉,則IN結(jié)果為”真”收毫。如果沒有找到任何相等行殷勘,則結(jié)果為”假”(包括子查詢沒有返回任何行的情況)玲销。
表達(dá)式或子查詢行里的NULL遵照SQL處理布爾值和NULL組合時的規(guī)則。如果兩個行對應(yīng)的字段都相等且非空策吠,則這兩行相等猴抹;如果任意對應(yīng)字段不等且非空锁荔,則這兩行不等蟀给;否則結(jié)果是未知(NULL)。如果每一行的結(jié)果都是不等或NULL 堕战,并且至少有一個NULL 坤溃,則IN的結(jié)果是NULL 。
8嘱丢、比較操作符
操作符
描述
<
小于
>
大于
<=
小于或等于
>=
大于或等于
=
等于
<> 或 !=或^=
不等于
9薪介、分支語句
圖1
圖2
參數(shù)說明:
case_expression:變量或表達(dá)式。
when_expression:常量或者條件表達(dá)式越驻。
statement:執(zhí)行語句汁政。
10、窗口函數(shù)rank(expression)和row_number(expression)
列存表目前只支持rank(expression)和row_number(expression)兩個函數(shù)缀旁。
窗口函數(shù)與OVER語句一起使用记劈。OVER語句用于對數(shù)據(jù)進(jìn)行分組,并對組內(nèi)元素進(jìn)行排序目木。窗口函數(shù)用于給組內(nèi)的值生成序號军拟。
說明:
窗口函數(shù)中的order by后面必須跟字段名,若order by后面跟數(shù)字辫继,該數(shù)字會被按照常量處理姑宽,因此對目標(biāo)列沒有起到排序的作用馏颂。
RANK() 救拉,描述:RANK函數(shù)為各組內(nèi)值生成跳躍排序序號,其中派昧,相同的值具有相同序號。返回值類型:BIGINT
ROW_NUMBER(),描述:ROW_NUMBER函數(shù)為各組內(nèi)值生成連續(xù)排序序號泻拦,其中,相同的值其序號也不相同架曹。返回值類型:BIGINT