MariaDBで特定の列のデータ型を取得する3つの方法を次に示します。
\d コマンド
psqlでは、\d コマンドは、テーブル、ビュー、マテリアライズドビュー、インデックス、シーケンス、または外部テーブルに関する情報を表示します。
このコマンドを使用して、特定のテーブルの列のデータ型を確認できます。
\d public.actor 結果:
Table "public.actor"
+-------------+-----------------------------+-----------+----------+-----------------------------------------+
| Column | Type | Collation | Nullable | Default |
+-------------+-----------------------------+-----------+----------+-----------------------------------------+
| actor_id | integer | | not null | nextval('actor_actor_id_seq'::regclass) |
| first_name | character varying(45) | | not null | |
| last_name | character varying(45) | | not null | |
| last_update | timestamp without time zone | | not null | now() |
+-------------+-----------------------------+-----------+----------+-----------------------------------------+
Indexes:
"actor_pkey" PRIMARY KEY, btree (actor_id)
"idx_actor_last_name" btree (last_name)
Referenced by:
TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (actor_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT
Triggers:
last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE FUNCTION last_updated()
プラス記号を追加できます(+ )拡張情報を明らかにする:
\d+ public.actor 結果:
Table "public.actor"
+-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+
| Column | Type | Collation | Nullable | Default | Storage | Stats target | Description |
+-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+
| actor_id | integer | | not null | nextval('actor_actor_id_seq'::regclass) | plain | | |
| first_name | character varying(45) | | not null | | extended | | |
| last_name | character varying(45) | | not null | | extended | | |
| last_update | timestamp without time zone | | not null | now() | plain | | |
+-------------+-----------------------------+-----------+----------+-----------------------------------------+----------+--------------+-------------+
Indexes:
"actor_pkey" PRIMARY KEY, btree (actor_id)
"idx_actor_last_name" btree (last_name)
Referenced by:
TABLE "film_actor" CONSTRAINT "film_actor_actor_id_fkey" FOREIGN KEY (actor_id) REFERENCES actor(actor_id) ON UPDATE CASCADE ON DELETE RESTRICT
Triggers:
last_updated BEFORE UPDATE ON actor FOR EACH ROW EXECUTE FUNCTION last_updated()
Access method: heap information_schema.columns 表示
information_schema.columns ビューには列に関する情報が含まれています:
SELECT
column_name,
data_type,
character_maximum_length AS max_length,
character_octet_length AS octet_length
FROM
information_schema.columns
WHERE
table_schema = 'public' AND
table_name = 'actor' AND
column_name = 'first_name'; 結果:
+-------------+-------------------+------------+--------------+ | column_name | data_type | max_length | octet_length | +-------------+-------------------+------------+--------------+ | first_name | character varying | 45 | 180 | +-------------+-------------------+------------+--------------+
pg_typeof() 機能
pg_typeof() 関数は、渡された値のデータ型のOIDを返します。
したがって、列をpg_typeof()に渡すことで、列のデータ型を取得できます。 テーブルのクエリ中に機能する:
SELECT pg_typeof(first_name)
FROM public.actor
LIMIT 1; 結果:
+-------------------+ | pg_typeof | +-------------------+ | character varying | +-------------------+
PostgreSQLでは、character varying varcharの名前です (実際には、varchar character varyingのエイリアスです 。