【Oracle】修改表结构

目录

创建示例1:添加一个或多个列

创建示例2:修改列定义

创建示例3: 删除一列或多列

创建示例4:重命名列

创建示例5:重命名表

创建示例1:添加一个或多个列

-----语法:将新列添加到表中
ALTER TABLE table_name ADD column_name type constraint;
-----示例:创建一列
ALTER TABLE scott.stuinfo ADD brithdate DATE NOT NULL(错误:会报错ORA-01758)
ALTER table scott.stuinfo ADD brithdate Date DEFAULT '' NOT NULL;(正确)
【Oracle】修改表结构_第1张图片
以下默认值没有尝试成功:
【Oracle】修改表结构_第2张图片
【Oracle】修改表结构_第3张图片
添加成功如下:
【Oracle】修改表结构_第4张图片
-----语法:将新列添加到表中
ALTER TABLE table_name ADD ( column_name type constraint, column_name type constraint, ... ); 
-----示例:创建多列
ALTER TABLE scott.stuinfo ADD (phone VARCHAR(20), email VARCHAR(100))
【Oracle】修改表结构_第5张图片

创建示例2:修改列定义

-----语法:修改单个列
ALTER TABLE table_name MODIFY column_name type constraint; 
-----示例:在BRITHDATE列填写数据,在执行该语句,设置之后,日期数据并没有变空,但是执行成功了。
ALTER table scott.stuinfo MODIFY BrithDate DATE NULL
【Oracle】修改表结构_第6张图片
-----语法:修改多个列
ALTER TABLE table_name MODIFY ( column_1 type constraint, column_1 type constraint, ...);
-----示例:
ALTER table scott.stuinfo MODIFY (phone VARCHAR2(20) NOT NULL, email VARCHAR2(255) NOT NULL); (报错:ORA-02296)
-----解决:将表中的phone和email列填入数据,即可完成修改,且修改后不能再执行该语句,否则会报错ORA-01442。
ORA-02296错误表明你正在尝试启用一个约束,而数据库表中存在空值。空值不符合约束要求,因此,无法启用约束。
要解决ORA-02296错误,你需要解决表中的空值。 你可以更新表中的每个null值,使其符合约束要求,也可以使用Alter命令删除NOT NULL约束以及其他任何约束,并尝试重新将其添加。
【Oracle】修改表结构_第7张图片
【Oracle】修改表结构_第8张图片
【Oracle】修改表结构_第9张图片

创建示例3: 删除一列或多列

-----语法:删除一列
ALTER TABLE table_name DROP COLUMN column_name; 
-----示例:brithdate列已被删除
ALTER TABLE scott.stuinfo DROP COLUMN brithdate;
【Oracle】修改表结构_第10张图片
-----语法:删除多列
ALTER TABLE table_name DROP (column_1,column_2,...); 
-----示例:email和phone列已按预期删除。
ALTER TABLE scott.stuinfo DROP(phone,email);
【Oracle】修改表结构_第11张图片

创建示例4:重命名列

-----语法:重命名一列
ALTER TABLE table_name RENAME COLUMN column_name TO new_name; 
-----示例:将sex列重命名为stusex列:
ALTER TABLE scott.stuinfo RENAME COLUMN sex TO stusex;
【Oracle】修改表结构_第12张图片

创建示例5:重命名表

-----语法:将一个表重命名为一个新的name的表名
ALTER TABLE table_name RENAME TO new_table_name;
-----示例:将stuinfo表重命名为studentinfo表,再次查看studentinfo表信息
ALTER TABLE stuinfo RENAME TO studentinfo;//不能带用户名scott
【Oracle】修改表结构_第13张图片

你可能感兴趣的:(数据库,oracle,开发语言)