PostgreSQL 提供了三種實(shí)現(xiàn)模式匹配的方法:傳統(tǒng) SQL 的 LIKE 操作符、SQL99 新增的 SIMILAR TO 操作符、 POSIX 風(fēng)格的正則表達(dá)式。另外還有一個(gè)模式匹配函數(shù) substring可用,它可以使用 SIMILAR TO 風(fēng)格或者 POSIX 風(fēng)格的正則表達(dá)式
創(chuàng)新互聯(lián)長期為上1000家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為長豐企業(yè)提供專業(yè)的成都網(wǎng)站制作、網(wǎng)站設(shè)計(jì),長豐網(wǎng)站改版等技術(shù)服務(wù)。擁有十年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
LIKE
string LIKE pattern [ESCAPE escape-character]
string NOT LIKE pattern [ESCAPE escape-character]
每個(gè) pattern 定義一個(gè)字符串的集合。如果該 string 包含在 pattern 代表的字符串集合里,那么 LIKE 表達(dá)式返回真。和我們想像的一樣,如果 LIKE 返回真,那么 NOT LIKE 表達(dá)式將返回假,反之亦然。一個(gè)等效的表達(dá)式是 NOT (string LIKE pattern) 。
如果 pattern 不包含百分號(hào)或者下劃線,那么該模式只代表它本身;這時(shí)候 LIKE 的行為就像等號(hào)操作符。在 pattern 里的下劃線(_)匹配任何單個(gè)字符;而一個(gè)百分號(hào)(%)匹配零或多個(gè)任何字符。
一些例子:
'abc' LIKE 'abc' true
'abc' LIKE 'a%' true
'abc' LIKE '_b_' true
'abc' LIKE 'c' false
LIKE 模式匹配總是覆蓋整個(gè)字符串。要匹配在字符串內(nèi)部任何位置的序列,該模式必須以百分號(hào)開頭和結(jié)尾。
要匹配下劃線或者百分號(hào)本身,在 pattern 里相應(yīng)的字符必須前導(dǎo)逃逸字符。缺省的逃逸字符是反斜杠,但是你可以用 ESCAPE 子句指定一個(gè)。要匹配逃逸字符本身,寫兩個(gè)逃逸字符。
請(qǐng)注意反斜杠在字符串文本里已經(jīng)有特殊含義了,所以如果你寫一個(gè)包含反斜杠的模式常量,那你就要在 SQL 語句里寫兩個(gè)反斜杠。因此,寫一個(gè)匹配單個(gè)反斜杠的模式實(shí)際上要在語句里寫四個(gè)反斜杠。你可以通過用 ESCAPE 選擇一個(gè)不同的逃逸字符來避免這樣;這樣反斜杠就不再是 LIKE 的特殊字符了。但仍然是字符文本分析器的特殊字符,所以你還是需要兩個(gè)反斜杠。
我們也可以通過寫成 ESCAPE '' 的方式關(guān)閉逃逸機(jī)制,這時(shí),我們就不能關(guān)閉下劃線和百分號(hào)的特殊含義。
關(guān)鍵字 ILIKE 可以用于替換 LIKE ,令該匹配就當(dāng)前的區(qū)域設(shè)置是大小寫無關(guān)的。這個(gè)特性不是 SQL 標(biāo)準(zhǔn),是 PostgreSQL 擴(kuò)展。
操作符 ~~ 等效于 LIKE ,而 ~~* 等效于 ILIKE 。還有 !~~ 和 !~~* 操作符分別代表 NOT LIKE 和 NOT ILIKE 。所有這些操作符都是 PostgreSQL 特有的.
例子: 查找數(shù)據(jù)庫中表的名字(查找以tbl_開頭的表的名字)
select tablename from pg_tables where tablename like 'tbl!_%'ESCAPE '!';
利用escape轉(zhuǎn)義: 上面的sql語句中就是將!作為轉(zhuǎn)義字符,作用是將"_"轉(zhuǎn)換成普通的"_"
1)增加磁盤,創(chuàng)建分區(qū),掛載目錄
2)目錄授權(quán)
Chown postgres /data2'
Chmod 777 /data2'
3)創(chuàng)建表空間指向該目錄
create tablespace ts_demo location '/data2';
4)設(shè)置默認(rèn)表空間參數(shù)值
SET default_tablespace = ts_demo;
select * from pg_settings where name ='default_tablespace';
5)后續(xù)創(chuàng)建表會(huì)默認(rèn)存儲(chǔ)在該表空間對(duì)應(yīng)的目錄
創(chuàng)建表查看表存儲(chǔ)路徑是否改過來了
select pg_relation_filepath('out_tiqu0')
Postgres數(shù)據(jù)庫有默認(rèn)的2個(gè)表空間
select * from pg_tablespace
Name | Owner | Location
-----------+----------+-----------------------------------
pg_default | postgres |
pg_global | postgres |
創(chuàng)建表如果不指定表空間 那么就會(huì)默認(rèn)使用pg_default,對(duì)應(yīng)的路徑為pg安裝路徑中data文件夾下面,
6)對(duì)已存在的表更改表空間
alter table out_831108_1 set tablespace ts_demo;
更改之后再查看是否改過來了
postgreSQL的JDBC驅(qū)動(dòng)是支持?jǐn)?shù)組返回的,數(shù)組對(duì)應(yīng)的類型為org.postgresql.jdbc4.Jdbc4Array(我用的是jdbc4).
一個(gè)示例, 函數(shù)如下:
create or replace function fn_rtbAry()
returns integer[]
as $fn_rtbAry$
begin
return '{10, 20, 30}'::integer[];
end;
$fn_rtbAry$ language plpgsql;
Java中獲得返回的數(shù)組, 要引入java.lang.*,java.sql.*,java.util.*,org.postgresql.jdbc4.*:
Connection conn = null;
Statement cmd = null;
ResultSet rs = null;
Jdbc4Array obj = null;
Integer[] dataAry = null;
// 連接,查詢創(chuàng)建以及初始化代碼省略
rs = cmd.executeQuery("select fn_rtbAry() as v");
// 循環(huán)獲得數(shù)據(jù)
while (rs.next()) {
obj = (Jdbc4Array)rs.getObject(1);
dataAry = (Integer[])obj.getArray(); // 這里獲得函數(shù)返回的數(shù)組,并轉(zhuǎn)換成Integer數(shù)組
// 其他代碼省略
}
// 釋放對(duì)象代碼省略
使用 serial 來處理。
CREATE TABLE test_create_tab2 (
id SERIAL,
val VARCHAR(10)
);
Test=# CREATE TABLE test_create_tab2 (
Test(# id SERIAL,
Test(# val VARCHAR(10)
Test(# );
注意: CREATE TABLE 將為 serial 字段 "test_create_tab2.id" 創(chuàng)建隱含序列 "test_create_tab2_id_seq"
CREATE TABLE
Test=# \d test_create_tab2;
資料表 "public.test_create_tab2"
欄位 | 型別 | 修飾詞
------+-----------------------+-------------------------------------------------
-------
id | integer | 非空 缺省 nextval('test_create_tab2_id_seq'::regclass)
val | character varying(10) |
Test=# INSERT INTO test_create_tab2(val) VALUES ('NO id');
INSERT 0 1
Test=# INSERT INTO test_create_tab2(val) VALUES ('NO id 2');
INSERT 0 1
Test=# select * from test_create_tab2;
id | val
----+---------
1 | NO id
2 | NO id 2
(2 行記錄)
Test=# select lastval();
lastval
---------
2
(1 行記錄)
PostgreSQL 和 MySQL 是將數(shù)據(jù)組織成表的關(guān)系數(shù)據(jù)庫。這些表可以根據(jù)每個(gè)表共有的數(shù)據(jù)鏈接或關(guān)聯(lián)。關(guān)系數(shù)據(jù)庫使您的企業(yè)能夠更好地了解可用數(shù)據(jù)之間的關(guān)系,并幫助獲得新的見解以做出更好的決策或發(fā)現(xiàn)新的機(jī)會(huì)。
PostgreSQL 和 MySQL 都依賴于 SQL(結(jié)構(gòu)化查詢語言),這是與管理系統(tǒng)交互的標(biāo)準(zhǔn)語言。SQL 允許使用具有簡單結(jié)構(gòu)的幾行源代碼連接表,大多數(shù)非技術(shù)員工可以快速學(xué)習(xí)。
使用 SQL,分析師不需要知道訂單表在磁盤上的位置、如何執(zhí)行查找以查找特定訂單或如何連接訂單表和客戶表。數(shù)據(jù)庫編譯查詢并計(jì)算出正確的數(shù)據(jù)點(diǎn)。
MySQL 和 PostgreSQL 都支持 JavaScript Object Notation (JSON) 存儲(chǔ)和傳輸數(shù)據(jù),盡管 PostgreSQL 也支持 JSONB,這是 JSON 的二進(jìn)制版本,它消除了鍵的重復(fù)和無關(guān)的空格。
除了傳統(tǒng)的支持機(jī)制外,這兩個(gè)數(shù)據(jù)庫都提供強(qiáng)大的社區(qū)支持。
PostgreSQL,也稱為 Postgres,是一種開源關(guān)系數(shù)據(jù)庫,因其可靠性、靈活性和對(duì)開放技術(shù)標(biāo)準(zhǔn)的支持而享有盛譽(yù)。PostgreSQL 支持非關(guān)系和關(guān)系數(shù)據(jù)類型。它被稱為當(dāng)今可用的最兼容、最穩(wěn)定和最成熟的關(guān)系數(shù)據(jù)庫之一,并且可以輕松處理復(fù)雜的查詢。
PostgreSQL 的特性包括:
PostgreSQL 這是一個(gè)“一刀切”的解決方案,適用于許多尋求經(jīng)濟(jì)高效的方法來改進(jìn)其數(shù)據(jù)庫管理系統(tǒng) (DBMS) 的企業(yè)。它具有足夠的可擴(kuò)展性和多功能性,可以通過強(qiáng)大的擴(kuò)展生態(tài)系統(tǒng)快速支持各種專業(yè)用例,涵蓋時(shí)間序列數(shù)據(jù)類型和地理空間分析等工作。作為開源數(shù)據(jù)庫解決方案構(gòu)建的 PostgreSQL 完全不受許可限制、供應(yīng)商鎖定的可能性或過度部署的風(fēng)險(xiǎn)。PostgreSQL 通過對(duì)象關(guān)系數(shù)據(jù)庫管理系統(tǒng) (ORDBMS) 進(jìn)行管理。
PostgreSQL 負(fù)責(zé)管理業(yè)務(wù)活動(dòng)的在線事務(wù)處理 (OLTP)協(xié)議的企業(yè)數(shù)據(jù)庫管理員提供了理想的解決方案,包括電子商務(wù)、客戶關(guān)系管理系統(tǒng) (CRM) 和財(cái)務(wù)分類帳。它也是管理接收、創(chuàng)建和生成的數(shù)據(jù)分析的理想選擇。
這些是 PostgreSQL 的一些主要優(yōu)點(diǎn):
MySQL — 一種快速、可靠、可擴(kuò)展且易于使用的開源關(guān)系數(shù)據(jù)庫系統(tǒng) — 旨在處理關(guān)鍵任務(wù)、高負(fù)載的生產(chǎn)應(yīng)用程序。它是一種常見且易于啟動(dòng)的數(shù)據(jù)庫,內(nèi)存、磁盤和 CPU 利用率較低,有關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDMS) 管理。MySQL Community Edition 是一個(gè)由活躍的在線社區(qū)支持的免費(fèi)下載版本。
MySQL 功能包括所有 SQL 標(biāo)準(zhǔn)命令以及事務(wù)和 ACID 合規(guī)性(代表原子性、一致性、隔離性和持久性)。
兩個(gè)最常見的關(guān)系數(shù)據(jù)庫是什么 MySQL 和 Oracle。MySQL 不是 SQL Server 的同義詞,SQL Server 是 Microsoft 許可產(chǎn)品,與 MAC OS X 缺乏兼容性。
MariaDB 經(jīng)常與 MySQL 混淆,它是 MySQL 的一個(gè)開源分支,速度更快,提供更多存儲(chǔ)引擎 (12),但功能有限。MySQL 和 MariaDB 使用的存儲(chǔ)引擎都是 InnoDB。InnoDB 提供標(biāo)準(zhǔn)的 ACID 兼容特性。與 MySQL 不同,MariaDB 不支持?jǐn)?shù)據(jù)屏蔽或動(dòng)態(tài)列表。
MySQL 通常用作 Web 數(shù)據(jù)庫來存儲(chǔ)各種信息類型,從單個(gè)信息數(shù)據(jù)點(diǎn)到為組織提供的產(chǎn)品或服務(wù)的完整列表。它是LAMP(Linux 操作系統(tǒng)、Apache HTTP 服務(wù)器、MySQL RDBMS 和 PHP 編程語言)的基礎(chǔ)組件,這是一種有助于創(chuàng)建API、Web 應(yīng)用程序和網(wǎng)站的軟件堆棧模型。
MySQL Workbench 是一個(gè)單一的、集成的可視化 SQL 平臺(tái),用于 MySQL 數(shù)據(jù)庫的創(chuàng)建、開發(fā)、設(shè)計(jì)和管理。
MySQL 為市場提供了許多好處,包括:
PostgreSQL 和 MySQL 之間有很多不同之處。特性、功能和優(yōu)勢(shì)方面的一些差異如下:
總之,PostgreSQL 和 MySQL 都有不同的用途,它們之間的選擇取決于企業(yè)目標(biāo)和資源。一般來說,PostgreSQL 是一個(gè)更強(qiáng)大、更高級(jí)的數(shù)據(jù)庫管理系統(tǒng),非常適合需要在大型環(huán)境中快速執(zhí)行復(fù)雜查詢的組織。但是,對(duì)于預(yù)算和空間更受限制的公司來說,MySQL 是一個(gè)理想的解決方案。
1、使用CREATEDATABASE該命令將創(chuàng)建一個(gè)數(shù)據(jù)庫PostgreSQL的shell提示符,但你應(yīng)該有適當(dāng)?shù)臋?quán)限來創(chuàng)建數(shù)據(jù)庫。默認(rèn)情況下,創(chuàng)建新的數(shù)據(jù)庫將通過克隆標(biāo)準(zhǔn)系統(tǒng)數(shù)據(jù)庫template1。語法:CREATEDATABASE語句的基本語法如下:CREATEDATABASEdbname;其中dbname是要?jiǎng)?chuàng)建的數(shù)據(jù)庫的名稱。例子:下面是一個(gè)簡單的例子,這將創(chuàng)建testdb在PostgreSQL模式:postgres=#CREATEDATABASEtestdb;postgres-#2、使用createdb的命令PostgreSQL命令行可執(zhí)行createdb是是SQL命令CREATEDATABASE一個(gè)包裝器。此命令和SQL命令CREATEDATABASE之間唯一的區(qū)別是,前者可以直接在命令行中運(yùn)行,它允許的注釋被添加到數(shù)據(jù)庫中,全部在一個(gè)命令。語法:createdb語法如下所示:createdb[option][dbname[description]]參數(shù)下表列出了參數(shù)及它們的描述。參數(shù)名稱描述dbnameThenameofadatabasetocreate.descriptionSpecifiesacommenttobeassociatedwiththenewlycreateddatabase.optionscommand-lineargumentswhichcreatedbaccepts.選項(xiàng)下表列出了命令行參數(shù)CREATEDB接收:選項(xiàng)描述-DtablespaceSpecifiesthedefaulttablespaceforthedatabase.-eEchothecommandsthatcreatedbgeneratesandsendstotheserver.-EencodingSpecifiesthecharacterencodingschemetobeusedinthisdatabase.-llocaleSpecifiesthelocaletobeusedinthisdatabase.-TtemplateSpecifiesthetemplatedatabasefromwhichtobuildthisdatabase.--helpShowhelpaboutdropdbcommandlinearguments,andexit.-hhostSpecifiesthehostnameofthemachineonwhichtheserverisrunning.-pportSpecifiestheTCPportorthelocalUnixdomainsocketfileextensiononwhichtheserverislisteningforconnections.-UusernameUsernametoconnectas.-wNeverissueapasswordprompt.-WForcecreatedbtopromptforapasswordbeforeconnectingtoadatabase.打開命令提示符,然后去是PostgreSQL安裝所在的目錄。進(jìn)入到bin目錄,執(zhí)行下面的命令創(chuàng)建一個(gè)數(shù)據(jù)庫。createdb-hlocalhost-p5432-Upostgresstestdbpassword******上面的命令會(huì)提示Postgres的默認(rèn)的PostgreSQL管理用戶的密碼,以便提供密碼和繼續(xù)創(chuàng)建新的數(shù)據(jù)庫。一旦創(chuàng)建數(shù)據(jù)庫時(shí)可以使用上述方法,可以檢查它在列表中的數(shù)據(jù)庫使用l即反斜線el命令如下:postgres-#lListofdatabasesName|Owner|Encoding|Collate|Ctype|Accessprivileges-----------+----------+----------+---------+-------+-----------------------postgres|postgres|UTF8|C|C|template0|postgres|UTF8|C|C|=c/postgres+|||||postgres=CTc/postgrestemplate1|postgres|UTF8|C|C|=c/postgres+|||||postgres=CTc/postgrestestdb|postgres|UTF8|C|C|(4rows)postgres-#
分享名稱:postgresql處理的簡單介紹
網(wǎng)站網(wǎng)址:http://www.rwnh.cn/article22/dsdjocc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動(dòng)網(wǎng)站建設(shè)、企業(yè)網(wǎng)站制作、網(wǎng)站設(shè)計(jì)、網(wǎng)站收錄、網(wǎng)站排名、品牌網(wǎng)站設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)