Oracle(修改表结构和约束)
目标:
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';
Oracle(修改表结构和约束)的更多相关文章
- 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为其他值, ...
随机推荐
- DBA数据库:MySQL简述
一. 数据库介绍 什么是数据库? 数据库(Database)是按照数据结构来组织.存储和管理数据的仓库.每个数据库都有一个或多个不同的API用于创建,访问,管理,搜索和复制所保存的数据.我们也可以将数 ...
- Android下安装应用不成功解决
在手机上安装应用程序不成功,可以尝试把手机连接电脑,然后使用adb进行安装,adb安装命令: adb install Android_65632.apk 当出现: success!就表示成功,但当不成 ...
- [CC]区域生长算法——点云分割
基于CC写的插件,利用PCL中算法实现: void qLxPluginPCL::doRegionGrowing() { assert(m_app); if (!m_app) return; const ...
- GPS部标平台的架构设计(四)-百度地图设计
部标GPS软件平台之百度地图设计 地图是客户端中不可缺少的一个模块,很多人在设计和画图时候,喜欢加上地图引擎这样高大上的字眼,显得自己的平台有内涵,说白了就是用第三方的SDK来开发,早期的GPS监 控 ...
- WPF绑定xml数据源
1.界面 <UserControl x:Class="HKDCMS.Client.Demo.UIViews.UIControls.AboutUsControl" xmlns= ...
- Linux中可用于管道操作的命令总结
在Linux中药进行稍复杂的操作,通常需要借助管道命令"|"多个命令的组合,形式如下: command 1 | command 2 | command 3 -- 在linux中 ...
- 在Eclipse 中使用tomcat8
最新版本的Eclipse让人不支持 Tomcat 8,该方法让Eclipse能使用Tomcat8 第一步:下载最新版本Eclipse for Java EE 第二步:到WTP downloads pa ...
- hibernate的映射类型
hibernate的映射类型 hibernate MySQL映射类型 1.Hibernate的映射类型 hibernate mysql映射类型 Hibernate 映射类型 Java 类型 标准 SQ ...
- 1016. Boundaries on A New Kind of Science 解题报告
题目链接: http://soj.sysu.edu.cn/1016 题目大意: 给定一个字符串和256条规则,将某条规则应用于字符串,字符串将发生变化,给定一个数max,求出在max步内可以将字符串变 ...
- Jquery插件Ztree使用所遇问题
问题1.$.fn.zTree为空或为Undefined 我在MVC中引用Jquery插件Ztree的JS并不存任何问题,而当我将Ztree的js引入项目中,就出现$.fn.zTree为空或为Undef ...