[Oracle]取Oracle_表名_字段名_注释等实用语句

数据库相关博客链接分享
博客提供了一个链接 http://xin73678.iteye.com/blog/1008546 ,原标签为数据库,推测该链接内容与数据库相关。
<think>我们被要求在cp_pipe_plan中增加一个字段small_PLAN_TYPE,类型未指定,但根据字段名可能是一个字符串类型(如示小的计划类型编码)。 考虑到Oracle字符串类型的常用选择,我们可以提供几种方案(如CHAR, VARCHAR2等),但需要根据实际业务需求决定。 这里给出一个通用的添加列的SQL语句,并假设为VARCHAR2类型,同时给出一些注意事项。 注意:字段名small_PLAN_TYPE,Oracle默认存储为大写,但我们在SQL语句中可以使用双引号来保持大小写,不过通常建议使用大写。 根据常见规范,我们使用大写字段名,但用户输入的是大小写混合,Oracle会存储为大写(除非用双引号)。这里避免使用双引号,因此实际字段名会变成大写(SMALL_PLAN_TYPE)。 如果需要保持原大小写,需要用双引号包裹,但这样在查询时也必须使用双引号,通常不推荐。 我们假设使用VARCHAR2类型,长度设为30(根据需求可调整),并设置默认值和注释。 操作步骤: 1. 使用ALTER TABLE语句添加列。 2. 添加注释说明该列的用途。 注意:如果数据量很大,添加列可能会锁(在Oracle 11g及之前),在12c及以上可以使用online选项来减少锁的影响。 具体SQL: ```sql -- 添加列(假设类型为VARCHAR2,长度30,允许为空,默认值为空字符串,但建议根据业务设置默认值) ALTER TABLE cp_pipe_plan ADD small_plan_type VARCHAR2(30) DEFAULT '' NOT NULL; -- 或者如果允许NULL,可以去掉NOT NULL约束 -- 但通常业务字段建议设置NOT NULL并给默认值 -- 添加列注释 COMMENT ON COLUMN cp_pipe_plan.small_plan_type IS '小型计划类型标识'; ``` 注意事项: 1. 字段名:在Oracle中,如果没有用双引号,字段名会被自动转换为大写(即存储为SMALL_PLAN_TYPE)。如果应用程序代码中使用的字段名是大小写敏感的(如使用小写或驼峰),则必须用双引号包裹,例如: ```sql ALTER TABLE cp_pipe_plan ADD "small_PLAN_TYPE" VARCHAR2(30) ...; ``` 但这样在查询时必须使用双引号并保持相同的大小写,否则会报错。因此一般建议使用大写字段名。 2. 长度:根据实际业务需求调整长度,如果只是几个字符的编码,可以设置较短(如10)。 3. 默认值:设置默认值可以避免在插入时该列为空。这里设置为空字符串,如果业务需要其他默认值,请更改。 4. 非空约束:如果业务要求该列必须有值,则加上NOT NULL。否则可以去掉。 5. 如果很大,在11g中可以考虑先添加一个允许为空的列,然后分步骤更新默认值并添加非空约束,以减少锁时间。 考虑到上述因素,我们给出一个更通用的做法(避免锁问题,特别是大): 步骤1:添加允许为空的列(不设置默认值,这样不会更新现有数据,瞬间完成) 步骤2:更新该列为默认值(如果业务需要默认值) 步骤3:修改列为非空(如果需要) 但根据问题,我们直接写出一个SQL,如果不大,可以直接执行。 如果大且需要在线操作(Oracle 12c及以上): ```sql -- 12c及以上支持在线操作,避免长时间锁 ALTER TABLE cp_pipe_plan ADD small_plan_type VARCHAR2(30) DEFAULT '' NOT NULL ONLINE; ``` 最后,根据要求,我们需要在最后输出3-5个相关问题。 相关问题将围绕添加字段的注意事项、类型选择、性能影响等。 §§相关问题§§ 1. 在Oracle中为大添加非空字段时,如何避免长时间的锁? 2. 字段名Oracle中大小写敏感吗?如何正确设计字段名以避免查询错误? 3. 如何确定新增字符串类型字段的合适长度? 4. 为已有添加字段时,默认值的设置会对现有数据产生什么影响? 5. 在Oracle 11g中,如何实现添加带默认值且非空的字段而不造成锁阻塞? </think>### Oracle 添加字段操作指南 为 `cp_pipe_plan` 添加 `small_PLAN_TYPE` 字段的操作方案如下: ```sql -- 推荐方案:添加可变长度字符串字段 ALTER TABLE cp_pipe_plan ADD small_PLAN_TYPE VARCHAR2(20) DEFAULT 'DEFAULT' NOT NULL; -- 添加字段注释(强烈建议) COMMENT ON COLUMN cp_pipe_plan.small_PLAN_TYPE IS '小型计划类型分类编码'; ``` #### 关键设计说明: 1. **类型选择**: - `VARCHAR2(20)`:适合存储编码类数据(长度按需调整) - 备选方案:`CHAR(10)`(固定长度,适合长度完全一致的编码) 2. **约束设置**: - `DEFAULT 'DEFAULT'`:提供默认值避免空值问题 - `NOT NULL`:确保业务完整性(按需选择) - 可添加检查约束:`CHECK (small_PLAN_TYPE IN ('TYPE_A','TYPE_B'))` 3. **命规范**: - **注意**:Oracle 字段名默认存储为大写 - 实际存储称为 `SMALL_PLAN_TYPE`(推荐统一大写) - 如需保留大小写:使用双引号 `"small_PLAN_TYPE"` #### 执行注意事项: 1. **权限验证**: ```sql -- 检查当前用户权限 SELECT * FROM USER_SYS_PRIVS WHERE PRIVILEGE LIKE '%TABLE%'; ``` 2. **大优化**: - 如果数据量超过 1000 万行: ```sql ALTER TABLE cp_pipe_plan ADD small_PLAN_TYPE VARCHAR2(20) ONLINE; ``` - 使用 `ONLINE` 选项(Oracle 12c+)可减少锁时间 3. **字段验证**: ```sql -- 确认字段添加成功 SELECT column_name, data_type, data_length FROM user_tab_columns WHERE table_name = 'CP_PIPE_PLAN'; ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值