Postgresql学習ノート——データ型要約


Postgresqlを学習する前に、データベースにデータを格納する方法を理解するために、サポートされているデータ型について説明します.一、Postgresqlデータベースは多くのタイプをサポートしており、大まかな分類は以下の通りである.
分類名
説明
他のデータベースと比較
ブール型
標準のbooleanデータ型をサポート
mysqlのBOOL、BOOLEANタイプと同様、占有スペースは1バイト
数値タイプ
整数タイプは2バイトのsmallint,4バイトのint,8バイトのbigintである.十進法の正確なタイプはnumericで、浮動小数点のタイプはreal、double precisionがあります.あと8バイトの通貨タイプmoney
mysqlのないunsigned整数タイプ、1バイト長のtinyint整数タイプ、3バイト長のmediumint整数タイプもありません
文字の種類
varchar(n)、char(n)、textの3種類があります
Postgresqlのvarcharは最大1 GB、mysqlは最大64 KB、textタイプはmysqlのLONGTEXTタイプに相当します
バイナリタイプ
一つだけbytea
mysql対応BLOB、LONGBLOBタイプ
ビット列タイプ
ビット列は1と0の文字列で、bit(n)、bit varying(n)の2種類があります
他のデータベースにはこのタイプはありません
日付と時刻のタイプ
date、time、timestampがあり、timeとtimestampはタイムゾーンを含むかどうかの2つのタイプに分けられます
Postgresqlでは、ミリ秒などの秒以下に正確に設定できます.mysqlでは秒までしか正確にできません
列挙タイプ
列挙タイプは、いくつかのプログラミング言語のenumタイプに等しい一連の秩序化された静的値セットを含むデータ型です.
Postgresqlは列挙タイプを使用する前にcreate typeを使用してこのタイプを作成する必要があります.mysqlには列挙タイプENUMもあります
ジオメトリタイプ
点(point)、直線(line)、線分(lseg)、パス(path)、ポリゴン(polygon)、円(cycle)などのタイプが含まれています
PG特有のタイプで、データベースに内蔵されているカスタムタイプに相当します.
ネットワークアドレスタイプ
cidr、inet、macaddrの3種類があります
PG特有タイプ
配列タイプ
配列を格納できます
PG特有タイプ
複合タイプ
既存の単純なタイプをユーザー定義のタイプに組み合わせる
他の種類のデータベースと同様のカスタムタイプ
xmlタイプ
XMLデータを格納できるタイプ
jsonタイプ
jsonデータを格納できるタイプ
rangeタイプ
範囲タイプ、範囲データの格納
オブジェクト識別子タイプ
Postgresql内部識別オブジェクトのタイプ(oidタイプ、regprocタイプ、regclassタイプなど)
擬似タイプ
擬似タイプはフィールドのデータ型として使用できませんが、関数のパラメータまたは結果タイプを宣言できます.any、anyarray、anyelement、cstring、internal、language_hander、record、trigger、void、opaque
その他のタイプ
UUID、pg_など、区別しにくいタイプがあります.lsn
SQLの互換性を高めるために、integerタイプはint、int 4で表すことができ、smallintはint 2で表すことができる.char varyingはvarcharで表すことができる.numeric(m,n)はdecimal(m,n)で表すことができる.
二、タイプの入力と変換1.数字や文字列のような簡単なタイプで、通常の入力に慣れているため、データベースは自動的に認識できます.
postgres=# select 1, 1.123, 'hello world';
 ?column? | ?column? |  ?column?   
----------+----------+-------------
        1 |    1.123 | hello world
(1 row)

2.その他の複雑なデータ型は、接頭辞タイプ名と一重引用符で囲まれた値のフォーマットで入力できます.
postgres=# select bit '10011101', int'1'+ int'4';
   bit    | ?column? 
----------+----------
 10011101 |        5
(1 row)

実際にはすべてのタイプが上記の方法で入力できます.
3.Postgresqlは標準SQLのタイプ変換関数CASTをサポートしてタイプ変換を行う:
postgres=# select CAST('1200' as int), CAST('2020-02-15' as date);
 int4 |    date    
------+------------
 1200 | 2020-02-15
(1 row)

さらに、Postgresqlには、2つのコロンとデータ型を使用して、より簡潔なタイプ変換があります.
postgres=# select '13'::int, '2020-02-15'::date;
 int4 |    date    
------+------------
   13 | 2020-02-15
(1 row)

Postgresqlデータベースのデータ型は、よく接触するOracle、MySQLデータベースのデータ型とは、文字、数字、日付など、一般的なデータ型ではあまり違いませんが、ビット列タイプ、ネットワークアドレスタイプ、配列タイプなど、独自の特殊なデータ型があります.これらの特有のデータ型の使用は、データベース・テーブル・データの格納時に多く使用してこそ、その使用方法を具体的に理解することができます.