skillup

技術ブログ

Database

Postgresの基礎(主にMySQLとの違いなど)

投稿日:2020年2月19日 更新日:

えー来月(2020年3月)より、postgresを使うかもしれないので、ちょっと復習を。

以前のリンク

PostgreSQLについて

Postgres リモートホストからの接続

今までMySQLが95%だったので、主にMySQLとの違いから。

基本コマンド比較

すごくわかりやすい表があったので、リスペクトも込めてリンクを。

MySQLとPostgreSQLコマンド比較表

一応自分なりのメモも

超頻出系

その他

  • MySQLでいうユーザーはPostgresではロールという概念が違いです(以前はグループとユーザーがあり、これをまとめた概念のようです)。
  • ディフォルトでpostgresというデータベース、ロールがあります。rootユーザー的なものかと。
  • postgresはログインすると左側がデータベースになります。
    例えばpsql -U postgres -d post_code_dbといったコマンドを入力すると下記のようになります。
    post_code_db=

テーブル比較

これまたわかりやすいリンクがあったので貼ります。

MySQLとPostgresのデータ型対応表

一応補足しますと下記のような特徴があります。

  • intの幅定義(int(11)など)ができない
  • 頻出のものの中ではtinyint,datetimeがない
  • 数値定義の際のunsignedがない
  • サロゲートキーのオートインクリメントがなく、シーケンステーブルを使う必要がある。
  • サロゲートキーは id SERIAL PRIMARY KEY などと設定すると自動でシーケンステーブルまで設定できる。
  • カラムの範囲が全体的に大きめ。
    CHECK構文(型制御、例えば1〜12のみ、など)が使える

SELECT文

分析、集合系の構文で使えるものが多々あります。

全体的にソート系のアルゴリズムが優れています。

dockerでの環境変数など

ちなみにdockerで環境変数を作るときにpostgresの環境を以下のように作ることが多いと思いますが、

これですとデフォで

role,ownerが postgres

になります。設定していない場合このようになるようです。

また

のように設定した場合、

デフォで

role,ownerが dbuser になり、 sampledb ができています。

postgresのrole,ownerがない・・、ログインできないって焦らないようにしましょう。(私w)

-Database
-

執筆者:


comment

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

関連記事

no image

DBUtils活用

普段はJavaEEで開発を行っているのでデータベースへのアクセスはJPAを活用しています。 ただ、JavaEE環境だとglassfish経由でデータベースを動かしているので、glassfishを動かさ …

no image

CASE式のすすめ

SQL実践入門を7割がたぐらい終えたところで同著者の方の「達人に学ぶSQL徹底指南書」を学習しようと思っています。 この方の著書は気づいたら結構読んでましたね。 Contents1 CASE式での注意 …

no image

HAVING句について

本日はHAVINGについて。 かろうじて用法はしっており、たまに使うこともありますが、あまりしっかり理解しているとはいえない状況ですので、掘り下げてみようと思います。 WHEREとは違い、抽出した結果 …

no image

NULLについて

「達人に学ぶSQL徹底指南書」を読み進めていきましたがNULLについていろいろ書いてあるのでメモリます。 Contents1 NULLには未知と適用不能の2パターンがある2 = NULL が使えず I …

no image

自己結合のイメージ

前回に引き続き結合について考えます。 例えば下記のようなテーブルがあり、重複行を削除するとします。 1 りんご 50 2 みかん 100 3 みかん 100 4 みかん 100 5 バナナ 80 この …