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

盤點(diǎn)一下PostgreSQL和MySQL的區(qū)別點(diǎn)

這篇具有很好參考價(jià)值的文章主要介紹了盤點(diǎn)一下PostgreSQL和MySQL的區(qū)別點(diǎn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

上期有說(shuō),數(shù)據(jù)環(huán)境切換,由MySQL換成PostgreSQL。
那么為了大家以后少踩坑,簡(jiǎn)單總結(jié)了下我曾踩過(guò)的坑和需要注意的點(diǎn)。
首先PostgreSQL有一個(gè)模式的概念。
一、格式區(qū)別:

和Oracle一樣,PostgreSQL也是嚴(yán)格區(qū)分大小寫。

二、符號(hào)區(qū)別:

和Oracle一樣PostgreSQL中," " 雙引號(hào)是區(qū)分庫(kù)名,關(guān)鍵字等,而MySQL則是反單引號(hào)(tab鍵上方的鍵),pg查詢時(shí)字符類型的字段必須使用單引號(hào),而MySQL帶有優(yōu)化器(不是必須)。

三、自增區(qū)別:

MySQL中使用auto_increment ,在需要的列指定自增,而pg中需要設(shè)置自增序列。

(1)使用SQL語(yǔ)句
①創(chuàng)建表時(shí)

CREATE table infisa_template_config(id serial );

②表已存在

<--設(shè)置序列從1開始,自增1-->
CREATE SEQUENCE user_id_seq START WITH 1  
INCREMENT BY 1  NO MINVALUE  NO MAXVALUE  CACHE 1;
<--設(shè)置序列-->
ALTER table user ALTER column id SET DEFAULT nextval('user_id_seq');

(2)使用可視化工具
連接navicat15(或者使用DBeaver)
盤點(diǎn)一下PostgreSQL和MySQL的區(qū)別點(diǎn)
點(diǎn)擊序列
盤點(diǎn)一下PostgreSQL和MySQL的區(qū)別點(diǎn)
可以通過(guò)可視化界面新建序列
盤點(diǎn)一下PostgreSQL和MySQL的區(qū)別點(diǎn)
注:同步數(shù)據(jù)的話,推薦通過(guò)sql方式新建序列。

四、函數(shù)區(qū)別:
(1)時(shí)間轉(zhuǎn)化

①時(shí)間轉(zhuǎn)字符串:

MySQL: date_format(a.tag_create_date,‘%Y-%m-%d %H:%i:%s’)

PostgreSQL: to_char(a.tag_create_date,‘yyyy-mm-dd HH:MM:SS’)

②字符串轉(zhuǎn)時(shí)間:

MySQL: date_format(a.tag_create_date,‘%Y-%m-%d %H:%i:%s’)

PostgreSQL: to_date(a.tag_create_date,‘yyyy-mm-dd HH:MM:SS’)

(2) IFNULL()函數(shù)

MySQL: IFNULL(a.idm,‘’)

PostgreSQL: COALESCE(a.id,‘’)

(3) sysdate()函數(shù)

MySQL: SELECT sysdate()

PostgreSQL: SELECT now()

(4) find_in_set()函數(shù)(允許在逗號(hào)分隔的字符串列表中查找指定字符串的位置)

MySQL: SELECT t.dept_id FROM sys_dept t WHERE find_in_set(‘100’, ancestors)

PostgreSQL: SELECT t.dept_id FROM sys_dept t WHERE ‘100’ = ANY (string_to_array(ancestors, ‘,’))

(5)group_concat()函數(shù)

MySQL: select a.name,group_concat(distinct city)from user_city a group by a.name;

PostgreSQL: select a.name,array_to_string(array_agg(distinct a.city),‘,’)from user_city a group by a.name;

(6)LIMIT

MySQL: select id,name from hospital.ods_user_basic limit 10,2;

PostgreSQL: select id,name from hospital.ods_user_basic limit 10 offset 2;

(7)DISTINCT

MYSQL: select DISTINCT b.id from hospital.ods_user_basic as b

PostgreSQL: select DISTINCT ON (b.id) b.* from hospital.ods_user_basic as b

(注:pg中祛重+排序 ,使用distinct on (列1) order by 列1 )

(8)MyBatis-Plus整合MySQL、PostgreSQL,LIKE使用
MySQL:

	<select id="checkReportPage" resultMap="reportResultMap">
       SELECT
       *
       FROM
       infisa_medical_report
       WHERE is_deleted=0 AND status = 1 AND name LIKE concat('%',#{handleTask.name},'%')
    </select>

PostgreSQL:

	<select id="checkReportPage" resultMap="reportResultMap">
       SELECT
       *
       FROM
       infisa_medical_report
       WHERE is_deleted=0 AND status = 1 AND name like concat('%',#{handleTask.name}::varchar,'%')
    </select>

(注:pg必須指定模糊查詢列的數(shù)據(jù)類型,否則會(huì)報(bào)錯(cuò))

五、數(shù)據(jù)類型轉(zhuǎn)化(針對(duì)于PostgreSQL):
MySQL、Oracle等都是默認(rèn)對(duì)數(shù)據(jù)類型進(jìn)行了隱式的轉(zhuǎn)換,在其他數(shù)據(jù)庫(kù)varchar等字符串類型和數(shù)字可以進(jìn)行自動(dòng)的隱式轉(zhuǎn)換,但是PG確沒(méi)有這么處理,官方文檔中也有針對(duì)pg的數(shù)據(jù)轉(zhuǎn)換方式。

解決辦法:
①?gòu)?qiáng)轉(zhuǎn)(在查詢字段上指定數(shù)據(jù)類型)

a.a1 = b.b1::int8 或者 a.a1::varchar = b.b1

②隱式類型轉(zhuǎn)化(創(chuàng)建類型轉(zhuǎn)換)

–注:創(chuàng)建cast需要有pg_cast系統(tǒng)表的權(quán)限
–注:當(dāng)創(chuàng)建類型轉(zhuǎn)換使用自動(dòng)隱式轉(zhuǎn)換的話如果出現(xiàn)多個(gè)匹配的轉(zhuǎn)換此時(shí)pg會(huì)因?yàn)椴恢肋x擇哪一個(gè)去處理類型轉(zhuǎn)換而報(bào)錯(cuò),
–如果出現(xiàn)多個(gè)隱式自動(dòng)轉(zhuǎn)換都匹配此時(shí)還是需要手動(dòng)添加轉(zhuǎn)換以達(dá)到效果,或者刪除多余的類型轉(zhuǎn)換
CREATE CAST (INTEGER AS VARCHAR) WITH INOUT AS IMPLICIT;
CREATE CAST (VARCHAR AS INTEGER) WITH INOUT AS IMPLICIT;
CREATE CAST (BIGINT AS VARCHAR) WITH INOUT AS IMPLICIT;
CREATE CAST (VARCHAR AS BIGINT) WITH INOUT AS IMPLICIT;

附:
③查詢當(dāng)前類型轉(zhuǎn)化:

–這個(gè)查詢是當(dāng)前所有的CAST,具體字段的定義同樣可以參閱PG數(shù)據(jù)庫(kù)官方文檔里的描述
select
(select typname from pg_type where oid = t.castsource) as “castsource”,
(select typname from pg_type where oid = t.casttarget) as “casttarget”,
castcontext,
castmethod
from pg_cast as t

④刪除類型轉(zhuǎn)化:

DROP CAST (varchar as bigint); DROP CAST (bigint as varchar);文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-453258.html

到了這里,關(guān)于盤點(diǎn)一下PostgreSQL和MySQL的區(qū)別點(diǎn)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • Same Symbol | 哇咔咔?。?!盤點(diǎn)一下表達(dá)矩陣中重復(fù)基因的處理方法!~

    Same Symbol | 哇咔咔?。?!盤點(diǎn)一下表達(dá)矩陣中重復(fù)基因的處理方法!~

    醫(yī)院天天叫我們填問(wèn)卷,我真是不能理解。?? 動(dòng)不動(dòng)就問(wèn)我們對(duì)醫(yī)院的福利滿意嗎,對(duì)自己的收入滿意嗎,覺(jué)不覺(jué)得工作負(fù)荷太重了????? 我們滿不滿意,覺(jué)不覺(jué)得累,醫(yī)院心里沒(méi)點(diǎn)數(shù)嗎???~~~?? 不能再說(shuō)了,再說(shuō)我的號(hào)就要被河蟹掉了。?? 今天的教程是相對(duì)比較基

    2024年02月06日
    瀏覽(18)
  • 前端做了快零年了,盤點(diǎn)一下我的前端技術(shù)棧(快樂(lè)抄襲^_^)

    前端做了快零年了,盤點(diǎn)一下我的前端技術(shù)棧(快樂(lè)抄襲^_^)

    剛剛看了這篇文章:前端做了快兩年了,盤點(diǎn)一下我的前端技術(shù)棧 - 掘金 (juejin.cn) 很火的樣子 我也來(lái)蹭個(gè)熱點(diǎn)吧 原文這位博主是剛畢業(yè),我是今年六月要畢業(yè),正在找工作,大概各方面的見解要更差一些(畢竟是來(lái)蹭熱點(diǎn)的) 前端: Vue、React、Nuxt、TS、小程序、UniAPP、原生

    2024年02月22日
    瀏覽(19)
  • 【數(shù)據(jù)庫(kù)】PostgreSQL中的DISTINCT ON和DISTINCT的區(qū)別

    在數(shù)據(jù)庫(kù)查詢中,我們經(jīng)常會(huì)遇到需要去除重復(fù)數(shù)據(jù)的情況。在PostgreSQL中,我們可以使用DISTINCT和DISTINCT ON來(lái)實(shí)現(xiàn)這個(gè)目標(biāo)。那么,它們之間有什么區(qū)別呢?本文將詳細(xì)介紹這兩種方法的用法、區(qū)別以及適用場(chǎng)景。 DISTINCT是SQL中的一個(gè),用于從查詢結(jié)果中去除重復(fù)的行

    2024年02月03日
    瀏覽(19)
  • 超全mysql轉(zhuǎn)換postgresql數(shù)據(jù)庫(kù)方案

    超全mysql轉(zhuǎn)換postgresql數(shù)據(jù)庫(kù)方案

    寫在前文: 近期由于公司業(yè)務(wù)產(chǎn)品發(fā)展需要,要求項(xiàng)目逐漸國(guó)產(chǎn)化:(1)項(xiàng)目國(guó)產(chǎn)操作系統(tǒng)部署;(2)數(shù)據(jù)庫(kù)國(guó)產(chǎn)化;國(guó)產(chǎn)數(shù)據(jù)庫(kù)最終選型為highgo(瀚高),該數(shù)據(jù)庫(kù)基于pg開發(fā),所以要求先將mysql適配到postgresql數(shù)據(jù)庫(kù); 1.1.1 鏡像拉取 dockerhub官網(wǎng)選取自己想安裝的版本(

    2024年02月06日
    瀏覽(25)
  • postgresql|數(shù)據(jù)庫(kù)|MySQL數(shù)據(jù)庫(kù)向postgresql數(shù)據(jù)庫(kù)遷移的工具pgloader的部署和初步使用

    postgresql|數(shù)據(jù)庫(kù)|MySQL數(shù)據(jù)庫(kù)向postgresql數(shù)據(jù)庫(kù)遷移的工具pgloader的部署和初步使用

    MySQL數(shù)據(jù)庫(kù)和postgresql數(shù)據(jù)庫(kù)之間的差異并不多,這里的差異指的是對(duì)SQL語(yǔ)言的支持兩者并不大,但底層的東西差異是非常多的,例如,MySQL的innodb引擎概念,數(shù)據(jù)庫(kù)用戶管理,這些和postgresql相比是完全不同的(MySQL用戶就是用戶,沒(méi)有角色,postgresql有用戶,有角色,但差異不

    2024年02月14日
    瀏覽(36)
  • Navicat 連接遠(yuǎn)程數(shù)據(jù)庫(kù) Postgresql、MySQL

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

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

    2024年02月05日
    瀏覽(24)
  • 分享一下Postman連接MySQL數(shù)據(jù)庫(kù)的操作步驟,從安裝開始講起

    分享一下Postman連接MySQL數(shù)據(jù)庫(kù)的操作步驟,從安裝開始講起

    我們有時(shí)候做Postman接口測(cè)試時(shí),需要操作數(shù)據(jù)庫(kù),比如:查詢、新增、更新、刪除數(shù)據(jù)等。這時(shí)就需要連接數(shù)據(jù)庫(kù),以MySQL數(shù)據(jù)庫(kù)為例子,根據(jù)自己的總結(jié),分享一下Postman連接數(shù)據(jù)庫(kù),以及對(duì)數(shù)據(jù)庫(kù)中數(shù)據(jù)的操作步驟。 Postman要連接MySQL數(shù)據(jù)庫(kù),需要先安裝xMySQL,并啟動(dòng)xMyS

    2023年04月08日
    瀏覽(41)
  • Postgresql中的表結(jié)構(gòu)和數(shù)據(jù)同步/數(shù)據(jù)傳輸?shù)組ysql

    Postgresql中的表結(jié)構(gòu)和數(shù)據(jù)同步/數(shù)據(jù)傳輸?shù)組ysql

    Postgresql中的某個(gè)表,需要連同表結(jié)構(gòu)以及表數(shù)據(jù)同步一次到Mysql數(shù)據(jù)庫(kù)中。 一種方式是在Postgresql中將表sql導(dǎo)出,然后修改sql文件語(yǔ)法,再導(dǎo)入到mysql中。 但是這種方式過(guò)于復(fù)雜,可以借助于Navicat等工具。 如果是使用Navicat進(jìn)行結(jié)構(gòu)同步和數(shù)據(jù)同步時(shí),需要兩邊是同類型的數(shù)

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

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

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

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

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

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

    2024年02月05日
    瀏覽(31)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包