国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

關(guān)于PostgreSql數(shù)據(jù)庫和mysql的不同點及注意事項

這篇具有很好參考價值的文章主要介紹了關(guān)于PostgreSql數(shù)據(jù)庫和mysql的不同點及注意事項。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

一、數(shù)據(jù)類型:

1. update time (更新時間)

更新時間戳需要通過觸發(fā)器來實現(xiàn)。

  1. 定義觸發(fā)器
 CREATE OR REPLACE FUNCTION "public"."cs_timestamp"()
  RETURNS "pg_catalog"."trigger" AS $BODY$
begin
    new.updated_time= current_timestamp;
    return new;
end
$BODY$
  LANGUAGE plpgsql VOLATILE
  COST 100
  1. 創(chuàng)建觸發(fā)器
create trigger cs_time before update on table1 for each row execute procedure cs_timestamp();

2. IN

dapper 判斷了connection 是否是npgsql ,如果是,表示支持 數(shù)組類型,不展開數(shù)組。也就是 in @ids ,在npgsql下不做轉(zhuǎn)化為 in (@p1,@p2…),故 在pgsql 下要用 any(@ids)
例如:

select * from tbl where id = any(@ids);

3. upsert

upsert是一個組合詞,即當(dāng)往表中插入記錄,如果該記錄已存在則更新,否則插入新記錄。為了使用該特性需要使用

INSERT ON CONFLICT:
INSERT INTO table_name(column_list)
VALUES(value_list)
ON CONFLICT target action;

target 可以是:
(column_name):一個字段名
ON CONSTRAINT constraint_name:其中的 constraint_name 可以是一個唯一約束的名字
WHERE predicate: WHERE 子句
action為下面兩者之一:

  1. DO NOTHING 表示如果數(shù)據(jù)相同則不做任何操作。例如
INSERT INTO customers (name, email)
VALUES('Microsoft','hotline@microsoft.com')
ON CONFLICT (name)
DO NOTHING;
  1. DO UPDATE 則表示如果存在以 name為唯一索引的重復(fù)數(shù)據(jù),則做更新操作。
    例如:
INSERT INTO customers (name, email)
VALUES('Microsoft','hotline@microsoft.com')
ON CONFLICT (name)
DO
UPDATE SET email = EXCLUDED.email || ';' || customers.email;

其中EXCLUDED為虛擬表,EXCLUDED中包含我們藥更新的記錄,也就是新記錄,而customers為原紀(jì)錄。

4. Boolean

boolean 有"true"或"false"兩個狀態(tài),第三種"unknown"(未知)狀態(tài),用 NULL 表示;
PostgreSQL支持TRUE和FALSE的以下有效文字值。除了 True 和 False 之外的所有常量值都必須用單引號引起來

True False
true false
‘t’ 'F ’
‘true’ ‘false’
‘yes’ ‘no’
‘1’ ‘0’

例如:

INSERT INTO table (id,status )
VALUES
	(101, TRUE),
	(201, FALSE),
	(301, 't'),
	(401, '1'),
	(501, 'y'),
	(601, 'yes'),
	(701, 'no'),
	(801, '0');

5. datetime

PostgreSql中沒有datetime類型,主要有:TIME、DATE、TIMESTAMP、INTERVAL。日期時間類型輸入像字符串類型輸入一樣,需要加單引號。每種日期時間類型都有合法的取值范圍,超出范圍時系統(tǒng)會將“零”插入數(shù)據(jù)記錄中。
TIMESTAMP數(shù)據(jù)類型分為 兩種時間數(shù)據(jù)類型,如下:
Timestamp: : 使用時間戳數(shù)據(jù)類型 ,不帶時區(qū)。
Timestamptz: : timestamptz數(shù)據(jù)類型用于帶有時區(qū)的 。

6. decimal

  1. 精確型:decimal、numeric
  2. 不精確型:real、double precision(float等價于double precision)

二、Postgresql函數(shù)與mysql異同點:

1. if函數(shù)

不支持if函數(shù),可改為case when語句;

2. Ifnull

改為COALESCE()
例如:COALESCE(a.result, '')

3. 時間函數(shù)

  1. 沒有datediff,使用 date_part
    date_part(‘epoch’, TIMESTAMP ‘2019-05-05 12:11:20’ - TIMESTAMP ‘2019-05-05 10:10:10’)
  2. date_add替換 now() + interval ‘2 year’;

4. dml schema不一樣

5. group by 聚合函數(shù)和mysql不同

postgresql輸出中的所有字段(包含聚合函數(shù)的計算字段除外)必須存在于GROUP BY子句中。

6. update join 語法不一致

UPDATE t1
SET t1.c1 = new_value
FROM t2
WHERE t1.c2 = t2.c2;

7. delete join語法不一致

PostgreSQL不支持 Delete join語句,但支持delete中using 子句提供類似功能,

DELETE FROM t1
USING t2
WHERE t1.id = t2.id

使用using指定刪除t1 中在 t2中的數(shù)據(jù)

8. 模糊匹配

like 改為 ilike

 ilike '%'|| #{testItem} ||'%'  或  like concat('%', #{testItem}, '%')

9. 支持retuning子句

insert returning 返回的是新插入的值。
delete returning 返回的是被刪除的值。
update returning 返回的是更新后的值,不能返回更新前的值。
例如:文章來源地址http://www.zghlxwxcb.cn/news/detail-428395.html

UPDATE customers SET email = '123' where name='Microsoft' RETURNING email

三、數(shù)據(jù)庫編碼

  1. sql 中表名和字段名不要用雙引號!
  2. 所有schema(數(shù)據(jù)庫名,模式名,表名,字段名,字段類型等)定義必須小寫
  3. 字段前面不能用波浪線 ‘~ ’
  4. postgresql模式,一版用public,缺省用public。

到了這里,關(guān)于關(guān)于PostgreSql數(shù)據(jù)庫和mysql的不同點及注意事項的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • Navicat 連接遠(yuǎn)程數(shù)據(jù)庫 Postgresql、MySQL

    Navicat 連接遠(yuǎn)程數(shù)據(jù)庫 Postgresql、MySQL

    不管什么數(shù)據(jù)庫,只要用Navicat連接遠(yuǎn)程,下面的方法均奏效。 環(huán)境: 服務(wù)器:遠(yuǎn)程服務(wù)器 操作系統(tǒng):?: linux 數(shù)據(jù)庫:PostgreSQL14 數(shù)據(jù)庫客戶端:Navicat 主要分為兩步: 第一步:點擊Navicat左上角的“連接”,選擇Postgresql。先連接SSH服務(wù)器。 ?勾選“使用SSH通道”,在下面輸

    2024年02月05日
    瀏覽(24)
  • 談一談SQLite、MySQL、PostgreSQL三大數(shù)據(jù)庫

    談一談SQLite、MySQL、PostgreSQL三大數(shù)據(jù)庫

    每一份付出,必將有一份收貨,就像這個小小的果實,時間到了,也就會開花結(jié)果… SQLite、MySQL 和 PostgreSQL 都是流行的關(guān)系型數(shù)據(jù)庫管理系統(tǒng)(RDBMS),但它們在功能、適用場景和性能方面有一些不同。 SQLite : 輕量級 : SQLite 是一個嵌入式數(shù)據(jù)庫,它不需要一個獨立的數(shù)據(jù)庫

    2024年02月05日
    瀏覽(31)
  • 利用pgloader工具將MySQL數(shù)據(jù)遷移至PostgreSQL數(shù)據(jù)庫

    利用pgloader工具將MySQL數(shù)據(jù)遷移至PostgreSQL數(shù)據(jù)庫

    一、簡介 pgloader是一款開源軟件,可以將各種來源的數(shù)據(jù)加載到PostgreSQL數(shù)據(jù)庫中,支持動態(tài)讀取數(shù)據(jù),使用 COPY 流式傳輸協(xié)議將數(shù)據(jù)加載到 PostgreSQL 數(shù)據(jù)庫中,并使用單獨的線程讀取和寫入數(shù)據(jù),由于能夠直接從源數(shù)據(jù)庫加載數(shù)據(jù)。今天我們就借助pgloader這款工具實現(xiàn)將MySQL數(shù)

    2024年02月13日
    瀏覽(29)
  • [運維|數(shù)據(jù)庫] PostgreSQL數(shù)據(jù)庫對MySQL的 READS SQL DATA 修飾符處理

    在 PostgreSQL 中,訪問權(quán)限通常是通過數(shù)據(jù)庫角色和表級別的權(quán)限進(jìn)行管理,而不需要類似 MySQL 中的 READS SQL DATA 修飾符。 要在 PostgreSQL 中管理數(shù)據(jù)庫對象的訪問權(quán)限,您可以使用以下 SQL 命令: GRANT :授予用戶或角色對表、視圖等對象的特定權(quán)限。 REVOKE :撤銷用戶或角色對

    2024年02月07日
    瀏覽(21)
  • Mysql不同數(shù)據(jù)庫之間表結(jié)構(gòu)同步

    Mysql不同數(shù)據(jù)庫之間表結(jié)構(gòu)同步

    開發(fā)環(huán)境的Mysql表結(jié)構(gòu)做了修改,要同步到其他環(huán)境數(shù)據(jù)庫中使用數(shù)據(jù)庫管理工具JookDB的表結(jié)構(gòu)同步功能就很方便。雖然Navicat也有這個功能但是有免費的當(dāng)然是用免費的。 用JookDB添加數(shù)據(jù)庫后在數(shù)據(jù)庫節(jié)點上右鍵選擇“同步結(jié)構(gòu)”即可開始表結(jié)構(gòu)同步。 1.選擇結(jié)構(gòu)同步的源庫

    2024年02月05日
    瀏覽(24)
  • POSTGRESQL 關(guān)于2023-08-14 數(shù)據(jù)庫自動啟動文章中使用KILL 來進(jìn)行配置RELOAD的問題解釋...

    POSTGRESQL 關(guān)于2023-08-14 數(shù)據(jù)庫自動啟動文章中使用KILL 來進(jìn)行配置RELOAD的問題解釋...

    開頭還是介紹一下群,如果感興趣Polardb ,mongodb ,MySQL?,Postgresql ,redis ,SQL SERVER ,ORACLE,Oceanbase 等有問題,有需求都可以加群群內(nèi)有各大數(shù)據(jù)庫行業(yè)大咖,CTO,可以解決你的問題。加群請加 liuaustin3微信號 ,在新加的朋友會分到3群(共1170人左右 1 + 2 + 3) 首先道歉,昨天關(guān)于P

    2024年02月12日
    瀏覽(36)
  • Debezium系列之:基于debezium將mysql數(shù)據(jù)庫數(shù)據(jù)更改流式傳輸?shù)?Elasticsearch和PostgreSQL數(shù)據(jù)庫

    Debezium系列之:基于debezium將mysql數(shù)據(jù)庫數(shù)據(jù)更改流式傳輸?shù)?Elasticsearch和PostgreSQL數(shù)據(jù)庫

    基于 Debezium 的端到端數(shù)據(jù)流用例,將數(shù)據(jù)流式傳輸?shù)?Elasticsearch 服務(wù)器,以利用其出色的功能對我們的數(shù)據(jù)進(jìn)行全文搜索。 同時把數(shù)據(jù)流式傳輸?shù)?PostgreSQL 數(shù)據(jù)庫,通過 SQL 查詢語言來優(yōu)化對數(shù)據(jù)的訪問。 下面的圖表顯示了數(shù)據(jù)如何流經(jīng)我們的分布式系統(tǒng)。首先,Debezium M

    2024年02月13日
    瀏覽(20)
  • SQLite、MySQL、PostgreSQL3個關(guān)系數(shù)據(jù)庫之間的對比

    SQLite、MySQL、PostgreSQL3個關(guān)系數(shù)據(jù)庫之間的對比

    關(guān)系數(shù)據(jù)模型 以行和列的表格形式組織數(shù)據(jù),在數(shù)據(jù)庫管理工具中占主導(dǎo)地位。今天還有其他數(shù)據(jù)模型,包括NoSQL和NewSQL,但是關(guān)系數(shù)據(jù)庫管理系統(tǒng)(RDBMS)仍然占主導(dǎo)地位用于存儲和管理全球數(shù)據(jù)。 本文比較了三種實現(xiàn)最廣泛的開源RDBMS:SQLite、MySQL和PostgreSQL。具體來說,

    2024年02月11日
    瀏覽(30)
  • 快速實現(xiàn)數(shù)據(jù)庫的轉(zhuǎn)換,如從Mysql切換到Postgresql【含gif】

    快速實現(xiàn)數(shù)據(jù)庫的轉(zhuǎn)換,如從Mysql切換到Postgresql【含gif】

    因為項目的需要,需要將使用的數(shù)據(jù)庫A從Mysql切換到Postgresql并且合并到同一個數(shù)據(jù)庫B中。 使用 Navicat 15的【逆向表到模型】功能,可以快速將Mysql表轉(zhuǎn)為Postgresql表(數(shù)據(jù)+表結(jié)構(gòu)),而且支持多表的轉(zhuǎn)換。 * 注意到一個小細(xì)節(jié): Navicat 15【多表選擇】時不能在左側(cè)[導(dǎo)航欄]直接

    2024年02月11日
    瀏覽(23)
  • [AIGC] MySQL與PostgreSQL:兩種流行的數(shù)據(jù)庫系統(tǒng)的對比

    [AIGC] MySQL與PostgreSQL:兩種流行的數(shù)據(jù)庫系統(tǒng)的對比

    數(shù)據(jù)庫是存儲和查詢數(shù)據(jù)的重要工具。在選擇數(shù)據(jù)庫時,兩個經(jīng)常被考慮的選項都是開源的:MySQL和PostgreSQL。這兩個數(shù)據(jù)庫都與許多應(yīng)用程序一起使用,但它們在某些方面存在顯著的不同。在本文中,我們將比較MySQL和PostgreSQL的一些關(guān)鍵特性。 MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng)

    2024年04月12日
    瀏覽(30)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包