内射老阿姨1区2区3区4区_久久精品人人做人人爽电影蜜月_久久国产精品亚洲77777_99精品又大又爽又粗少妇毛片

postgresql的.的簡(jiǎn)單介紹

postgresql----數(shù)組類(lèi)型和函數(shù)

postgresql支持?jǐn)?shù)組類(lèi)型,可以是基本類(lèi)型,也可以是用戶(hù)自定義的類(lèi)型。日常中使用數(shù)組類(lèi)型的機(jī)會(huì)不多,但還是可以了解一下。不像C或JAVA高級(jí)語(yǔ)言的數(shù)組下標(biāo)從0開(kāi)始,postgresql數(shù)組下標(biāo)從1開(kāi)始,既可以指定長(zhǎng)度,也可以不指定長(zhǎng)度。且postgresql既支持一維數(shù)組,也支持多維數(shù)組,但是平時(shí)二維數(shù)組也就夠用了。

創(chuàng)新互聯(lián)公司是一家集網(wǎng)站建設(shè),平羅企業(yè)網(wǎng)站建設(shè),平羅品牌網(wǎng)站建設(shè),網(wǎng)站定制,平羅網(wǎng)站建設(shè)報(bào)價(jià),網(wǎng)絡(luò)營(yíng)銷(xiāo),網(wǎng)絡(luò)優(yōu)化,平羅網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競(jìng)爭(zhēng)力??沙浞譂M(mǎn)足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時(shí)我們時(shí)刻保持專(zhuān)業(yè)、時(shí)尚、前沿,時(shí)刻以成就客戶(hù)成長(zhǎng)自我,堅(jiān)持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實(shí)用型網(wǎng)站。

示例1.使用ARRAY構(gòu)建數(shù)組類(lèi)型

---1*4的一維數(shù)組test=#selectarray[1,2,3,4];

array? -----------{1,2,3,4}

(1 row)--2*2的二維數(shù)組test=#selectarray[[1,2],[3,4]];

array? ? ---------------{{1,2},{3,4}}

(1 row)--1*2的二維數(shù)組,基本類(lèi)型為box矩形類(lèi)型,且和上面相比box類(lèi)型元素之間是以分號(hào)分隔的,其他所有類(lèi)型的數(shù)據(jù)都是以逗號(hào)分隔的test=#selectarray[box'(1,1),(0,0)',box'(0,0),(-1,-1)'];

? ? ? ? array? ? ? ? ? ? -----------------------------{(1,1),(0,0);(0,0),(-1,-1)}

(1row)

示例2.創(chuàng)建一張表,字段包含數(shù)組類(lèi)型

其中int[]表示數(shù)組長(zhǎng)度無(wú)限制,int[4]表示數(shù)組長(zhǎng)度為4.

test=#createtabletbl_array(aint[],bvarchar(32)[][],cint);CREATETABLEtest=#insertintotbl_array (a,b,c)values(array[1,2],array[[1,2,3],[4,5,6]],1);INSERT01test=#insertintotbl_array (a,b,c)values(array[1,2,3],array[[1,2],[4,5]],2);INSERT01test=#select*from tbl_array ;

a? ? |b| c ---------+-------------------+---{1,2}|{{1,2,3},{4,5,6}}|1 {1,2,3}|{{1,2},{4,5}}|2(2 rows)

test=#selecta[1],b[2]fromtbl_arraywherec=1;

a | b ---+---1|

(1 row)

test=#selecta[1],b[2][1]fromtbl_arraywherec=1;

a | b ---+---1|4(1 row)

test=#selecta[1],b[2][4]fromtbl_arraywherec=1;

a | b ---+---1|

(1row)

test=#updatetbl_arrayseta[1]=200wherea[1]=1;UPDATE1test=#selecta[1],b[2][4]from tbl_array ;

a? | b -----+---100|200|

(2rows)

也可以使用[下標(biāo):上標(biāo)]方式來(lái)查詢(xún)數(shù)組連續(xù)的某些元素。

test=#selecta[2:3]from tbl_array ;

a? -------{2}

{2,3}

(2 rows)

test=#selecta[1:3]from tbl_array ;

a? ? -----------{100,2}

{200,2,3}

(2rows)

數(shù)組操作符與函數(shù)

操作符

操作符描述示例結(jié)果

=相等?SELECT ARRAY[1.1,2.1,3.1]::int[] = ARRAY[1,2,3];?t

不等于?select ARRAY[1,2,3] ARRAY[1,2,4];?t

小于?select ARRAY[1,2,3] ARRAY[1,2,4];?t

大于?select ARRAY[1,4,3] ARRAY[1,2,4];?t

=小于或等于?select ARRAY[1,2,3] = ARRAY[1,2,3];?t

=大于或等于?select ARRAY[1,4,3] = ARRAY[1,4,3];?t

@包含?select ARRAY[1,4,3] @ ARRAY[3,1];?t

@包含于?select ARRAY[2,7] @ ARRAY[1,7,4,2,6];?t

重疊(是否有相同元素)?select ARRAY[1,4,3] ARRAY[2,1];?t

||數(shù)組與數(shù)組連接?select ARRAY[1,2,3] || ARRAY[4,5,6];?{1,2,3,4,5,6}

||數(shù)組與數(shù)組連接?select ARRAY[1,2,3] || ARRAY[[4,5,6],[7,8,9]];?{{1,2,3},{4,5,6},{7,8,9}}

||元素與數(shù)組連接?select 3 || ARRAY[4,5,6];?{3,4,5,6}

||數(shù)組與元素連接?select ARRAY[4,5,6] || 7;?{4,5,6,7}

函數(shù)

函數(shù)返回類(lèi)型描述示例結(jié)果

array_append(anyarray,anyelement)anyarray?在數(shù)組末尾追加元素?

SELECT array_append(ARRAY[1,2], 3);

{1,2,3}

array_cat(anyarray,anyarray)anyarray?連接兩個(gè)數(shù)組?SELECT array_cat(ARRAY[1,2,3], ARRAY[4,5]);?{1,2,3,4,5}

array_ndims(anyarray)int?返回?cái)?shù)組維數(shù)?SELECT array_ndims(ARRAY[[1,2,3], [4,5,6]]);?2

array_dims(anyarray)text?返回?cái)?shù)組維數(shù)的文本表示?SELECT array_dims(ARRAY[[1,2,3], [4,5,6]]);?[1:2][1:3]

array_fill(anyelement,int[], [,int[]])anyarray使用提供的值和維度初始化一個(gè)數(shù)組,其中anyelement是值,第一個(gè)int[]是數(shù)組的長(zhǎng)度,第二個(gè)int[]是數(shù)組下界,下界默認(rèn)是1?SELECT array_fill(7, ARRAY[3], ARRAY[2]);?[2:4]={7,7,7}

array_length(anyarray,int)int?返回?cái)?shù)組指定維度的長(zhǎng)度?SELECT array_length(array[1,2,3], 1);?3

array_lower(anyarray,int)int?返回?cái)?shù)組指定維度的下界?SELECT array_lower('[0:2]={1,2,3}'::int[], 1);?0

array_position(anyarray,anyelement[,int])int?返回?cái)?shù)組元素anyelement從數(shù)組的[,int]位置(默認(rèn)為1)開(kāi)始第一次出現(xiàn)在數(shù)組中的位置,數(shù)組必須是一維的?SELECT array_position(ARRAY['sun','mon','tue','wed','thu','fri','sat'], 'mon');?2

array_positions(anyarray,anyelement)int[]?返回元素在數(shù)組中的所有位置?SELECT array_positions(ARRAY['A','A','B','A'], 'A');?{1,2,4}

array_prepend(anyelement,anyarray)anyarray?在數(shù)組開(kāi)頭添加新的元素?SELECT array_prepend(1, ARRAY[2,3]);?{1,2,3}

array_remove(anyarray,anyelement)anyarray?從數(shù)組中刪除所有的指定元素,必須是一維數(shù)組?SELECT array_remove(ARRAY[1,2,3,2], 2);?{1,3}

array_replace(anyarray,anyelement,anyelement)anyarray?替換指定數(shù)組元素為新的元素?SELECT array_replace(ARRAY[1,2,5,4], 5, 3);?{1,2,3,4}

array_to_string(anyarray,text[,text])text?將數(shù)組元素使用分隔符連接為文本,NULL可以使用指定元素替換?SELECT array_to_string(ARRAY[1, 2, 3, NULL, 5], ',', '*');?1,2,3,*,5

array_upper(anyarray,int)int?數(shù)組指定維度的上屆?SELECT array_upper(ARRAY[1,8,3,7], 1);?4

cardinality(anyarray)int?返回?cái)?shù)組所有維度的長(zhǎng)度總和,如果是空數(shù)組則返回0?SELECT cardinality(ARRAY[[1,2],[3,4]]);?4

string_to_array(text,text[,text])text[]?將文本使用分隔符分隔后轉(zhuǎn)換為數(shù)組,如果指定第三個(gè)參數(shù),則第三個(gè)參數(shù)在數(shù)組中被轉(zhuǎn)換為NULL?SELECT string_to_array('xx~^~yy~^~zz', '~^~', 'yy');?{xx,NULL,zz}

unnest(anyarray)setof anyelement?將數(shù)組元素轉(zhuǎn)換為行?SELECT unnest(ARRAY[1,2]);?

1

2

unnest(anyarray,anyarray[, ...])setof anyelement, anyelement [, ...]?將多維數(shù)組轉(zhuǎn)換為行集合,其中第一個(gè)數(shù)組顯示為第一列,第二個(gè)數(shù)組顯示為第二列,以此類(lèi)推。但是這個(gè)函數(shù)只在from子句中使用?SELECT * from unnest(ARRAY[1,2],ARRAY['foo','bar','baz']);?

unnest | unnest

--------+----

1 | foo

2 | bar

| baz

PostgreSQL全文檢索簡(jiǎn)介

PostgreSQL自帶有一個(gè)簡(jiǎn)易的全文檢索引擎,可以實(shí)現(xiàn)小規(guī)模數(shù)據(jù)量的全文檢索功能。本文我們將引導(dǎo)介紹一下這個(gè)功能,對(duì)于小數(shù)據(jù)量的搜索這個(gè)功能是足夠使用的,而無(wú)需搭建額外的ES等重量級(jí)的全文檢索服務(wù)器。

PG的全文檢索操作符是 @@ ,當(dāng)一個(gè) tsvector (文檔)和 tsquery (條件)匹配時(shí)返回 true ,并且前后順序無(wú)影響:

和普通的SQL查詢(xún)一樣,只要在 WHERE 條件中使用這個(gè)符號(hào)就代表使用全文檢索條件篩選文檔了。如:

@@ 操作符支持隱式轉(zhuǎn)換,對(duì)于 text 類(lèi)型可以無(wú)需強(qiáng)類(lèi)型轉(zhuǎn)換( ::tsvector 或 to_tsvector(config_name, text) ),所以這個(gè)操作符實(shí)際支持的參數(shù)類(lèi)型是這樣的:

tsquery 查詢(xún)條件并不是簡(jiǎn)單的正則,而是一組搜索術(shù)語(yǔ),使用并且使用布爾操作符 (AND)、 | (OR)和 ! (NOT)來(lái)組合它們,還有短語(yǔ)搜索操作符 - (FOLLOWED BY)。更詳細(xì)的語(yǔ)法參見(jiàn) 此文檔 。

此外,PostgreSQL還提供了兩個(gè)相對(duì)簡(jiǎn)化的版本 plainto_tsquery 和 phraseto_tsquery 。

plainto_tsquery ( plainto_tsquery([ config regconfig, ] querytext text) returns tsquery )用戶(hù)將未格式化的 text 經(jīng)過(guò)分詞之后,插入 符號(hào)轉(zhuǎn)為 tsquery :

phraseto_tsquery ( phraseto_tsquery([ config regconfig, ] querytext text) returns tsquery )行為和 plainto_tsquery 行為類(lèi)似,但是分詞之后不是插入 而是 - (FOLLOWED BY):

使用索引可以加快全文檢索的速度。對(duì)于全文檢索來(lái)說(shuō),可選的索引類(lèi)型是 GIN (通用倒排索引)和 GIST (通用搜索樹(shù)),官方文檔更推薦使用 GIN索引 。創(chuàng)建一個(gè) GIN 索引的范例:

也可以是一個(gè)連接列:

還可以單獨(dú)創(chuàng)建一個(gè) tsvector 列,為這個(gè)列創(chuàng)建索引:

除了普通的 ORDER BY 條件之外,PostgreSQL為全文檢索提供了兩個(gè)可選的排序函數(shù) ts_rank([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 和 ts_rank_cd([ weights float4[], ] vector tsvector, query tsquery [, normalization integer ]) returns float4 ,以便實(shí)現(xiàn)基于 權(quán)重 的排序。

此外,對(duì)于PostgreSQL 9.6以上的版本還可以使用 RUM index 排序。(注意,這個(gè)是擴(kuò)展,默認(rèn)不包含)。

PostgreSQL默認(rèn)的分詞字典中并不包含中文分詞字典,因此我們必須手工引入。目前一個(gè)比較好的項(xiàng)目是 zhparser ,同時(shí)這個(gè)插件也是阿里云的RDS默認(rèn)包含的。安裝和啟用沒(méi)什么好說(shuō)的。值得一提的是分詞配置參數(shù)。

在 CREATE EXTENSION 之后,必須配置分詞參數(shù)才能正確進(jìn)行分詞和查找,否則什么都查不到。官方文檔提供的一個(gè)配置策略是:

n,v,a,i,e,l 這幾個(gè)字母分別表示一種token策略,只啟用了這幾種token mapping,其余則被屏蔽。具體支持的參數(shù)和含義可以用 \dFp+ zhparser 顯示:

WITH simple 表示詞典使用的是內(nèi)置的simple詞典,即僅做小寫(xiě)轉(zhuǎn)換。根據(jù)需要可以靈活定義詞典和token映射,以實(shí)現(xiàn)屏蔽詞和同義詞歸并等功能。

比如我們看下面這個(gè)例子:

可以看到 江淮 這個(gè)詞組在查詢(xún)的時(shí)候被忽略了,我們啟用 j (abbreviation,簡(jiǎn)稱(chēng))再看看結(jié)果:

所以實(shí)際使用中要設(shè)置合理的token types,過(guò)少將導(dǎo)致搜索結(jié)果不準(zhǔn)確,過(guò)多將導(dǎo)致性能下降。此外,還有一些諸如 短詞復(fù)合: zhparser.multi_short = f 這一類(lèi)的控制分詞結(jié)果的選項(xiàng),根據(jù)實(shí)際使用酌情開(kāi)啟。

postgresql如何備份數(shù)據(jù)庫(kù)

postgresql中可以使用pg_dump來(lái)備份數(shù)據(jù)庫(kù)。pg_dump是用于備份PostgreSQL數(shù)據(jù)庫(kù)的工具。它可以在數(shù)據(jù)庫(kù)正在使用的時(shí)候進(jìn)行完整一致的備份,并不阻塞其它用戶(hù)對(duì)數(shù)據(jù)庫(kù)的訪(fǎng)問(wèn)。

用法:

pg_dump [選項(xiàng)]... [數(shù)據(jù)庫(kù)名字]

一般選項(xiàng):

-f, --file=FILENAME output file or directory name

-F, --format=c|d|t|p output file format (custom, directory, tar, plain text)

-v, --verbose 詳細(xì)模式

-Z, --compress=0-9 被壓縮格式的壓縮級(jí)別

--lock-wait-timeout=TIMEOUT 在等待表鎖超時(shí)后操作失敗

--help 顯示此幫助信息, 然后退出

--versoin 輸出版本信息, 然后退出

示例:

備份數(shù)據(jù)庫(kù),指令如下:

pg_dump -h 164.82.233.54 -U postgres databasename C:databasename.bak

開(kāi)始-運(yùn)行-cmd 彈出dos控制臺(tái);然后 在控制臺(tái)里,進(jìn)入PostgreSQL安裝目錄bin下:

cd C:Program FilesPostgreSQL9.0bin

最后執(zhí)行備份指令:

pg_dump -h 164.82.233.54 -U postgres databasename C:databasename.bak

指令解釋?zhuān)?/p>

pg_dump 是備份數(shù)據(jù)庫(kù)指令,164.82.233.54是數(shù)據(jù)庫(kù)的ip地址(必須保證數(shù)據(jù)庫(kù)允許外部訪(fǎng)問(wèn)的權(quán)限哦~),當(dāng)然本地的數(shù)據(jù)庫(kù)ip寫(xiě) localhost;

postgres 是數(shù)據(jù)庫(kù)的用戶(hù)名;databasename 是數(shù)據(jù)庫(kù)名。

意思是導(dǎo)出到C:databasename.bak文件里,如果沒(méi)有寫(xiě)路徑,單單寫(xiě)databasename.bak文件名,那么備份文件會(huì)保存在C: Program FilesPostgreSQL9.0bin 文件夾里。

推薦學(xué)習(xí)《Python教程》。

分享名稱(chēng):postgresql的.的簡(jiǎn)單介紹
本文鏈接:http://m.rwnh.cn/article20/dscogco.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站排名網(wǎng)站設(shè)計(jì)、外貿(mào)建站云服務(wù)器、建站公司、移動(dòng)網(wǎng)站建設(shè)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶(hù)投稿、用戶(hù)轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話(huà):028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

外貿(mào)網(wǎng)站制作
清新县| 内丘县| 紫金县| 宁都县| 高台县| 河西区| 墨江| 简阳市| 奉新县| 龙州县| 轮台县| 界首市| 阳曲县| 新巴尔虎左旗| 平顺县| 望奎县| 福州市| 定州市| 科技| 台东市| 成都市| 馆陶县| 宜都市| 灵石县| 宕昌县| 永和县| 进贤县| 县级市| 任丘市| 满洲里市| 镇雄县| 长丰县| 商南县| 湘阴县| 鸡西市| 磴口县| 清新县| 葫芦岛市| 富源县| 贞丰县| 水富县|