Oracle修改字段长度及属性
首发微信公众号:SQL数据库运维
Oracle数据库使用ALTER TABLE MODIFY语法,修改列定义。
语法
alter table table_name modify(column_name 字段类型);
Oracle允许执行多种操作,但主要有以下常用的操作:
修改数据列的可见性(可见或不可见)
修改字段允许或不允许null
修改字段长度
修改列的默认值
修改多个列语法如下:
ALTER TABLE table_nameMODIFY (column_name_1 字段类型,column_name_2 字段类型,...);
举例,仍然使用之前建立的数据库表及数据进行测试:Oracle中新建数据表的两种方法(点击前边文字跳转),不了解的自行跳转链接查看,这里就在列下建表及插入数据语句如下:
--实例建表stuinfo_01create table JT_CS.stuinfo_01(stuid varchar2(11) not null,--学号:'S'+班号(7位数)+学生序号(3位数)(不能为空)SC200101001stuname varchar2(50) not null,--学生姓名(不能为空)sex char(1) not null,--性别(不能为空)1(男)、2(女)age number(2) not null,--年龄(不能为空)classno varchar2(7) not null,--班号:'C'+年级(4位数)+班级序号(2位数)(不能为空)C200101stuaddress varchar2(100) default '地址未录入',--地址 (不填或为空时默认填入‘地址未录入‘)grade char(4) not null,--年级(不能为空)enroldate date,--入学时间idnumber varchar2(18) default '身份证未采集' not null--身份证(不能为空))--插入测试数据INSERT INTO JT_CS.STUINFO VALUES ('SC200101001','路飞','1','19','C200101','东海哥亚王国风车村','2001','2001/09/01','411428199602569201');INSERT INTO JT_CS.STUINFO VALUES ('SC200101002','索隆','1','21','C200101','东海霜月村','2001','2001/09/01','411428199602569202');INSERT INTO JT_CS.STUINFO VALUES ('SC200101003','娜美','2','20','C200101','可可西亚村','2001','2001/09/01','411428199602569203');INSERT INTO JT_CS.STUINFO VALUES ('SC200101004','乌索普','1','19','C200101','东海西罗布村','2001','2001/09/01','411428199602569204');INSERT INTO JT_CS.STUINFO VALUES ('SC200101005','山治','1','21','C200101','北海杰尔玛王国','2001','2001/09/01','411428199602569205');INSERT INTO JT_CS.STUINFO VALUES ('SC200101006','乔巴','1','15','C200101','磁鼓岛','2001','2001/09/01','411428199602569206');INSERT INTO JT_CS.STUINFO VALUES ('SC200101007','罗宾','2','30','C200101','奥哈拉','2001','2001/09/01','411428199602569207');INSERT INTO JT_CS.STUINFO VALUES ('SC200101008','弗兰奇','1','34','C200101','南海','2001','2001/09/01','411428199602569208');INSERT INTO JT_CS.STUINFO VALUES ('SC200101009','布鲁克','1','63','C200101','西海','2001','2001/09/01','411428199602569209');INSERT INTO JT_CS.STUINFO VALUES ('SC200101010','甚平','1','46','C200101','鱼人岛','2001','2001/09/01','411428199602569210');
查询结果数据如下:
SELECT * FROM JT_CS.STUINFO_01;

1、修改数据列的可见性(可见或不可见)
通常默认情况下,新建表在未有任何定义的情况下表列都是可见的。我们可以在创建表或使用ALTER TABLE MODIFY语句定义某些列不可见。
--以下语句将SEX列修改为不可见(适用于Oracle 12c)ALTER TABLE JT_CS.STUINFO_01MODIFY SEX INVISIBLE;--将不可见字段修改为可见(适用于Oracle 12c)ALTER TABLE JT_CS.STUINFO_01MODIFY SEX VISIBLE;
2. 修改字段允许或不允许null
准备测试数据(先制造出一个小问题)
--测试需要,先将原来的enroldate字段路飞的入学时间置空UPDATE JT_CS.STUINFO_01 SET enroldate='' WHERE STUID='SC200101001';
修改enroldate字段不予许为空 not null
--修改enroldate字段不予许为空 not nullALTER TABLE JT_CS.STUINFO_01MODIFY enroldate NOT NULL;
因为刚刚我们清空了“路飞”先生的入学时间,所以执行NOTNULL时系统提示错误,有空值存在,也就是说必须确保现有数据符合新约束(也就是说,如果原来数据中存在NULL是不行的)。

为了解决这个问题,首先我们需要将enroldate字段所有为空的列进行填充
--更新填充字段UPDATEJT_CS.STUINFO_01SETenroldate='2001-09-30' WHERE STUID='SC200101001' ;
然后改变enroldate列的约束:
--修改约束不允许为空(not null)ALTER TABLE JT_CS.STUINFO_01MODIFY enroldate NOT NULL;
3. 修改字段长度
--将身份证号字段长度大小扩充到20ALTER TABLE JT_CS.STUINFO_01 MODIFY IDNUMBER VARCHAR2(20);
注意:要缩短或扩充列的大小,请确保列中的所有数据都符合新的大小,否则语句将无法进行执行。
4. 修改列的默认值
添加一个名为status的新列,默认值为1到JT_CS.STUINFO_01表中
--添加一个新列,然后默认值设置成 1ALTER TABLE JT_CS.STUINFO_01 ADD status NUMBER( 1, 0 ) DEFAULT 1 NOT NULL ;

将添加的新列status的默认值修改为0
--设置成默认值0ALTER TABLE JT_CS.STUINFO_01 MODIFY status DEFAULT 0;
插入一条新数据进行测试
--按指定的字段插入数据INSERT INTO JT_CS.STUINFO_01 ( STUID, STUNAME, SEX, AGE, CLASSNO, STUADDRESS, GRADE, ENROLDATE, IDNUMBER) VALUES ('SC200101011','萨博','1','46','C200101','鱼人岛','2000','2001/09/01','411428199602569211');
结果查询

点击关注“SQL数据库运维”,后台或浏览至公众号文章底部点击“发消息”回复关键字:进群,带你进入高手如云的技术交流群。后台回复关键字:SQL,获取学习资料
动动小手点击加关注呦☟☟☟
Oracle修改字段长度及属性的更多相关文章
- Oracle修改字段长度以及计算天数
sql修改字段长度的语法: alter table 表名 modify 字段名 字段类型; sql修改字段长度的示例代码 alter table qtline modify qtl_bidernote ...
- oracle修改字段长度
alter table 表名 modify (字段名 字段类型长度);alter table cachemsg modify (callernum varchar(40));
- Oracle修改字段类型和长度
Oracle修改字段名 alter table 表名 rename column 旧字段名 to 新字段名 Oracle修改字段类型和长度 alter table 表名 modify 字段名 数据类型 ...
- Oracle 批量修改字段长度
Oracle 批量修改字段长度 SELECT 'alter table '||a.table_name||' MODIFY '||A.COLUMN_NAME||' VARCHAR2(100);' ...
- 【转】SQL修改字段长度
语法: alter table <表名> alter column <字段名> 新类型名(长度) 示例:假如有名T1,字段名F1,原来F1为varchar(3),现在要改为va ...
- sql语句修改字段长度
sql语句修改字段长度 alter table <表名> alter column <字段名> 新类型名(长度) 例: alter table students alter c ...
- SQL语句修改表字段名/修改字段长度/增加字段/删除字段
修改字段名Exec sp_rename 'zxchem_Suggest.End_Date','Yj_Finish_Date','Column' 修改字段长度Alter Table zxchem_Sug ...
- Mysql 修改字段长度、修改列名、新增列
alter table 表名 modify column 字段名 类型; 例如 数据库中user表 name字段是varchar(30) 可以用 ) ; --修改字段长度 )--修改表列名 ); -- ...
- sql 修改字段长度以及其他属性
修改字段长度 语法 :alter table <表名> alter column <字段名> 新类型名(长度) alter table LoaneeExpand alt ...
- mysql 修改字段长度
mysql 修改字段长度 alter table news modify column title varchar(130); alter table 表名 modify column 字段名 类型 ...
随机推荐
- jQuery AJAX 常见属性
1 jQuery.ajax(...) 2 部分参数: 3 url:请求地址 4 type:请求方式,GET.POST(1.9.0之后用method) 5 headers:请求头 6 data:要发送的 ...
- SQLite数据库(来自菜鸟教程)
SQLite是什么?为什么要用SQLite?SQLite有什么特点? 答:下面请听小猪娓娓道来: ①SQLite是一个轻量级的关系型数据库,运算速度快,占用资源少,很适合在移动设备上使用, 不仅支持标 ...
- #网络流,树状数组#JZOJ 4020 Revolution with JZOJ 4018 Magic
CF297E Mystic Carvings=JZOJ 4018 Magic JZOJ 4020 Revolution 题目 有一个\(n*m(n,m\leq 20)\)的网格图 这格子有收益当且仅当 ...
- #SPFA,动态规划#洛谷 1772 [ZJOI2006]物流运输
题目 分析 改变航线可以通过费用提前计算实现, 这样就不用增加次数这一维,也没有必要, 设\(dp[i]\)表示前\(i\)天的总费用 那么\(dp[i]=\min\{dp[j-1]+(i-j+1)* ...
- C# 介绍、应用领域、入门、语法、输出和注释详解
什么是 C#? C#(发音为"C-Sharp")是一种由 Microsoft 创建的面向对象的编程语言,运行在 .NET Framework 上.源于 C 家族,与流行的语言如 C ...
- AI云增强升级!还原生动人像,拍出质感照片
近期不少细心用户发现,在用HUAWEI Mate 60 Pro手机拍照后,使用相册中的AI云增强功能,照片变得更加细腻有质感.这是因为AI云增强升级并更新支持了人像模式拍摄的照片,高清自然的人像细节还 ...
- mysql交集查询按照时间范围查询myBatis
查询 开始时间 --结束时间 <if test="searchParam.startTime != null and searchParam.endTime != null" ...
- openGauss2.1.0在openEuler 20.03 LTS SP2 安装后,yum无法使用的问题解决
openGauss2.1.0 在 openEuler 20.03 LTS SP2 安装后,yum 无法使用的问题解决 一.环境描述 操作系统: openEuler 20.03 LTS openEule ...
- openGauss3.1.0 版本的gs_stack功能解密
openGauss3.1.0 版本的 gs_stack 功能解密 不管是测试还是研发,工作中总有遇到各种各样的问题.比如,你有没有遇到过在数据库中执行某个 SQL,却一直不返回结果,这时候的你是不是非 ...
- 7月27日19:30直播预告:HarmonyOS3及华为全场景新品发布会
7月27日 19:30 HarmonyOS 3 及华为全场景新品发布会 高能来袭! 在HarmonyOS开发者社区企微直播间 一起见证HarmonyOS的又一次智慧进化 扫码预约直播,与您不见不散!