oracle 修改更新约束,Oracle(修改表结构和约束)

这篇博客详细介绍了SQL数据库中对表的各种操作,包括添加和修改列、添加与删除约束、删除表、截断表以及对象重命名和注释管理。还对比了`DELETE`和`TRUNCATE`的区别,并提供了相应的DDL语句示例。此外,还提到了在执行这些操作时的注意事项和事务管理。
摘要由CSDN通过智能技术生成

目标:

1.添加和修改列

2.添加,enable,disable,或者remove约束

3.删除表

4.删除表中所有数据并回到表定义的初始状态(截断表)

5.修改对象的名字

6.给对象添加注释,从数据字典中查看注释

用到的命令:

1.Alter table :

1.添加和修改列

2.添加和删除约束

3.enable,disable约束

2.drop table命令移除表中所有行和表结构

3.rename,truncate,comment

4.当执行以上DDL语句时,事务自动提交

功能:

1.增加列

语法:

alter table tb_name

add column datatype [default val] constraint .....

note:

1.如果添加not null(primary key约束要求值也不能为null)约束,需要保证当前表中没有数据存在。

2.新添加的列,相当于表定义中最后一个定义的列。

例如:

alter table test add name varchar2(10) default 'test' not null ;

alter table s_stu add (sname varchar2(20),sage number);

alter table husband add sage number constraint husband_sage_check check(sage<=100);

2.删除列:

语法:alter table tableName drop column column_name;

例如:alter table test drop column name;

3.修改列属性:(数据类型和约束)

语法:ALTER TABLE table

MODIFY (column datatype [DEFAULT expr][NOT NULL]

[, column datatype]...);

note:

修改列的规则:

1.可以增加字段的宽度或者精度

2.如果列的值为null或者表中没有数据,可以降低宽度和精度

3.给当前列,后续添加的数据指定默认值。

4.当且仅当当前列中没有null值时,可以定义当前列为not null.

5.当前列中的值为null时,可以修改列的数据类型

6.如果需要给某个字段添加not null约束,只能使用modify。

例如:

alter table test modify id number constraint test_pk_id primary key;

alter table test modify id char(20);

4.增加约束

语法:alter table tb_name add 约束的完整定义

note:

1.只能增加能够使用表级约束的约束

2.不能修改约束

例如:

alter table test add constraint test_pk_id primary key(id);

alter table test add check(gender in ('F','M'));

5.删除约束:

语法:alter table tb_name drop 约束名。

例如:

alter table test drop constraint test_pk_id;

删除组件约束时,同时删除和他依赖的外键约束

alter table test drop constraint test_pk_id cascade;

6.使一个约束失效:

语法:alter table tb_name disable constraint constraint_name [cascade];

note:添加cascade表明要让所有的依赖约束都失效。

7.是一个约束生效:

语法:alter table tb_name enable constraint constraint_name;

note:

1.当启用unique和primary key约束时,会自动创建索引。

例如:alter table test enable constraint test_id_pk;

8.删除表:

drop table tb_name [cascade constraint];

note:

1.删除表中所有数据

2.所有的索引被删除

3.使用cascade constraint,级联删除所有的依赖完整性约束

例如:

drop table test cascade constraint;

删除之后,可以通过:

select column_name,constraint_name

from user_cons_columns;

查看是否约束还在。

9.重命名:rename

重命名表:

rename old_tb_name to new_tb_name;

重命名列:

alter table tb_name rename column old_col_name to new_col_name;

note:

1.重命名可以用来修改table,view,sequence,synonym

2.只有是这个对象的拥有者,才能重命名。

例如:

rename emp to emp2;  将表名重n名为emp2

alter table emp rename column id to eid;

10.截断表:truncate

语法:truncate table tb_name

note:

1.清空表记录

2.释放当前表所占用的表空间。返回建表初始状态

3.是一个DDL命令。

4.一旦删除,事务不能回滚。

例如:truncate table emp;

delete和truncate的比较:

delete:可以指定删除某些列,也可以清空表,但是不释放表空间,在事务没有提交之前可以回滚。

truncate:只能清空表,释放表空间,不能回滚。

11.给表加注释:comments

语法:

comment on table talbe_name is '注释内容'

comment on column table_name.column_name is '注释内容';

note:

1.添加的注释可以在如下数据字典中查看

ALL_COL_COMMENTS

USER_COL_COMMENTS

ALL_TAB_COMMENTS

USER_TAB_COMMENTS

例如:

comment on table emp is '测试';

comment on column emp.eid  is 'haha';

SQL Server -- 回忆笔记(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询

SQL Server知识点回忆篇(二):增删改查,修改表结构,约束,关键字使用,函数,多表联合查询 1. insert 如果sql server设置的排序规则不是简体中文,必须在简体中文字符串前加N, ...

sqlserver和oracle修改表结构

sqlserver和oracle修改表结构常用SQL Server:1.增加列  ALTER TABLE users ADD address varchar(30);2.删除列  ALTER TABL ...

Oracle修改表结构字段名和字段长度

添加字段的语法:alter table tablename add (column datatype [default value][null/not null],….); 修改字段的语法:alter ...

SqlServer和Oracle修改表结构语句

SQL Server:1.增加列  ALTER TABLE users ADD address varchar(30);2.删除列  ALTER TABLE users DROP COLUMN add ...

mysql alter 增加修改表结构及约束

1) 加索引,添加时若未指定索引名,默认为字段名   mysql> alter table 表名 add index 索引名 (字段名1[,字段名2 …]); 例子: mysql> alt ...

Oracle修改表结构

--添加字段 alter table [tablename] add  [column name] [column data type]; --修改字段数据类型 alter table [tablen ...

oracle 修改表结构,增加列,删除列等

增加一列:ALTER TABLE yourTabbleName ADD columnName dataType; 增加多列:ALTER TABLE yourTabbleName ADD (column ...

ORACLE 中写入txt文本与从Txt文件中读入数据 修改表结构

--创建一个表 DROP TABLE TEST CASCADE CONSTRAINTS ; CREATE TABLE TEST(A VARCHAR(30),B VARCHAR(30)); --查看具体 ...

oracle 11g 通过在线重定义方式修改表结构

今天因为要对一套数据库的数据抽取进行io优化,希望通过修改表结构将抽取io降下来,因为抽取只针对标签HAVE_FLAG为"0"的值进行抽取,抽取之后更新HAVE_FLAG为其他值, ...

随机推荐

spring来了-01-概述

思考 对象创建能否写死? 对象创建细节 对象数量 action       多个    [需要维护成员变量] service      一个    [不需要维护成员变量] dao           ...

POJ 2352 【树状数组】

题意: 给了很多星星的坐标,星星的特征值是不比他自己本身高而且不在它右边的星星数. 给定的输入数据是按照y升序排序的,y相同的情况下按照x排列,x和y都是介于0和32000之间的整数.每个坐标最多有一 ...

&lbrack;C&plus;&plus;&rsqb;KMP算法实现

KMP算法说明:http://zh.wikipedia.org/wiki/%E5%85%8B%E5%8A%AA%E6%96%AF-%E8%8E%AB%E9%87%8C%E6%96%AF-%E6%99% ...

陈词滥调,正确使用memset

前项目发现一个问题,计划永远是一个dynamic_cast当一个异常动态转换,搜索了半天才发现问题竟然是在memset使用,见.但当处于几十万行代码量级中时,就变得不太那么easy定位了. 本文归纳了 ...

Linux------创建和终止进程

创建进程: Linux创建两个步骤的新处理:fork()和exec().其中fork创建当前进程的能力(父进程)副本,那个孩子.父子进程只有PID不同.在这之后,该系统具有两个进程,运行相同的操作.父 ...

快速排序&colon;升序&plus;降序----java实现

快速排序思路:先把第一个元素令为low下标,最后一个为high下标.并把第一个元素令为temp来作为标准元素.以标准元素来调整数组,使比标准元素小的都在标准元素前,比标准元素大的都在标准元素后.这样一 ...

linux防火墙基本操作

1.查看防火墙运行状态 # firewall-cmd --state 或者 # systemctl status firewalld.service .关闭防火墙 # systemctl stop f ...

unity中Ray、RaycastHit 、Raycast(小白之路)

1.Ray Ray(Vector3 origin, Vector3 direction) Ray:在程序中可以理解为射线,就是以某个位置(origin)朝某个方向(direction)的一条射线,是一 ...

open-falcon-agent插件使用

说明 Plugin可以看做是对agent功能的扩充.使用插件可以对采集脚本进行统一管理,方便定制修改,也可以免去在crontab中添加计划任务. 开启plugin功能 # 修改agent配置文件 &q ...

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值