1. 程式人生 > 實用技巧 >【學習筆記】PostgreSQL進階技巧之別名、索引、日期時間和自增

【學習筆記】PostgreSQL進階技巧之別名、索引、日期時間和自增

這一節主要包括以下內容:

  • 別名
  • 索引
  • 日期和時間函式
  • 自增

一、別名

說明:

別名(Alias)用於為列或表提供臨時名稱。通常來說,當您執行自聯接時,會建立一個臨時表.

1.列別名

語法1:

SELECT column_name AS alias_name 
FROM table_name 
conditions... ;

示例1:

select name, max(salary) as package
from employees
group by name;

結果1:

2.表別名

語法2:

SELECT column1, column2.... 
FROM table_name AS alias_name 
conditions.... ;

示例2:

select e.id, e.name, e.salary
from employees as e;

結果2:

二、索引

說明:

索引是用於加速從資料庫檢索資料的特殊查詢表。資料庫索引類似於書的索引(目錄)。 索引為出現在索引列中的每個值建立一個條目。

1.建立索引

語法:
單列索引:

CREATE INDEX index_name ON table_name(column_name);

多列索引:

CREATE INDEX index_name ON table_name(column_name1, column_name2);

唯一索引:(建立唯一索引以獲取資料的完整性並提高效能。它不允許向表中插入重複的值,或者在原來表中有相同記錄的列上也不能建立索引)

CREATE UNIQUE INDEX index_name on table_name (column_name);

示例1:

create index employees_index on employees(name);

結果1:

示例2:

create index multicolumn_index on employees(name,salary);

結果2:

示例3:(如果表中有同樣的行,就會報錯)

create unique index unique_on_name on employees(name);

結果3:

2.刪除索引

語法:

DROP INDEX index_name;

示例:

drop index multicolumn_index;

注意事項:

  • 應該避免在小表上使用索引
  • 不要為具有頻繁,大批量更新或插入操作的表建立索引
  • 索引不應用於包含大量null值的列
  • 不要在經常修改的列上建立索引

三、日期和時間函式

下表列出重要的日期和時間的函式:

1.AGE()

示例:

select age(timestamp '2019-05-16', timestamp '1997-03-07');

結果:

2.CURRENT DATE/TIME

引數列表:

示例:

select current_date,current_time;

結果:

四、自動遞增

說明:

型別名稱serial用於建立整數列。 型別名稱bigserial建立一個bigint型別的列。 如果你期望在表的使用期限內使用超過2^31個識別符號,則應使用bigserial。 型別名稱smallserial建立一個smallint列。

語法:

CREATE TABLE table_name (colname SERIAL);

示例:(之後插入的資料可以不指定id,自動遞增插入表中)

CREATE TABLE COMPANY(
    ID SERIAL PRIMARY KEY,
    NAME TEXT NOT NULL,
    AGE INT NOT NULL,
    ADDRESS CHAR(50),
    SALARY REAL);