1.SQL基础
1.1 DDL
创建数据库
CREATE DATABASE db_name [[WITH] OWNER [=] user_name];
- 创建者自动成为新DB的owner
- 用户需要有CREATEDB权限(或者superuser)
删除数据库
DROP DATABASE [IF EXISTS] db_name;
- 只有该数据库的superuser或者该db的owner才能删除该数据库
- 删除数据库会移除其中包括的所有对象
- 不能在与目标数据库连接时执行DROP命令,但可以来连接到其他任意数据库
创建数据表
CREATE TABLE [IF EXISTS]
[schema_name.]table_name
([{column_name column_type [column_constraints, [...]]
| table_contraints
[, ...]
}]);
- 在创建表时,如果不存在同名表且语义正确,表创建都会返回成功
- 如果存在同名表:如果比指定IF NOT EXISTS选项,则返回异常;如果指定IF NOT EXISTS 选项,Holo会打印提示信息,跳过表创建步骤,返回成功
删除表
DROP TABLE [IF EXISTS] table_name [, ...];
- DROP TABLE支持一次DROP多个表
- 如果指定IF EXISTS,无论表存在与否,都会返回成功
- 如果不指定IF EXISTS 选项而表不存在,则返回异常:ERROR:table “xxx” does not exist.
修改表
仅支持重命名表(RENAME TABLE)和增加列(ADD CPLUMN)。对于外部表(foreign table)没有限制
-- 重命名表
ALTER TABLE table_name RENAME to new_table_name;
-- 增加列
ALTER TABLE IF EXISTS table_name ADD COLUMN new_column_name data_type;
增加注释
Holo支持给表,外表,列等增加注释的功能
-- 给表增加注释
COMMENT ON TABLE table_name IS 'my comments on table table_name';
-- 给列增加注释
COMMENT ON COLUMN table_name.col1 IS 'This my first col1';
-- 给外部表增加注释
COMMENT ON FOREIGN TABLE foreign_table IS 'comment on my foreign table';
模式(SCHEMA)
- 一个数据库可以包含多个schema
- 多个用户使用一个数据库不会互相干扰,也便于管理
- 每个DB有一个默认的public schema
- Holo支持create schema、alter schema rename 暂时不支持drop schema
-- 查看当前schema
SELECT current_schema();
-- 创建新的schema
CREATE SCHEMA my_schema;
-- 跨schema建表
CREATE TABLE my_schema.mytest (name text, id int, age int);
-- 原schema下的表将全部转到新schema下
ALTER SCHEMA oldschema rename to newschema;
分区表
PostgreSQL分区表用于将一张大表分成同构的若干张子表,利于加速查询、方便管理
-- 创建分区表
CREATE TABLE [IF NOT EXISTS] [schema_name.]table_name PARTITION OF parent_table FOR VALUES IN (string_literal);
-- 分离目标表的指定分区
ALTER TABLE [IF EXISTS] table_name DETACH PARTITION partition_name;
-- 删除分区表
DROP T

本文详细介绍了SQL的基础知识,包括创建和删除数据库、表,以及DML操作如插入、删除和更新。还探讨了分区表、外部表的概念,数据类型转换,以及如何创建和删除视图。此外,文章还深入到SQL的高级特性,如存储属性设置(如行/列存储、聚簇键、分段键等)和性能调优策略,如数据生命周期管理(TTL)和执行计划分析。
最低0.47元/天 解锁文章
1308

被折叠的 条评论
为什么被折叠?



