- VisualStudio2022插件的安装及使用-编程手把手系列文章
- pprof-在现网场景怎么用
- C#实现的下拉多选框,下拉多选树,多级节点
- 【学习笔记】基础数据结构:猫树
首发微信公众号:SQL数据库运维 。
原文链接:https://mp.weixin.qq.com/s?__biz=MzI1NTQyNzg3MQ==&mid=2247486117&idx=1&sn=02e2cd05e5db7eaa5758c70e81cf3972&chksm=ea375ed5dd40d7c367727562bdb00788f3bd139cbbda377f599586a47ce13ad9d04c56fd4d2d&token=1479964665&lang=zh_CN#rd 。
alter table table_name modify(column_name 字段类型);
Oracle允许执行多种操作,但主要有以下常用的操作:
修改数据列的可见性(可见或不可见) 。
修改字段允许或不允许null 。
修改字段长度 。
修改列的默认值 。
。
修改多个列语法如下:
ALTER TABLE table_name
MODIFY (
column_name_1 字段类型,
column_name_2 字段类型,
...
);
。
举例,仍然使用之前建立的数据库表及数据进行测试:Oracle中新建数据表的两种方法(点击前边文字跳转),不了解的自行跳转链接查看,这里就在列下建表及插入数据语句如下:
--实例建表stuinfo_01
create table JT_CS.stuinfo_01
(
stuid varchar2(11) not null,--学号:'S'+班号(7位数)+学生序号(3位数)(不能为空)SC200101001
stuname varchar2(50) not null,--学生姓名(不能为空)
sex char(1) not null,--性别(不能为空)1(男)、2(女)
age number(2) not null,--年龄(不能为空)
classno varchar2(7) not null,--班号:'C'+年级(4位数)+班级序号(2位数)(不能为空)C200101
stuaddress 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_01
MODIFY SEX INVISIBLE;
--将不可见字段修改为可见(适用于Oracle 12c)
ALTER TABLE JT_CS.STUINFO_01
MODIFY SEX VISIBLE;
2. 修改字段允许或不允许null 。
准备测试数据(先制造出一个小问题) 。
--测试需要,先将原来的enroldate字段路飞的入学时间置空
UPDATE JT_CS.STUINFO_01 SET enroldate='' WHERE STUID='SC200101001';
修改enroldate字段不予许为空 not null 。
--修改enroldate字段不予许为空 not null
ALTER TABLE JT_CS.STUINFO_01
MODIFY enroldate NOT NULL;
因为刚刚我们清空了“路飞”先生的入学时间,所以执行NOTNULL时系统提示错误,有空值存在,也就是说必须确保现有数据符合新约束(也就是说,如果原来数据中存在NULL是不行的).
为了解决这个问题,首先我们需要将enroldate字段所有为空的列进行填充 。
--更新填充字段
UPDATE
JT_CS.STUINFO_01
SET
enroldate='2001-09-30' WHERE STUID='SC200101001' ;
然后改变enroldate列的约束:
--修改约束不允许为空(not null)
ALTER TABLE JT_CS.STUINFO_01
MODIFY enroldate NOT NULL;
3. 修改字段长度 。
--将身份证号字段长度大小扩充到20
ALTER TABLE JT_CS.STUINFO_01 MODIFY IDNUMBER VARCHAR2(20);
注意:要缩短或扩充列的大小,请确保列中的所有数据都符合新的大小,否则语句将无法进行执行.
4. 修改列的默认值 。
添加一个名为status的新列,默认值为1到JT_CS.STUINFO_01表中 。
--添加一个新列,然后默认值设置成 1
ALTER TABLE JT_CS.STUINFO_01 ADD status NUMBER( 1, 0 ) DEFAULT 1 NOT NULL ;
将添加的新列status的默认值修改为0 。
--设置成默认值0
ALTER 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修改字段长度及属性的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。
在有些场景下,我们需要对我们的varchar类型的字段做修改,而修改的结果为两个字段的拼接或者一个字段+字符串的拼接。 如下所示,我们希望将xx_role表中的name修改为name+id。
SELECT incMonth as Month, SUM( IF(item_type IN('typ1', 'typ2') AND incMonth = Month, 1, 0 ) )AS
我最近读到 volatile 字段是线程安全的,因为 When we use volatile keyword with a variable, all the threads read its va
我在一些模型中添加了一个 UUID 字段,然后使用 South 进行了迁移。我创建的任何新对象都正确填充了 UUID 字段。但是,我所有旧数据的 UUID 字段为空。 有没有办法为现有数据填充 UUI
刚刚将我的网站从 mysql_ 更新为 mysqli,并破坏了之前正常运行的查询。 我试图从旋转中提取 id,因为它每次都会增加 1,但我不断获取玩家 id,有人可以告诉我我做错了什么吗?我尝试了将
我在 Mac OS X 上使用带有 Sequel Pro 的 MySQL。我想将一个表中的一个字段(即名为“GAME_DY”的列)复制到另一个名为“DAY_ID”的表的空字段中。两个表都是同一数据库的
问题: 是否有可能有一个字段被 JPA 保留但被序列化跳过? 可以实现相反的效果(JPA 跳过字段而序列化则不会),如果使用此功能,那么相反的操作肯定会很有用。 类似这样的事情: @Entity cl
假设我有一个名为“dp”的表 Year | Month | Payment| Payer_ID | Payment_Recipient | 2008/2009 | July
我将尝试通过我的 Raspberry Pi 接入点保证一些 QoS。 开始之前,我先动手:我阅读了有关 tcp、udp 和 ip header 的内容。在IP header description我看
如果你能弄清楚如何重命名这个问题,我愿意接受建议。 在 Dart 语言中,可以编写一个带有 final 字段的类。这些是只能设置的字段构造函数前 body 跑。这可以在声明中(通常用于类中的静态常量)
你怎么样? 我有两个带有两个字段的日期选择器 我希望当用户选择 (From) 时,第二个字段 (TO) 将是 next day 。比如 booking.com 例如:当用户选择From 01-01-2
我想我已经看到了这个问题的一些答案,这些答案可能与我需要的相差不远,但我对 mysql 的了解还不够确定,所以我会根据我的具体情况提出问题。 我有一个包含多个表的数据库,为此,如果“image”表上的
我在 mySQL 数据库中有 2 个表: customers ============ customer_id (1, 2 ) customer_name (john, mark) orders ==
我正在开发一个员工目标 Web 应用程序。 领导/经理在与团队成员讨论后为他们设定目标。这是一年/半年/季度,具体取决于组织遵循的评估周期。 现在的问题是添加基于时间段的字段或存档上一季度/年度数据的
我正在寻找允许内容编辑器从媒体库中选择多个文件的东西,这些文件将在渲染中列出。他们还需要能够上传文件和搜索。它必须在页面编辑器(版本 8 中称为体验编辑器)中工作。 到目前为止我所考虑的: 一堆文件字
现在,我有以下由 original.df %.% group_by(Category) %.% tally() %.% arrange(desc(n)) 创建的 data.frame。 DF 5),
我想知道是否有一些步骤/解决方案可以处理错误消息并将它们放入 Pentaho 工具中的某个字符串或字段中?例如,如果连接到数据库时发生某些错误,则将该消息从登录到字符串/字段。 最佳答案 我们在作业的
如何制作像短信应用程序一样的“收件人”字段?例如,右侧有一个“+”按钮,当添加某人时,名称将突出显示并可单击,如圆角矩形等。有没有内置的框架? 最佳答案 不,但请参阅 Three20 的 TTMess
是否可以获取记录的元素或字段的列表 通过类型信息类似于类的已发布属性的列表吗? 谢谢 ! 最佳答案 取决于您的delphi版本,如果您使用的是delphi 2010或更高版本,则可以使用“新rtti”
我正在构建一个 SQLite 数据库来保存我的房地产经纪人的列表。我已经能够使用外键来识别每个代理的列表,但我想在每个代理的记录中创建一个列表;从代理商和列表之间的一对一关系转变为一对多关系。 看这里
我是一名优秀的程序员,十分优秀!