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

SQL基礎 条件式はunionよりもcaseで

複雑な条件式があったときにcase式を使うことでパフォーマンスを向上させることができます。 ※一般にunionを使うよりも高速なことが多い。 例1 ある条件により別の列を使いたいとき、 [crayon …

no image

SQLインジェクション

セキュリティ関係の知識がぬるいのでちょっとお勉強。 知っていることもあるが復習もかねて勉強を。 Contents1 SQLインジェクションとは?2 被害3 対策4 参考サイト・書籍5 ソース SQLイ …

no image

PostgreSQLについて

本日はポスグレ(PostgreSQL)について。 自分はほとんどMySQLだったので、主にMySQLとの比較について書いていきます。 Contents1 アーキテクチャの違い1.1 MySQL1.2 …

no image

CASE式のすすめ その3

本日もCASE式です。 下記のようなテーブル(studentclub)があるとします。 std_id | club_id | club_name | main_club_flg —&#82 …

no image

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

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

アーカイブ