最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關(guān)于PostgreSql數(shù)據(jù)庫(kù)與mysql數(shù)據(jù)庫(kù)的不同點(diǎn)以及注意事項(xiàng)

 更新時(shí)間:2023年05月27日 14:58:15   作者:白衣無(wú)暇  
PostgreSQL和MySQL是兩種流行的關(guān)系型數(shù)據(jù)庫(kù)管理系統(tǒng)(RDBMS),它們都可以用來(lái)存儲(chǔ)和管理數(shù)據(jù),但是它們?cè)谀承┓矫嬗兴煌?下面這篇文章主要給大家介紹了關(guān)于PostgreSql數(shù)據(jù)庫(kù)與mysql數(shù)據(jù)庫(kù)的不同點(diǎn)以及注意事項(xiàng)的相關(guān)資料,需要的朋友可以參考下

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

1. update time (更新時(shí)間)

更新時(shí)間戳需要通過(guò)觸發(fā)器來(lái)實(shí)現(xiàn)。

定義觸發(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

創(chuàng)建觸發(fā)器

create trigger cs_time before update on table1 for each row execute procedure cs_timestamp();

2. IN

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

例如:

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

3. upsert

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

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

target 可以是:

(column_name):一個(gè)字段名

ON CONSTRAINT constraint_name:其中的 constraint_name 可以是一個(gè)唯一約束的名字

WHERE predicate: WHERE 子句

action為下面兩者之一:

1.DO NOTHING 表示如果數(shù)據(jù)相同則不做任何操作。例如

INSERT INTO customers (name, email)
VALUES('Microsoft','hotline@microsoft.com')
ON CONFLICT (name)
DO NOTHING;

2.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"兩個(gè)狀態(tài),第三種"unknown"(未知)狀態(tài),用 NULL 表示;

PostgreSQL支持TRUE和FALSE的以下有效文字值。除了 True 和 False 之外的所有常量值都必須用單引號(hào)引起來(lái)

TrueFalse
truefalse
‘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中沒(méi)有datetime類(lèi)型,主要有:TIME、DATE、TIMESTAMP、INTERVAL。日期時(shí)間類(lèi)型輸入像字符串類(lèi)型輸入一樣,需要加單引號(hào)。每種日期時(shí)間類(lèi)型都有合法的取值范圍,超出范圍時(shí)系統(tǒng)會(huì)將“零”插入數(shù)據(jù)記錄中。

TIMESTAMP數(shù)據(jù)類(lèi)型分為 兩種時(shí)間數(shù)據(jù)類(lèi)型,如下:

Timestamp: : 使用時(shí)間戳數(shù)據(jù)類(lèi)型 ,不帶時(shí)區(qū)。

Timestamptz: : timestamptz數(shù)據(jù)類(lèi)型用于帶有時(shí)區(qū)的 。

6. decimal 精確型:

  • 精確型:decimal、numeric
  • 不精確型:real、double precision(float等價(jià)于double precision)

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

1. if函數(shù)

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

2. Ifnull

改為COALESCE()

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

3. 時(shí)間函數(shù)

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

4. dml schema不一樣

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

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

6. update join 語(yǔ)法不一致

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

7. delete join語(yǔ)法不一致

PostgreSQL不支持 Delete join語(yǔ)句,但支持delete中using 子句提供類(lèi)似功能,

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 返回的是更新后的值,不能返回更新前的值。

例如:

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

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

  • sql 中表名和字段名不要用雙引號(hào)!
  • 所有schema(數(shù)據(jù)庫(kù)名,模式名,表名,字段名,字段類(lèi)型等)定義必須小寫(xiě)
  • 字段前面不能用波浪線(xiàn) ‘~ ’
  • postgresql模式,一版用public,缺省用public。

總結(jié)

到此這篇關(guān)于PostgreSql數(shù)據(jù)庫(kù)與mysql數(shù)據(jù)庫(kù)的不同點(diǎn)以及注意事項(xiàng)的文章就介紹到這了,更多相關(guān)PostgreSql與mysql的不同點(diǎn)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PostgreSQL查看數(shù)據(jù)庫(kù)占用空間大小的幾種常用方法

    PostgreSQL查看數(shù)據(jù)庫(kù)占用空間大小的幾種常用方法

    在PostgreSQL中,查看數(shù)據(jù)庫(kù)及數(shù)據(jù)表當(dāng)前數(shù)據(jù)的占用量可以通過(guò)執(zhí)行特定的SQL查詢(xún)來(lái)實(shí)現(xiàn),本文給大家介紹了幾種常用的方法,并通過(guò)代碼示例講解的非常詳細(xì),需要的朋友可以參考下
    2024-05-05
  • Windows?環(huán)境搭建?PostgreSQL?邏輯復(fù)制高可用架構(gòu)數(shù)據(jù)庫(kù)服務(wù)

    Windows?環(huán)境搭建?PostgreSQL?邏輯復(fù)制高可用架構(gòu)數(shù)據(jù)庫(kù)服務(wù)

    本文主要介紹Windows下搭建PostgreSQL的主從邏輯復(fù)制,關(guān)于PostgreSQl的相關(guān)運(yùn)維文章,網(wǎng)絡(luò)上大多都是?Linux?環(huán)境下的操作,鮮有在?Windows?環(huán)境下配置的教程,所以本文采用?Windows?環(huán)境作為演示系統(tǒng)來(lái)進(jìn)行?PostgreSQL?高可用數(shù)據(jù)庫(kù)服務(wù)的搭建,感興趣的朋友一起看看吧
    2023-05-05
  • navicat連接postgresql、人大金倉(cāng)等數(shù)據(jù)庫(kù)報(bào)錯(cuò)解決辦法

    navicat連接postgresql、人大金倉(cāng)等數(shù)據(jù)庫(kù)報(bào)錯(cuò)解決辦法

    在使用Navicat操作數(shù)據(jù)庫(kù)時(shí),遇到數(shù)據(jù)報(bào)錯(cuò)是一個(gè)常見(jiàn)的問(wèn)題,這類(lèi)問(wèn)題可能涉及多個(gè)方面,下面這篇文章主要給大家介紹了關(guān)于navicat連接postgresql、人大金倉(cāng)等數(shù)據(jù)庫(kù)報(bào)錯(cuò)的解決辦法,需要的朋友可以參考下
    2024-08-08
  • postgresql減少wal日志生成量的操作

    postgresql減少wal日志生成量的操作

    這篇文章主要介紹了postgresql減少wal日志生成量的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • PostgreSQL完成按月累加的操作

    PostgreSQL完成按月累加的操作

    這篇文章主要介紹了PostgreSQL完成按月累加的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-01-01
  • 基于PostgreSQL/openGauss?的分布式數(shù)據(jù)庫(kù)解決方案

    基于PostgreSQL/openGauss?的分布式數(shù)據(jù)庫(kù)解決方案

    ShardingSphere-Proxy?作為透明數(shù)據(jù)庫(kù)代理,用戶(hù)無(wú)需關(guān)心?Proxy?如何協(xié)調(diào)背后的數(shù)據(jù)庫(kù)。今天通過(guò)本文給大家介紹基于PostgreSQL/openGauss?的分布式數(shù)據(jù)庫(kù)解決方案,感興趣的朋友跟隨小編一起看看吧
    2021-12-12
  • GP如何查詢(xún)并刪除重復(fù)數(shù)據(jù)

    GP如何查詢(xún)并刪除重復(fù)數(shù)據(jù)

    這篇文章主要介紹了GP如何查詢(xún)并刪除重復(fù)數(shù)據(jù)問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • 在postgresql中結(jié)束掉正在執(zhí)行的SQL語(yǔ)句操作

    在postgresql中結(jié)束掉正在執(zhí)行的SQL語(yǔ)句操作

    這篇文章主要介紹了在postgresql中結(jié)束掉正在執(zhí)行的SQL語(yǔ)句操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 利用OGG實(shí)現(xiàn)PostgreSQL實(shí)時(shí)同步的過(guò)程詳解

    利用OGG實(shí)現(xiàn)PostgreSQL實(shí)時(shí)同步的過(guò)程詳解

    本文詳細(xì)闡述了利用OGG實(shí)現(xiàn)PostgreSQL實(shí)時(shí)同步的全過(guò)程,文章通過(guò)代碼示例和圖文結(jié)合講解的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作有一定的參考價(jià)值,需要的朋友可以參考下
    2023-11-11
  • PostgreSQL如何查詢(xún)表大小(單獨(dú)查詢(xún)和批量查詢(xún))

    PostgreSQL如何查詢(xún)表大小(單獨(dú)查詢(xún)和批量查詢(xún))

    PostgreSQL提供了多個(gè)系統(tǒng)管理函數(shù)來(lái)查看表,索引表空間及數(shù)據(jù)庫(kù)的大小,這篇文章主要給大家介紹了關(guān)于PostgreSQL如何查詢(xún)表大小的相關(guān)資料,文中介紹的方法包括單獨(dú)查詢(xún)和批量查詢(xún),需要的朋友可以參考下
    2024-02-02

最新評(píng)論

垣曲县| 三明市| 新密市| 庆阳市| 陆河县| 盐山县| 航空| 二连浩特市| 合水县| 桃园县| 扎兰屯市| 宣威市| 赤水市| 新安县| 从化市| 鄄城县| 佳木斯市| 伊金霍洛旗| 富锦市| 客服| 康乐县| 五华县| 鸡西市| 祥云县| 山东省| 鄂尔多斯市| 汉中市| 海安县| 沾益县| 介休市| 临湘市| 涞源县| 安远县| 历史| 遂川县| 中西区| 吉首市| 三河市| 莆田市| 天祝| 建宁县|