OpenGauss数据库-A.修改表及约束

目录

第1关:修改表名

任务描述

相关知识

编程要求

测试说明

代码

第2关:添加与删除字段(列)

任务描述

相关知识

编程要求

测试说明

代码

第3关:修改字段(列)类型

任务描述

相关知识

编程要求

测试说明

代码

第4关:添加、删除与修改约束

任务描述

相关知识

主码的删除与添加

外码的删除与添加

Check约束的删除与添加

Unique约束的删除与添加

编程要求

测试说明

代码


第1关:修改表名

任务描述

本关任务:修改表的名称。 本实验将介绍Alter table语句的大部分功能和修改表结构(添加列、约束,删除列、约束,修改列)等基础知识,这些知识将在接下来的实验中排上用场。

相关知识

修改表,包括更改表的名称,删除表中的列、约束,为表添加新的列、约束,修改名中列的名称、数据类型和约束等操作,均通过Alter Table语句来实现。

为了完成本关任务,你需要掌握: 1.Alter Table语句及其作用; 2.如何更改表名。

ALTER TABLE语句 Alter Table语句用于修改由Create Table语句创建的表的结构。比如,添加或删除列,添加或删除约束,创建或销毁索引,更改列的数据类型,更改列名甚至表名等。

ALTER TABLE的完整语法较复杂,这里仅介绍简化后的语法:

ALTER TABLE 表名 [修改事项 [, 修改事项] ...] 可见,在一条ALTER TABLE语句里,可以同时对表作多项修改。可选的修改事项有很多,常用的有:

修改事项 ::= ADD [COLUMN] 列名 数据类型 [列约束] [FIRST | AFTER col_name] | ADD {INDEX|KEY} [索引名] [类型] (列1,...) | ADD [CONSTRAINT [约束名]] 主码约束 | ADD [CONSTRAINT [约束名]] UNIQUE约束 | ADD [CONSTRAINT [约束名]] 外码约束 | ADD [CONSTRAINT [约束名]] CHECK约束 | DROP {CHECK|CONSTRAINT} 约束名 | ALTER [COLUMN] 列名 {SET DEFAULT {常量 | (表达式)} | DROP DEFAULT} | CHANGE [COLUMN] 列名 新列名 数据类型 [列约束] [FIRST | AFTER col_name] | DROP [COLUMN] 列名 | DROP {INDEX|KEY} 索引名 | DROP PRIMARY KEY | DROP FOREIGN KEY fk_symbol | MODIFY [COLUMN] 列名 数据类型 [列约束] [FIRST | AFTER col_name] | RENAME COLUMN 列名 TO 新列名 | RENAME {INDEX|KEY} 索引名 TO 新索引名 | RENAME TO 新表名 归纳一下,修改事项主要有:

用ADD关键词添加列和约束(主码、外码、CHECK、UNIQUE等约束); 用DROP关键词删除列、约束和索引(含Unique); 用MODIFY关键词修改列的定义(数据类型和约束); 用RENAME关键词修改列、索引和表的名称; 用CHANGE关键词修改列的名称,同时还可以修改其定义(类型和约束)。 需要说明的是:

注意RENAME,MODIFY和CHANGE的区别:仅改列名,用RENAME; 只改数据类型不改名,用MODIFY; 既改名又改数据类型,用CHANGE。 在用MODIFY,CHANGE更改列的数据类型和约束时,修改后的CHECK约束并不会生效。但用ADD新增列的CHECK约束,是有效的。另外,用ADD新增的CHECK约束,也会生效。 删除主码约束只能用Drop Primary Key短语,不能使用drop constraint短语,即便在创建主码约束时显式命名了该主码约束。试图使用“drop constraint 主码约束名”短语删除主码,会给出错误提示,显示该约束并不存在。 给已有列增加Default约束,可用“alter 列 set default ...”短语;删除列的default约束,可用“alter 列 drop default”短语。当然,也可以用“Modify 列名 数据类型 ...”短语。如果该短语没有default约束,就相当于删除了原来的default约束,如果该短语带有default约束,就相当于添加了default约束,如果之前已有default约束,则新的Default约束将代替原有的Default约束; 删除unique约束,既可用“drop constraint 约束名”短语,也可以用“drop key 索引名”短语来实现,唯一性(unique)约束实际是用Unique索引来实现的,Unique索引的名字总是与Unique约束名完全一样,它们本就是同一套机制。如果没有显式命名的话,Unqiue索引名或者说Unique约束名一般与列同名(组合属性作索引,则与组合属性中的第1列同名)。但要注意是的,在更改列名后,Unique索引名并不会随之更改。在创建Unqiue约束时,用“constriant”短语给约束取一个有意义的名字,是一个值得推荐的习惯。 如何更改表名 根据前面介绍的alter table语句的相关内容,易知更改表名的语句如下: alter table 表名 rename TO 新表名

编程要求

数据库GaussDB中已经有表old_table,请根据提示,在右侧代码文件编辑窗中添加恰当的语句,将表名old_table更改为new_table。

确信语句无误后,请点击“评测”按扭开始评测。 偶尔会发生评测时连不上OpenGauss的情形,(failed to connect Unknown:5432.),一般多试几次就可以了。

测试说明

平台会运行带个代码文件中的全部代码,然后检查运行后的结果是否与预期的结果完全一致。

代码

----请在以下空白处添加恰当的语句,将表名old_table更改为new_table:
--直接编写相应的SQL语句,测评时系统会连接数据库,无需在此连接数据库,余下的实验都是如此

ALTER TABLE old_table 
    RENAME TO new_table;

第2关:添加与删除字段(列)

任务描述

本关任务:为表添加和删除字段。

相关知识

为了完成本关任务,你需要掌握: 1.ALTER TABLE语句的用法; 2.如何给表添加字段; 3.如何删除表中已有的字段。

Alter Table 语句 Alter Table语句用于修改由Create Table语句创建的表的结构。比如,添加或删除列,添加或删除约束,创建或销毁索引,更改列的数据类型,更改列名甚至表名等。

在上一个实验中,我们已经介绍过该语句的用法,这里就不再赘述了,直接回顾该语句的语法:

ALTER TABLE 表名 [修改事项 [, 修改事项] ...] 可选的修改事项有:

修改事项 ::= ADD [COLUMN] 列名 数据类型 [列约束] [FIRST | AFTER col_name] | ADD {INDEX|KEY} [索引名] [类型] (列1,...) | ADD [CONSTRAINT [约束名]] 主码约束 | ADD [CONSTRAINT [约束名]] UNIQUE约束 | ADD [CONSTRAINT [约束名]] 外码约束 | ADD [CONSTRAINT [约束名]] CHECK约束 | DROP {CHECK|CONSTRAINT} 约束名 | ALTER [COLUMN] 列名 {SET DEFAULT {常量 | (表达式)} | DROP DEFAULT} | CHANGE [COLUMN] 列名 新列名 数据类型 [列约束] [FIRST | AFTER col_name] | DROP [COLUMN] 列名 | DROP {INDEX|KEY} 索引名 | DROP PRIMARY KEY | DROP FOREIGN KEY fk_symbol | MODIFY [COLUMN] 列名 数据类型 [列约束] [FIRST | AFTER col_name] | RENAME COLUMN 列名 TO 新列名 | RENAME {INDEX|KEY} 索引名 TO 新索引名 | RENAME [TO] 新表名 如何给表添加字段 随着业务发展的需要,可能需要在原有表结构的基础上添加新的字段,由于建表时的疏忽,遗漏了某个字段,也需要将遗漏的列添加到表结构中。给表添加字段的语法是:

ALTER TABLE 表名 ADD [COLUMN] 列名 数据类型 [列约束] [FIRST | AFTER 列名]

在alter table语句中指定表名,接着用关键字add column

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小柒_02

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值