Để 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ả: