初めに
Qiita Engineer Festa 2024に参加中。完走目指してます。
他のメタコマンドについては以下から読んでください。
\gdescとは
現在の問い合わせバッファの結果の説明(列名とデータ型)を表示します。 問い合わせは実際には実行されませんが、ある種の構文エラーが含まれている場合、そのエラーは通常の方法で報告されます。
現在の問い合わせバッファが空の場合、直近に送った問い合わせの説明が代わりに出力されます。
試してみた
事前準備
-- 顧客テーブルの作成
CREATE TABLE customers (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL
);
-- 製品テーブルの作成
CREATE TABLE products (
id SERIAL PRIMARY KEY,
name VARCHAR(100) NOT NULL,
price NUMERIC(10, 2) NOT NULL
);
-- 注文テーブルの作成
CREATE TABLE orders (
id SERIAL PRIMARY KEY,
customer_id INT NOT NULL,
product_id INT NOT NULL,
order_date DATE NOT NULL,
quantity INT NOT NULL,
FOREIGN KEY (customer_id) REFERENCES customers(id),
FOREIGN KEY (product_id) REFERENCES products(id)
);
簡単なデータの投入
-- 顧客データの挿入
INSERT INTO customers (name) VALUES
('Alice'),
('Bob'),
('Charlie');
-- 製品データの挿入
INSERT INTO products (name, price) VALUES
('Product A', 10.00),
('Product B', 20.00),
('Product C', 30.00);
-- 注文データの挿入
INSERT INTO orders (customer_id, product_id, order_date, quantity) VALUES
(1, 1, '2023-01-01', 2),
(1, 2, '2023-01-01', 1),
(2, 1, '2023-01-02', 1),
(3, 3, '2023-01-03', 3);
\gdescを試す
まずは通常通りにクエリを実行する
SELECT
c.name AS customer_name,
o.order_date,
p.name AS product_name,
p.price,
o.quantity,
(p.price * o.quantity) AS total_price
FROM
orders o
JOIN
customers c ON o.customer_id = c.id
JOIN
products p ON o.product_id = p.id;
customer_name | order_date | product_name | price | quantity | total_price
---------------+------------+--------------+-------+----------+-------------
Alice | 2023-01-01 | Product A | 10.00 | 2 | 20.00
Alice | 2023-01-01 | Product B | 20.00 | 1 | 20.00
Bob | 2023-01-02 | Product A | 10.00 | 1 | 10.00
Charlie | 2023-01-03 | Product C | 30.00 | 3 | 90.00
(4 rows)
\gdescを使う
SELECT
c.name AS customer_name,
o.order_date,
p.name AS product_name,
p.price,
o.quantity,
(p.price * o.quantity) AS total_price
FROM
orders o
JOIN
customers c ON o.customer_id = c.id
JOIN
products p ON o.product_id = p.id \gdesc
Column | Type
---------------+------------------------
customer_name | character varying(100)
order_date | date
product_name | character varying(100)
price | numeric(10,2)
quantity | integer
total_price | numeric
(6 rows)
使い方としてはクエリの結果として求めたカラムで返ってくるかを見てるのか?
まとめ
試しに触ってみたけど、いまいち使い勝手がよくわからなかった。
記事を探してみてもこれといった情報がなくて、どんな時に活用されるコマンドなのだろうか。。