Để thay đổi các thuộc tính của table trong PostgreSQL chúng ta sử dụng SQL Command là: ALTER TABLE
Syntax:
ALTER TABLE [ ONLY ] name [ * ] action [, ... ]
Một số action chỉnh sửa bảng CSDL
Thay đổi tên của Table
ALTER TABLE name RENAME TO new_name
Thay đổi schema của Table
ALTER TABLE name SET SCHEMA new_schema
Thay đổi tên column của Table:
ALTER TABLE [ ONLY ] name [ * ] RENAME [ COLUMN ] column TO new_column
Thêm column mới cho Table:
ALTER TABLE table_name ADD COLUMN new_column_name TYPE;
Xóa column của Table:
ALTER TABLE table_name DROP COLUMN column_name;
Danh sách đầy đủ các action:
ADD [ COLUMN ] column data_type [ COLLATE collation ] [ column_constraint [ ... ] ]
DROP [ COLUMN ] [ IF EXISTS ] column [ RESTRICT | CASCADE ]
ALTER [ COLUMN ] column [ SET DATA ] TYPE data_type [ COLLATE collation ] [ USING expression ]
ALTER [ COLUMN ] column SET DEFAULT expression
ALTER [ COLUMN ] column DROP DEFAULT
ALTER [ COLUMN ] column { SET | DROP } NOT NULL
ALTER [ COLUMN ] column SET STATISTICS integer
ALTER [ COLUMN ] column SET ( attribute_option = value [, ... ] )
ALTER [ COLUMN ] column RESET ( attribute_option [, ... ] )
ALTER [ COLUMN ] column SET STORAGE { PLAIN | EXTERNAL | EXTENDED | MAIN }
ADD table_constraint [ NOT VALID ]
ADD table_constraint_using_index
VALIDATE CONSTRAINT constraint_name
DROP CONSTRAINT [ IF EXISTS ] constraint_name [ RESTRICT | CASCADE ]
DISABLE TRIGGER [ trigger_name | ALL | USER ]
ENABLE TRIGGER [ trigger_name | ALL | USER ]
ENABLE REPLICA TRIGGER trigger_name
ENABLE ALWAYS TRIGGER trigger_name
DISABLE RULE rewrite_rule_name
ENABLE RULE rewrite_rule_name
ENABLE REPLICA RULE rewrite_rule_name
ENABLE ALWAYS RULE rewrite_rule_name
CLUSTER ON index_name
SET WITHOUT CLUSTER
SET WITH OIDS
SET WITHOUT OIDS
SET ( storage_parameter = value [, ... ] )
RESET ( storage_parameter [, ... ] )
INHERIT parent_table
NO INHERIT parent_table
OF type_name
NOT OF
OWNER TO new_owner
SET TABLESPACE new_tablespace
Một số ví dụ chỉnh sửa bảng CSDL (Alter Tables)
Chúng ta có bảng groups có cấu trúc hiện tại như sau:

Thêm column vào bảng
Thêm column có tên là “description” với kiểu dữ liệu là “text”
ALTER TABLE public.groups ADD COLUMN description text;
Kết quả:

Khác với MySQL, PostgreSQL không thể chỉ định vị trí khi thêm column vào 1 bảng. Cột sẽ được thêm vào vị trí cuối cùng của 1 bảng, để thay đổi vị trí của column mới thì bắt buộc các bạn phải tạo lại bảng CSDL.
Đổi tên bảng
Đổi tên bảng từ groups => new_groups
ALTER TABLE public.groups RENAME TO new_groups;
Kết quả:
