【COLUMN】设置表字段默认值仅对未来生效
提问:设置表字段的默认值是否会对已有数据数据进行调整?回答此类问题最有效的方法就是“实践”。设计一个实验进行验证,然后再从原理上进行理解。印象将会深刻。
回答:设置表字段的默认值不会对已有数据数据进行调整,只会影响未来字段内容。
1.创建测试表T并初始化数据
sec@ora10g> create table t (x number,y number);
Table created.
sec@ora10g> insert into t values (1,null);
1 row created.
sec@ora10g> select * from t;
X Y
---------- ----------
1
2.调整T表的X字段的默认值为5000
sec@ora10g> alter table t modify (y default 5000);
Table altered.
3.验证对现有数据的影响
sec@ora10g> select * from t;
X Y
---------- ----------
1
可见,对原有的Y值没有影响,之前是NULL值,现在仍然是NULL值。
4.测试对新插入的数据的效果
sec@ora10g> insert into t(x) values (2);
1 row created.
sec@ora10g> commit;
Commit complete.
sec@ora10g> select * from t;
X Y
---------- ----------
1
2 5000
新加入的数据的Y值已经被初始化为默认值5000。
5.小结
到此,通过一个非常简单的实验便对可能存在的“疑问”以自问自答的形式处理完毕。结论是,当设置表字段的默认值不会对已有数据数据进行调整,只会影响未来字段内容。
分享到:
相关推荐
修改默认值只对新插入的数据生效,已有数据不受影响。 - **删除表字段**: Oracle提供两种方式:`DROP COLUMN`和`SET UNUSED`。如果字段还有数据,先设置为未使用,然后删除: ```sql ALTER TABLE table_name ...
但需要注意,initrans每个槽占用24Bytes空间,且不可超过10,同时initrans的修改只对新数据块生效。 3. **列设计**: - 使用`CHAR`类型表示定长字符,`VARCHAR2`表示不定长字符,以提高查询效率。`CHAR`类型会用...
oracle学习文档 笔记 全面 深刻 详细 通俗易懂 doc word格式 清晰 第一章 Oracle入门 一、 数据库概述 数据库(Database)是按照数据结构来组织、存储和管理数据的仓库,它产生于距今五十年前。简单来说是本身可视...
ORACLE常用命令 一、ORACLE的启动和关闭 1、在单机环境下 要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>svrmgrl SVRMGR>connect internal SVRMGR>startup ...
- **ORACLE_HOME:** 设置为 Oracle 安装路径。 - **ORACLE_SID:** 设置为实例名称。 **1.3 管理工具** - **SQL*Plus:** 命令行工具,用于执行 SQL 语句和脚本。 - **Enterprise Manager:** 图形化管理工具,...
通过使用 `update` 参数,可以方便地管理数据库中的各种对象,例如添加字段、设置默认值、增加外键等。 1. **增加字段** ```sql ALTER TABLE t_zhang ADD address VARCHAR(255) NULL; ``` 对应的 changelog.xml...
需要注意的是,此设置只对新创建的表生效,对于之前已经存在的空表仍然无法导出。因此,如果需要导出这些旧的空表,只能采用第一种方法。 #### 二、Oracle 11G数据库的导出工具:`EXP` `EXP`是Oracle提供的一种...
要想启动或关闭ORACLE系统必须首先切换到ORACLE用户,如下 su - oracle a、启动ORACLE系统 oracle>sqlplus SQL>connect internal SQL>startup SQL>quit b、关闭ORACLE系统 oracle>sqlplus SQL>connect internal ...