【学习笔记】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);