【學習筆記】PostgreSQL進階技巧之別名、索引、日期時間和自增
阿新 • • 發佈:2020-07-26
這一節主要包括以下內容:
- 別名
- 索引
- 日期和時間函式
- 自增
一、別名
說明:
別名(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);