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

cakePHPでの直SQL

今回はCakePHPにて直のSQLを書く方法を。 cakePHPにて大概の処理はもともと備わっているコマンドでなんとかなりますが、まれに直SQLを書いたほうがらくなこともあります。 書き方その1 [c …

no image

CASE式のすすめ その2

本日も「達人に学ぶSQL徹底指南書」を地道に進めていきます。 Contents1 CASE式の利用2 UPDATE文のCASE3 テーブル同士のマッチング CASE式の利用 私自身はCHECK制約を使 …

no image

dbUnitの使い方

えーJavaで有名なテストツールDBUnitについて。 DbUtilではありませんので間違えないように。(私は最初間違えました・・・) まだ全然使い込んでるわけではありませんがどんなことができるかとい …

no image

herokuでMySQL

昨日に続き、heroku+MySQLのメモです。 herokuはディフォルトではPostgreSQLですが、アドオンを使うとMySQLも使えるようになります。 使い方ですが、herokuの管理画面でク …

no image

集合としてのSQL

今まで何度かSQLが集合ということを扱ってきました。 今回はそれがよくわかる例を。 実務ではあまりないと思うのですが、集合をイメージしやすい例題として、2つのテーブルが全く同じケースを考えます。 下記 …