![見出し画像](https://assets.st-note.com/production/uploads/images/149779421/rectangle_large_type_2_6a3bb1b81af2aa739b3679f151d0eca2.jpeg?width=1200)
PostgreSQLを使用して気付いたRDMBSの違いについて
こんにちは。コグラフ株式会社 ソフトウェアサービス事業部(SSD)のASです。
この記事では、SQLコマンドのPostgreSQLにおける違いについて紹介します。データアナリストとして活動する方々は、これらのツールに精通している必要があります。私もデータアナリストを目指してトレーニング中であり、主にPostgreSQLを使用しており、特にA5
mkソフトウェアを利用してSQLの学習を行っています。SQLの問題を解く過程で、SQLとPostgreSQLで使用されるコマンドの違いに遭遇しました。
SQL(Structured Query Language)は、関係データベースとのやり取りに使用される標準的な言語です。SQLにはいくつかの人気のある管理システムがあります:SQL Server、MySQL、SQLite、そしてPostgreSQLです。この記事では、特にPostgreSQLに焦点を当て、さまざまなクエリで使用されるコマンドの違いについて説明します。
SQLとPostgreSQLについて、それらは何ですか?
SQL(標準クエリ言語)は、リレーショナルデータベースを管理するために使われる標準化されたプログラミング言語です。SQLは、PostgreSQL、MySQL、SQL Server Oracle Databaseなどのリレーショナルデータベース管理システム(RDBMS)で使われる標準的な言語です。
PostgreSQLは、オブジェクトリレーショナルデータベース管理システムです。この管理システムは1986年にカリフォルニア大学バークレー校で初めて開発され、その後いくつかのイテレーションを経て、現在使われているシステムとなりました。PostgreSQLはオープンソースの管理システムであり、誰でも無料で使用、修正、配布することができます。
これにより、SQLはリレーショナルデータベース管理で使用されるプログラミング言語であることがわかります。PostgreSQLは、独自の手続き型言語(PL/pgSQL)の他に、SQLを使用するデータベース管理システムの一つです。他のデータベース管理システムも同様です。
コマンドの違い
前回の記事で説明した通り、postgreSQLはSQL言語をそのコマンドの一部として使用していますが、独自の手続き型言語もシステム内で使用しています。そのため、SQLとpostgreSQLのほとんどのコマンドは同じですが、いくつかの違いがあります。
この部分では、SQLコマンドとPostgreSQLコマンドの違いについて説明します。
この例では、次のような内容を持つ「Employ」というテーブルを使用します。このテーブルには、以下のカラムが含まれています:名(first name)、姓(last name)、部門ID(department id)、チーム(team)、およびリーダー(leader)。
![](https://assets.st-note.com/img/1721972090287-Pq1XQ1WG28.png)
CONCAT
CONCATコマンドを使用して複数の文字列を結合する際、PostgreSQLはそのコマンド自体をサポートしていません。そのため、同じ結果を得るためにPostgreSQLでは【||】を使用します。
例文:
SQL CONCAT
SELECT CONCAT(「カラム名」,「文字列」\'', 「カラム名」, '\'「文字列」') FROM 「テーブル名」;
PostgreSQL
SELECT 「カラム名」 || '「文字列」''' || 「カラム名」 ||'''「文字列」' FROM 「テーブル名」;
ここでは、従業員テーブルにおいて「Paul Atreides」という名前の従業員の名前に「Tom」を追加し、それを「Fullname」という新しいカラムに表示することを目的としています。具体的には、次のSQLクエリを使用して、「Paul Atreides」の姓と名の間に「Tom」を挿入し、その結果を「Fullname」として表示します。
SQLコマンド:
SELECT CONCAT(last_name, ' Tom ', first_name) AS 'Fullname'
FROM employ
WHERE first_name = 'Paul' AND last_name = 'Atreides';
PostgreSQLコマンド:
SELECT last_name || ' Tom ' || first_name AS full_name
FROM employ
WHERE first_name = 'Paul' AND last_name = 'Atreideis';
結果:
![](https://assets.st-note.com/img/1721973023131-kBSXuFd6nV.png)
COUNT(id)
PostgreSQLでは、COUNT(id)を使用する際には、COUNT(id) AS COUNTとして追加する必要があります。
同様に、PostgreSQLや一般的なSQLでは、AS countを使用することで、クエリの出力においてCOUNT(id)などの関数の結果に明確な名前を付けることができます。これにより、最終的な結果における各列の意味が理解しやすくなります。基本的には、クエリを読む誰もが素早くその目的や意味を把握できるように、計算された値にラベルや名前を付けることと同じです。
例文:
dept_id が 1 の部門に所属している人数をカウントし、その結果を新しいカラム「部門ID」として表示します。
SQLコマンド:
SELECT '101' AS '部門ID', COUNT(id)
FROM employees
WHERE dept_id = 101;
Postgreコマンド:
SELECT '1' AS 部門ID, COUNT(id) AS count
FROM employ
WHERE dept_id = 1;
結果
![](https://assets.st-note.com/img/1721980871580-hQs1oBBSoY.png)
AS commandでは、(“)と(‘)
SQLにおいてASコマンドを実行する際には、コマンドを指定する際に二重引用符と単一引用符を使用する必要があります。 それに対して、PostgreSQLにおいては、ASコマンドを実行する際に、日本語文字列を指定する際に「二重引用符または単一引用符」を使用する必要はありません。実行時に正しいです。
上記のコードの例を取ると、私たちは見ることができます
SQLコマンド:
SELECT '101' AS '部門ID', COUNT(id) FROM employees WHERE dept_id = 101;
Postgreコマンド:
SELECT '1' AS 部門ID, COUNT(id) AS count FROM employ WHERE dept_id = 1;
ALTER VIEW
PostgreSQLではALTER VIEWコマンドを使用することはできません。ビューを変更する場合は、CREATE OR REPLACEコマンドを使用する必要があります。
例文:
SQLコマンド
ALTER VIEW 「ビュー名」 AS
SELECT 「カラム名」
FROM「テーブル名」;
PostgreSQL コマンド
CREATE OR REPLACE VIEW 「ビュー名」 AS
SELECT 「カラム名」
FROM 「テーブル名」;
ここでは、first name 列を使用して employ_chara という新しいビューを作成したいと思います。
SQLコマンド:
ALTER VIEW employ_chara AS
SELECT first_name
FROM employ;
Postgreコマンド:
CREATE OR REPLACE VIEW employ_chara AS
SELECT first_name
FROM employ;
結果
![](https://assets.st-note.com/img/1721981746837-ZBGX2h00xk.png)
![](https://assets.st-note.com/img/1721981746853-mVFraJgQ7z.png)
まとめ
これらはSQLとPostgreSQLコマンドのいくつかの違いです。PostgreSQL、MySQL、NoSQL、SQLiteなどのSQL言語を処理できる異なるプログラムでコマンドを実行する際には、これらの違いに注意して、作業をスムーズに進めることが重要です。
データ分析に興味のある方募集中!
コグラフソフトウェアサービス事業部(SSD)ではPythonやSQLの研修を行った後、実務に着手します。
研修内容の充実はもちろん、経験者に相談できる環境が備わっています。
コグラフの研修には実務を想定し着実にスキルアップを目指す環境がありますので、興味がある方は下記リンクよりお問い合わせください。
https://www.wantedly.com/projects/1392191