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

MySQLの大文字、小文字問題について

MySQLでテーブルを作る際にカラムに重複を許さない制約(unique)を振ることがあると思います。 数字の場合は問題ないのですが、文字列の場合、なんと英語の大文字と小文字が区別されません。 つまりa …

no image

SQL 更新系に関して

SQL実践入門、残り2章になりましたが、いやーむずいっす。 今回は9章を進めていますがSQLはもともと検索を主な用途として発展したため、SELECT文の使用がメインになります。 ですが、UPDATE文 …

no image

GlassFishでDB接続

JavaEEではアプリケーションサーバーとしてGlassFishを使いますが、先日、GlassFishを通さないとJavaEEでDBが動かせないということを知りました。そのためJavaEEではデータベ …

no image

SQL基礎 case式について

case式に関して。 集約系の関数では複雑な処理を一気に行うことができる。 case式は1列のみ有効。複数の列に対して行うことはできない。 case ~ when ・・・thenではwhenが評価され …

no image

EXISTSについて

今回はEXISTSについてです。 実務では伝票と明細との検索関連の処理で結構出てきます。 なお、達人に学ぶ~では論理学について少しふれており、この領域を本気で理解する場合は論理学を勉強する必要がありま …

アーカイブ