這篇文章將為大家詳細(xì)講解有關(guān)PostgreSQL中USER關(guān)鍵字如何使用,文章內(nèi)容質(zhì)量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關(guān)知識有一定的了解。
創(chuàng)新互聯(lián)公司主要從事成都網(wǎng)站設(shè)計、網(wǎng)站制作、網(wǎng)頁設(shè)計、企業(yè)做網(wǎng)站、公司建網(wǎng)站等業(yè)務(wù)。立足成都服務(wù)興山,10多年網(wǎng)站建設(shè)經(jīng)驗,價格優(yōu)惠、服務(wù)專業(yè),歡迎來電咨詢建站服務(wù):028-86922220
有人從MySQL改用PG,用戶表大概這么個結(jié)構(gòu)
CREATE TABLE "user"( userid int, username text, ... )
不加雙引號是不可以的,USER是保留關(guān)鍵字。
猜測建表用的是某種GUI工具,自動給表名加雙引號,所以創(chuàng)建是沒有問題的。
通過JDBC運(yùn)行SQL:SELECT * FROM user;
然后 rs.getString(2) 試圖取出用戶名,被告知超過列數(shù)范圍。直到注意到這個表名叫user,問題才得以解決。
我們來試試,兩種方式都是可以的
flying=# select user; user -------- quanzl (1 row) flying=# select * from user; user -------- quanzl (1 row)
user是個什么語法元素?既能出現(xiàn)在target列表看起來是個偽列,又能出現(xiàn)在FROM列表看起來是個返回結(jié)果集的偽表(這個詞我自己發(fā)明的)。前者容易理解,我們看看后者。
from_clause: FROM from_list { $$ = $2; } | /*EMPTY*/ { $$ = NIL; } ; from_list: table_ref { $$ = list_make1($1); } | from_list ',' table_ref { $$ = lappend($1, $3); } ;
這是FROM子句的語法定義,其中 table_ref 的部分定義
| func_table func_alias_clause { RangeFunction *n = (RangeFunction *) $1; n->alias = linitial($2); n->coldeflist = lsecond($2); $$ = (Node *) n; }
func_table定義
func_table: func_expr_windowless opt_ordinality
func_expr_windowless定義
func_expr_windowless: func_application { $$ = $1; } | func_expr_common_subexpr { $$ = $1; } ;
在func_expr_common_subexpr語法結(jié)構(gòu)里
| USER { $$ = makeSQLValueFunction(SVFOP_USER, -1, @1); }
FROM user 就是這么來的。
關(guān)于PostgreSQL中USER關(guān)鍵字如何使用就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。