学习目标:学习openGuass数据库中如何对表进行修改
1.创建表,为表添加字段
2.删除表中的已有字段
3.删除表的已有约束、添加约束
4.修改表字段的默认值
5.修改表字段的数据类型
6.修改表字段的名字
7.修改表的名字
8.删除表
修改表的相关语法
ALTER TABLE修改表,包括修改表的定义、重命名表、重命名表中指定的列、重命名表的约束、设置表的所属模式、添加/更新多个列、打开/关闭行访问控制开关。
当一条语句下有多条子命令时,drop index和rename index会优先其他子命令执行,这两种命令的优先级一致。
修改表的定义。
ALTER TABLE [ IF EXISTS ] { table_name [*] | ONLY table_name | ONLY ( table_name ) }
action [, ... ];
删除表的相关语法
DROP TABLE删除指定的表。
DROP TABLE会强制删除指定的表,删除表后,依赖该表的索引会被删除,而使用到该表的函数和存储过程将无法执行。删除分区表,会同时删除分区表中的所有分区。
表的所有者、被授予了表的DROP权限的用户或被授予DROP ANY TABLE权限的用户,有权删除指定表 ,系统管理员默认拥有该权限。
DROP TABLE [ IF EXISTS ]
{ [schema.]table_name } [, ...] [ CASCADE | RESTRICT ] [ PURGE ];
参数说明
IF EXISTS如果指定的表不存在,则发出一个notice而不是抛出一个错误。
schema模式名称。
table_name表名称。
CASCADE | RESTRICT
CASCADE:级联删除依赖于表的对象(比如视图)。
RESTRICT(缺省项):如果存在依赖对象,则拒绝删除该表。这个是缺省。
PURGE该参数表示即使开启回收站功能,DROP表时,也会直接物理删除表,而不是将其放入回收站中。
--首先创建一张测试表。
drop table if exists table16;
create table table16(
id bigint,
name varchar(50) not null,
age int default 20,
primary key(id)
);
2.为表添加字段
--查看表table16的信息
\d table16
--为表table16新增一列,列名为sex,数据类型为Boolean:
alter table table16 add column sex Boolean;
--执行下面gsql命令,查看表table16的信息
\d table16
3.删除表中的已有字段
--执行下面的SQL语句,删除刚刚添加的列sex:
alter table table16 drop column sex ;
--执行下面gsql命令,再次查看表table16的信息
\d table16
删除表的已有约束
--表table16上有一个名叫table16_pkey的PRIMARY KEY约束。执行下面的SQL语句,删除这个约束:
alter table table16 drop constraint table16_pkey;
--执行下面的gsql命令,再次查看表table16的信息:
\d table16
--或直接查看约束是否被删除
select * from pg_constraint where conname like 'table16_pkey';
5.为表添加约束
--执行下面的SQL命令,为表table16添加刚刚删除的主键约束:
alter table table16 add constraint table16_pkey primary key(id);
--再次查看表table16的信息:
select * from pg_constraint where conname like 'table16_pkey';
\d table16
6.修改表字段的默认值
--执行下面的SQL语句,将age的默认值变更为25
alter table table16 alter column age set default 25;
\d table16
7.修改表字段的数据类型
alter table table16 ALTER COLUMN age TYPE bigint;
\d table16
8.修改表字段的名字
ALTER TABLE table16 RENAME COLUMN age TO stuage;
\d table16
9.修改表的名字
--修改表的名字。执行下面的SQL语句,将表table16的名字变更为mytable16:
ALTER TABLE table16 RENAME TO mytable16;
\d mytable16
10.删除表
DROP TABLE mytable16;




