目录
第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

最低0.47元/天 解锁文章

800

被折叠的 条评论
为什么被折叠?



