【学习笔记】PostgreSQL进阶技巧之联合查询、修改表和截断表

这一节主要包含如下内容:

  • UNION子句
  • 修改表
  • 截断表

一、UNION子句

说明:

UNION子句/运算符用于组合两个或多个SELECT语句的结果,而不返回任何重复的行。

1.UNION子句

语法:

SELECT column1 [,column2 ]
FROMtable1 [,table2 ]
[WHERE condition]
UNION 
SELECT column1 [,column2 ]
FROM table1 [,table2 ]
[WHERE condition]

示例:

select fac_id, name, dept from employees inner join department
on employees.id=department.id
union
select fac_id, name, dept from employees left join department
on employees.id=department.id;

结果:

2.UNION ALL子句(查询结果包括重复行)

语法:

SELECT column1 [,column2 ]
FROMtable1 [,table2 ]
[WHERE condition]
UNION ALL
SELECT column1 [,column2 ]
FROM table1 [,table2 ]
[WHERE condition]

示例1:

select fac_id, name, dept from employees inner join department
on employees.id=department.id
union all
select fac_id, name, dept from employees left join department
on employees.id=department.id;

结果:

二、修改表

语法:
在现有表中添加新列:


ALTER TABLE table_name ADD column_name datatype;

删除某列:


ALTER TABLE table_name DROP COLUMN column_name;

更改表中列的DATA TYPE:


ALTER TABLE table_name ALTER COLUMN column_name TYPE datatype;

向表中的列添加NOT NULL约束:


ALTER TABLE table_name MODIFY column_name datatype NOT NULL;

添加唯一约束ADD UNIQUE CONSTRAINT到表中:


ALTER TABLE table_name
ADD CONSTRAINT MyUniqueConstraint UNIQUE(column1, column2...);

将“检查约束”添加到表中:


ALTER TABLE table_name
ADD CONSTRAINT MyUniqueConstraint CHECK (CONDITION);

添加主键ADD PRIMARY KEY约束下:


ALTER TABLE table_name
ADD CONSTRAINT MyPrimaryKey PRIMARY KEY (column1, column2...);

从表中删除约束(DROP CONSTRAINT):


ALTER TABLE table_name
DROP CONSTRAINT MyUniqueConstraint;

从表中删除主键约束(DROP PRIMARY KEY):


ALTER TABLE table_name
DROP CONSTRAINT MyPrimaryKey;

三、截断表

说明:

实际功效与delete相同,但是不扫描表,所以更快,适合删除大表

语法:

TRUNCATE TABLE table_name;

示例:

truncate table employees;

结果:

猜你喜欢

转载自www.cnblogs.com/echizen/p/13379348.html