LoginSignup
0
0

初めに

Qiita Engineer Festa 2024に参加中。完走目指してます。

他のバックスラッシュコマンドについては以下から読んでください。

【PostgreSQL】バックスラッシュコマンドを纏めていく

\gdescとは

現在の問い合わせバッファの結果の説明(列名とデータ型)を表示します。 問い合わせは実際には実行されませんが、ある種の構文エラーが含まれている場合、そのエラーは通常の方法で報告されます。

現在の問い合わせバッファが空の場合、直近に送った問い合わせの説明が代わりに出力されます。

\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)

使い方としてはクエリの結果として求めたカラムで返ってくるかを見てるのか?

まとめ

試しに触ってみたけど、いまいち使い勝手がよくわからなかった。

記事を探してみてもこれといった情報がなくて、どんな時に活用されるコマンドなのだろうか。。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0