最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

PostgreSQL 別名的使用

 更新時(shí)間:2025年11月06日 10:59:33   作者:AI老李  
本文全面介紹PostgreSQL中的別名功能,包含列別名、表別名和CTE別名三大類型,文章詳細(xì)展示了各類別名的語法和應(yīng)用場景,具有一定的參考價(jià)值,感興趣的可以了解一下

別名是 SQL 的“命名魔法”,讓查詢 更簡潔、可讀、可復(fù)用。
本文涵蓋 列別名、表別名、CTE 別名、函數(shù)別名、表達(dá)式別名、JSON 別名、窗口函數(shù)別名、命名規(guī)范、性能影響、常見陷阱、最佳實(shí)踐 等全部內(nèi)容。

一、別名三大類型

類型語法作用
列別名column AS alias重命名輸出列
表別名table AS alias簡化表名,解決沖突
CTE 別名WITH cte_name AS (...)命名子查詢

二、準(zhǔn)備測試數(shù)據(jù)

CREATE TABLE employees (
    id BIGSERIAL PRIMARY KEY,
    full_name TEXT,
    email_address TEXT,
    dept_code VARCHAR(10),
    annual_salary NUMERIC(10,2),
    hire_date DATE,
    tags TEXT[]
);

INSERT INTO employees (full_name, email_address, dept_code, annual_salary, hire_date, tags) VALUES
('Alice Johnson', 'alice.j@company.com', 'IT', 85000, '2023-01-15', '{"dev","lead"}'),
('Bob Smith',     'bob.s@company.com',   'HR', 52000, '2022-06-10', '{"hr"}'),
('Carol White',   'carol.w@company.com', 'IT', 92000, '2024-03-20', '{"dev","ai"}'),
('Dave Brown',    NULL,                  'IT', 78000, '2021-11-05', '{"dev"}'),
('Eve Davis',     'eve.d@company.com',   'HR', 48000, '2023-12-01', '{"hr","recruit"}');

三、列別名(Column Alias)

1. 基本語法

SELECT 
    full_name AS name,
    annual_salary AS salary,
    hire_date AS "Hire Date"  -- 保留空格/大小寫
FROM employees;

2. 表達(dá)式別名

SELECT 
    full_name,
    annual_salary / 12 AS monthly_salary,
    UPPER(full_name) AS "FULL NAME",
    COALESCE(email_address, 'N/A') AS email
FROM employees;

3. 聚合函數(shù)別名

SELECT 
    dept_code,
    COUNT(*) AS headcount,
    AVG(annual_salary) AS avg_salary,
    STRING_AGG(full_name, ', ') AS team_members
FROM employees
GROUP BY dept_code;

四、表別名(Table Alias)

1. 簡化長表名

SELECT e.full_name, e.annual_salary
FROM employees AS e;
-- 等價(jià)于
FROM employees e;

2.自連接(Self-Join)

-- 員工與經(jīng)理
SELECT 
    e.full_name AS employee,
    m.full_name AS manager
FROM employees e
LEFT JOIN employees m ON e.manager_id = m.id;

3. 多表 JOIN 避免沖突

SELECT 
    e.full_name,
    d.name AS dept_name
FROM employees e
JOIN departments d ON e.dept_code = d.code;

五、CTE 別名(WITH 子句)

WITH 
it_employees AS (
    SELECT * FROM employees WHERE dept_code = 'IT'
),
high_earners AS (
    SELECT full_name, annual_salary
    FROM it_employees
    WHERE annual_salary > 80000
)
SELECT * FROM high_earners;

六、函數(shù)與窗口函數(shù)別名

SELECT 
    full_name,
    EXTRACT(YEAR FROM hire_date) AS hire_year,
    ROW_NUMBER() OVER (PARTITION BY dept_code ORDER BY annual_salary DESC) AS rank_in_dept
FROM employees;

七、JSON 與數(shù)組別名

SELECT 
    full_name,
    tags[1] AS primary_tag,
    config->>'level' AS "Employee Level"
FROM employees;

八、別名命名規(guī)范(推薦)

類型規(guī)范示例
表別名1-3 個(gè)字母,表名縮寫e, emp, d, dept
列別名清晰、駝峰或下劃線employee_name, deptName
CTE 別名動詞 + 名詞active_employees, monthly_sales
避免保留字、空格開頭order, group
-- 推薦
SELECT e.full_name AS employee_name FROM employees e;

-- 不推薦
SELECT employees.full_name AS name FROM employees;  -- 太長

九、別名與ORDER BY

1. 支持別名(推薦)

SELECT full_name, annual_salary AS salary
FROM employees
ORDER BY salary DESC;

2. 不支持列序號(不推薦)

ORDER BY 2  -- 模糊,易出錯

十、性能影響:幾乎為 0

項(xiàng)目影響
列別名無(僅輸出層)
表別名無(優(yōu)化器內(nèi)部使用)
CTE 別名可能物化(MATERIALIZED)
-- 性能相同
SELECT full_name AS name FROM employees;
SELECT full_name FROM employees;

十一、常見陷阱與解決方案

陷阱說明解決方案
AS 省略導(dǎo)致歧義SELECT col AS FROM table始終加 AS
別名與保留字沖突SELECT col AS order用雙引號 "order"
GROUP BY 用別名不允許用原始列或列序號
WHERE 用別名不允許用原始表達(dá)式
-- 錯誤:WHERE 不能用別名
SELECT full_name, annual_salary AS salary
FROM employees
WHERE salary > 80000;  -- 語法錯誤!

-- 正確
SELECT full_name, annual_salary AS salary
FROM employees
WHERE annual_salary > 80000;
-- GROUP BY 別名錯誤
SELECT dept_code, COUNT(*) AS cnt
FROM employees
GROUP BY cnt;  -- 錯誤!

-- 正確
GROUP BY dept_code;
-- 或
GROUP BY 1;  -- 列序號

十二、最佳實(shí)踐 Checklist

項(xiàng)目建議
表別名必加提升可讀性
列別名清晰避免 col1, col2
AS 顯式使用避免歧義
ORDER BY 用別名簡潔
WHERE/GROUP BY 用原始列符合語法
CTE 別名動詞化filtered_data, aggregated_sales
避免保留字用 "order", "group"

十三、一鍵生產(chǎn)級查詢模板

WITH active_employees AS (
    SELECT 
        id,
        full_name AS employee_name,
        email_address AS email,
        dept_code,
        annual_salary AS salary,
        hire_date
    FROM employees
    WHERE hire_date >= '2023-01-01'
),
dept_stats AS (
    SELECT 
        dept_code,
        COUNT(*) AS headcount,
        AVG(salary) AS avg_salary,
        MAX(salary) AS max_salary
    FROM active_employees
    GROUP BY dept_code
)
SELECT 
    ae.employee_name,
    ae.email,
    ae.salary,
    ds.headcount,
    ds.avg_salary,
    RANK() OVER (PARTITION BY ae.dept_code ORDER BY ae.salary DESC) AS salary_rank
FROM active_employees ae
JOIN dept_stats ds ON ae.dept_code = ds.dept_code
ORDER BY ds.avg_salary DESC, ae.salary DESC;

十四、快速實(shí)戰(zhàn):5 分鐘掌握別名

-- 1. 列別名
SELECT full_name AS name, annual_salary AS salary FROM employees;

-- 2. 表別名 + 自連接
SELECT e.full_name AS emp, m.full_name AS mgr 
FROM employees e 
LEFT JOIN employees m ON e.manager_id = m.id;

-- 3. CTE 別名
WITH it_team AS (SELECT * FROM employees WHERE dept_code = 'IT')
SELECT employee_name, salary FROM it_team;

-- 4. 窗口函數(shù)別名
SELECT 
    full_name,
    dept_code,
    ROW_NUMBER() OVER (PARTITION BY dept_code ORDER BY annual_salary DESC) AS rank
FROM employees;

-- 5. ORDER BY 別名
SELECT annual_salary * 12 AS yearly 
FROM employees 
ORDER BY yearly DESC;

現(xiàn)在就動手
employees 表中:

  1. 查詢 full_namename, annual_salarysalary
  2. 自連接查詢員工與經(jīng)理名(用 em 別名)
  3. 用 CTE 別名 high_earners 篩選 salary > 80000
  4. 計(jì)算月薪并用別名 monthly,按其降序
  5. RANK() 給每個(gè)部門薪資排名,用別名 dept_rank

十五、別名 vs 視圖 vs 函數(shù)

方式別名視圖函數(shù)
復(fù)用性僅當(dāng)前查詢
參數(shù)化NoNoYes
性能最高中等
適用臨時(shí)命名固定查詢復(fù)雜邏輯
-- 視圖替代 CTE 別名
CREATE VIEW v_active_employees AS
SELECT id, full_name AS name, annual_salary AS salary
FROM employees WHERE hire_date >= '2023-01-01';

到此這篇關(guān)于PostgreSQL 別名的使用的文章就介紹到這了,更多相關(guān)PostgreSQL 別名內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • PostgreSQL主從復(fù)制實(shí)戰(zhàn)指南:告別單點(diǎn)故障,附主從切換與延遲監(jiān)控命令

    PostgreSQL主從復(fù)制實(shí)戰(zhàn)指南:告別單點(diǎn)故障,附主從切換與延遲監(jiān)控命令

    文章詳細(xì)介紹了如何在CentOS/Ubuntu環(huán)境下搭建PostgreSQL主從復(fù)制,包括環(huán)境準(zhǔn)備、主庫配置、從庫配置、驗(yàn)證復(fù)制狀態(tài)等步驟,通過主從復(fù)制,可以實(shí)現(xiàn)數(shù)據(jù)庫高可用,減少宕機(jī)時(shí)間,提高系統(tǒng)容災(zāi)能力,感興趣的朋友一起看看吧
    2026-04-04
  • postgresql高級應(yīng)用之合并單元格的思路詳解

    postgresql高級應(yīng)用之合并單元格的思路詳解

    這篇文章主要介紹了postgresql高級應(yīng)用之合并單元格,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • PostgreSQL歸檔配置及自動清理歸檔日志的操作

    PostgreSQL歸檔配置及自動清理歸檔日志的操作

    這篇文章主要介紹了PostgreSQL歸檔配置及自動清理歸檔日志的操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01
  • PostgreSQL實(shí)戰(zhàn)之啟動恢復(fù)讀取checkpoint記錄失敗的條件詳解

    PostgreSQL實(shí)戰(zhàn)之啟動恢復(fù)讀取checkpoint記錄失敗的條件詳解

    這篇文章主要給大家介紹了關(guān)于PostgreSQL實(shí)戰(zhàn)之啟動恢復(fù)讀取checkpoint記錄失敗的條件的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2018-08-08
  • 在PostgreSQL中實(shí)現(xiàn)跨數(shù)據(jù)庫的關(guān)聯(lián)查詢

    在PostgreSQL中實(shí)現(xiàn)跨數(shù)據(jù)庫的關(guān)聯(lián)查詢

    在 PostgreSQL 中,通常情況下的關(guān)聯(lián)查詢是在同一個(gè)數(shù)據(jù)庫的不同表之間進(jìn)行的,然而,在某些復(fù)雜的應(yīng)用場景中,可能需要實(shí)現(xiàn)跨數(shù)據(jù)庫的關(guān)聯(lián)查詢,本文將詳細(xì)探討如何在 PostgreSQL 中實(shí)現(xiàn)這一需求,并通過示例代碼進(jìn)行說明,需要的朋友可以參考下
    2024-08-08
  • postgresql中時(shí)間轉(zhuǎn)換和加減操作

    postgresql中時(shí)間轉(zhuǎn)換和加減操作

    這篇文章主要介紹了postgresql中時(shí)間轉(zhuǎn)換和加減操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • PostgreSQL實(shí)現(xiàn)一個(gè)通用標(biāo)簽系統(tǒng)

    PostgreSQL實(shí)現(xiàn)一個(gè)通用標(biāo)簽系統(tǒng)

    這篇文章主要給大家介紹了關(guān)于利用PostgreSQL實(shí)現(xiàn)一個(gè)通用標(biāo)簽系統(tǒng)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-01-01
  • 在PostgreSQL中實(shí)現(xiàn)數(shù)據(jù)的自動清理和過期清理

    在PostgreSQL中實(shí)現(xiàn)數(shù)據(jù)的自動清理和過期清理

    在 PostgreSQL 中,可以通過多種方式實(shí)現(xiàn)數(shù)據(jù)的自動清理和過期處理,以確保數(shù)據(jù)庫不會因?yàn)榇鎯^多過時(shí)或不再需要的數(shù)據(jù)而導(dǎo)致性能下降和存儲空間浪費(fèi),本文給大家介紹了一些常見的方法及詳細(xì)示例,需要的朋友可以參考下
    2024-07-07
  • 教你如何在Centos8-stream安裝PostgreSQL13

    教你如何在Centos8-stream安裝PostgreSQL13

    這篇文章主要介紹了Centos8-stream安裝PostgreSQL13,初始化PostgreSQL需要先創(chuàng)建postgresql儲存目錄,啟動postgresql數(shù)據(jù)庫,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • postgreSQL數(shù)據(jù)庫的監(jiān)控及數(shù)據(jù)維護(hù)操作

    postgreSQL數(shù)據(jù)庫的監(jiān)控及數(shù)據(jù)維護(hù)操作

    這篇文章主要介紹了postgreSQL數(shù)據(jù)庫的監(jiān)控及數(shù)據(jù)維護(hù)操作,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-01-01

最新評論

鄱阳县| 汕头市| 独山县| 英吉沙县| 屏山县| 谢通门县| 佛学| 阳高县| 彩票| 康保县| 兰溪市| 哈尔滨市| 青河县| 伊宁市| 安陆市| 苏尼特右旗| 垣曲县| 新民市| 广东省| 新密市| 沙田区| 镇康县| 绥宁县| 栾川县| 长治市| 鲜城| 云阳县| 芦溪县| 平潭县| 屏东市| 永顺县| 邯郸市| 界首市| 吴堡县| 中宁县| 仙桃市| 六枝特区| 泗阳县| 从江县| 六安市| 延津县|