老熟女激烈的高潮_日韩一级黄色录像_亚洲1区2区3区视频_精品少妇一区二区三区在线播放_国产欧美日产久久_午夜福利精品导航凹凸

重慶分公司,新征程啟航

為企業提供網站建設、域名注冊、服務器等服務

postgresql的.的簡單介紹

postgresql----數組類型和函數

postgresql支持數組類型,可以是基本類型,也可以是用戶自定義的類型。日常中使用數組類型的機會不多,但還是可以了解一下。不像C或JAVA高級語言的數組下標從0開始,postgresql數組下標從1開始,既可以指定長度,也可以不指定長度。且postgresql既支持一維數組,也支持多維數組,但是平時二維數組也就夠用了。

創新互聯公司是一家集網站建設,平羅企業網站建設,平羅品牌網站建設,網站定制,平羅網站建設報價,網絡營銷,網絡優化,平羅網站推廣為一體的創新建站企業,幫助傳統企業提升企業形象加強企業競爭力。可充分滿足這一群體相比中小企業更為豐富、高端、多元的互聯網需求。同時我們時刻保持專業、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學習、思考、沉淀、凈化自己,讓我們為更多的企業打造出實用型網站。

示例1.使用ARRAY構建數組類型

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

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

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

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

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

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

(1row)

示例2.創建一張表,字段包含數組類型

其中int[]表示數組長度無限制,int[4]表示數組長度為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)

也可以使用[下標:上標]方式來查詢數組連續的某些元素。

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)

數組操作符與函數

操作符

操作符描述示例結果

=相等?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

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

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

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

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

函數

函數返回類型描述示例結果

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

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

{1,2,3}

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

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

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

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

array_length(anyarray,int)int?返回數組指定維度的長度?SELECT array_length(array[1,2,3], 1);?3

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

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

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

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

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

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

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

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

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

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

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

1

2

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

unnest | unnest

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

1 | foo

2 | bar

| baz

PostgreSQL全文檢索簡介

PostgreSQL自帶有一個簡易的全文檢索引擎,可以實現小規模數據量的全文檢索功能。本文我們將引導介紹一下這個功能,對于小數據量的搜索這個功能是足夠使用的,而無需搭建額外的ES等重量級的全文檢索服務器。

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

和普通的SQL查詢一樣,只要在 WHERE 條件中使用這個符號就代表使用全文檢索條件篩選文檔了。如:

@@ 操作符支持隱式轉換,對于 text 類型可以無需強類型轉換( ::tsvector 或 to_tsvector(config_name, text) ),所以這個操作符實際支持的參數類型是這樣的:

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

此外,PostgreSQL還提供了兩個相對簡化的版本 plainto_tsquery 和 phraseto_tsquery 。

plainto_tsquery ( plainto_tsquery([ config regconfig, ] querytext text) returns tsquery )用戶將未格式化的 text 經過分詞之后,插入 符號轉為 tsquery :

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

使用索引可以加快全文檢索的速度。對于全文檢索來說,可選的索引類型是 GIN (通用倒排索引)和 GIST (通用搜索樹),官方文檔更推薦使用 GIN索引 。創建一個 GIN 索引的范例:

也可以是一個連接列:

還可以單獨創建一個 tsvector 列,為這個列創建索引:

除了普通的 ORDER BY 條件之外,PostgreSQL為全文檢索提供了兩個可選的排序函數 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 ,以便實現基于 權重 的排序。

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

PostgreSQL默認的分詞字典中并不包含中文分詞字典,因此我們必須手工引入。目前一個比較好的項目是 zhparser ,同時這個插件也是阿里云的RDS默認包含的。安裝和啟用沒什么好說的。值得一提的是分詞配置參數。

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

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

WITH simple 表示詞典使用的是內置的simple詞典,即僅做小寫轉換。根據需要可以靈活定義詞典和token映射,以實現屏蔽詞和同義詞歸并等功能。

比如我們看下面這個例子:

可以看到 江淮 這個詞組在查詢的時候被忽略了,我們啟用 j (abbreviation,簡稱)再看看結果:

所以實際使用中要設置合理的token types,過少將導致搜索結果不準確,過多將導致性能下降。此外,還有一些諸如 短詞復合: zhparser.multi_short = f 這一類的控制分詞結果的選項,根據實際使用酌情開啟。

postgresql如何備份數據庫

postgresql中可以使用pg_dump來備份數據庫。pg_dump是用于備份PostgreSQL數據庫的工具。它可以在數據庫正在使用的時候進行完整一致的備份,并不阻塞其它用戶對數據庫的訪問。

用法:

pg_dump [選項]... [數據庫名字]

一般選項:

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

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

-v, --verbose 詳細模式

-Z, --compress=0-9 被壓縮格式的壓縮級別

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

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

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

示例:

備份數據庫,指令如下:

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

開始-運行-cmd 彈出dos控制臺;然后 在控制臺里,進入PostgreSQL安裝目錄bin下:

cd C:Program FilesPostgreSQL9.0bin

最后執行備份指令:

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

指令解釋:

pg_dump 是備份數據庫指令,164.82.233.54是數據庫的ip地址(必須保證數據庫允許外部訪問的權限哦~),當然本地的數據庫ip寫 localhost;

postgres 是數據庫的用戶名;databasename 是數據庫名。

意思是導出到C:databasename.bak文件里,如果沒有寫路徑,單單寫databasename.bak文件名,那么備份文件會保存在C: Program FilesPostgreSQL9.0bin 文件夾里。

推薦學習《Python教程》。


網站標題:postgresql的.的簡單介紹
網頁地址:http://www.xueling.net.cn/article/dscogco.html

其他資訊

在線咨詢
服務熱線
服務熱線:028-86922220
TOP
主站蜘蛛池模板: 国产综合久久99久久 | 日韩国产欧美视频 | 久久99亚洲精品久久 | 天海翼精品一区二区三区 | 91日韩久久 | 亚洲人和日本人hd | 粉色视频在线免费观看 | 99国产精品热久久久久久 | 综合国产精品久久久 | 亚洲一级在线 | 在线观看91网站 | 欧美性bbbbbxxxxx4050免费看 | 精品av中文字幕在线毛片 | 亚洲精品国产最新在线不卡 | 国产视频精品一区二区三区 | 亚洲色大成网站WWW看下面 | 亚洲欧洲精品一区二区三区四区 | 大地影视中文第二页的背景故事 | 久热中文字幕在线精品观 | 日本丰满少妇BBB | 好吊妞国产欧美日韩免费观看 | 日本成年免费网站 | 蜜桃av免费看 | 欧美黑人巨大videos精品 | a色综合 | 欧美日韩一卡 | 午夜精品成人 | 日本一级二级视频 | 黄色一级片免费的 | 免费在线激情视频 | 国产1区2区3区在线观看 | 亚洲一区三区三区 | 国产成人无码aa精品一区 | 日本精品免费看 | 曰韩中文字幕 | 日韩欧美国产区 | 日韩1区2区3区| 一本色道久久88精品综合 | 精品一区国产日韩视频在线 | 天天做天天爱夜夜爽导航 | 男人猛躁女人免费 |