PostgreSQL相关系列文章,主要参考PostgreSQL官方文档(14)和SQL基础教程(第二版),基础案例借鉴SQL基础教程,非常不错的SQL书籍,可以在图灵社区购买阅读。

1. 创建表create table

1.1 建表语法

最简单最基础的建表语法:

CREATE TABLE <表名>( 
    <列名1> <数据类型> <该列所需约束>,
    <列名2> <数据类型> <该列所需约束>,
    <列名3> <数据类型> <该列所需约束>,
    <列名4> <数据类型> <该列所需约束>,
    .
    .
    .
    <该表的约束1>, <该表的约束2>,……
);

常规版本建表语法:

CREATE [ [ GLOBAL | LOCAL ] { TEMPORARY | TEMP } | UNLOGGED ] TABLE [ IF NOT EXISTS ] table_name ( [
  { column_name data_type [ COMPRESSION compression_method ] [ COLLATE collation ] [ column_constraint [ ... ] ]
    | table_constraint
    | LIKE source_table [ like_option ... ] }
    [, ... ]
] )
[ INHERITS ( parent_table [, ... ] ) ]
[ PARTITION BY { RANGE | LIST | HASH } ( { column_name | ( expression ) } [ COLLATE collation ] [ opclass ] [, ... ] ) ]
[ USING method ]
[ WITH ( storage_parameter [= value] [, ... ] ) | WITHOUT OIDS ]
[ ON COMMIT { PRESERVE ROWS | DELETE ROWS | DROP } ]
[ TABLESPACE tablespace_name ]

下面通过具体案例,来逐个分解整个建表语法

1.2 案例1: 商品表(基础建表)

下面图片为实际数据,下面的建表语句也只是居于目前的数据8条数据进行建表,未考虑后续数据增加的问题。

最终数据呈现效果

步骤一:确定字段名称和类型,以及限制

| 字段含义 | 字段名称 | 数据类型 | 限制 | | -------- | -------------- | ------------------------------------------------- | ---------- | | 商品编号 | product_id | 固定为4位编号,以000开始,不可以为数值型,char(4) | 不允许为空 | | 商品名称 | product_name | 中文字符串,有长有短,varchar(100) | 不允许为空 | | 商品种类 | product_type | 中文字符串,有长有短,varchar(32) | 不允许为空 | | 销售单价 | sale_price | 整数,integer | 不允许为空 | | 进货价格 | purchase_price | 整数,integer | 允许为空 | | 登记日期 | regist_date | 日期相关数据,只保留日期,date | 允许为空 |

步骤二:编写SQL语句

create table product(
	product_id char(4) not null,
    product_name varchar(100) not null,
    purchase_type varchar(32) not null,
    sale_price integer not null,
    purchase_price integer,
    regist_date date,
    primary key (product_id)
);

1.3 案例2:待补充。。。

2. 删除表drop table

删除表语法

drop table <table_name>;

删除有风险,动手需谨慎。

线上数据删除流程:

  1. 删除权限收缩,避免随意删除,以及误删除。

  2. 先调整表名,观察3~7天,观察系统是否会因为表变更名字,造成系统程序错误。

  3. 删除之前,先备数据,保留3个月到半年,防止后续需要历史数据,binlog日志无法恢复。

  4. 非线上高峰期删除数据表。

参考资料:

  1. SQL基础教程第二版-图灵社区
  2. https://www.postgresql.org/docs/14/sql-createtable.html