`
jayghost
  • 浏览: 441647 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

【转】oracle alter table详解

 
阅读更多

转:blog.csdn.net/chen_linbo/article/details/6323727

//建测试表
create table dept(
       deptno number(3) primary key,
       dname varchar2(10),
       loc varchar2(13) 
       );
create table employee_info(
       empno number(3),
       deptno number(3),
       ename varchar2(10),
       sex char(1),
       phone number(11),
       address varchar2(50),
       introduce varchar2(100)
       );
--
//0.重命名
  //0.1 表:rename dept to dt;
           rename dt to dept;
  //0.2 列:alter table dept rename column loc to location;
           alter table dept rename column location to loc;
//1.添加约束
  //1.1 primary key
      alter table employee_info add constraint pk_emp_info primary key(empno);
  //1.2 foreign key
      alter table employee_info add constraint fk_emp_info foreign key(deptno)
      references dept(deptno);
  //1.3 check
      alter table employee_info add constraint ck_emp_info check
      (sex in ('F','M'));
  //1.4 not null
      alter table employee_info modify phone constraint not_null_emp_info not null;
  //1.5 unique
      alter table employee_info add constraint uq_emp_info unique(phone);
  //1.6 default
      alter table employee_info modify sex char(2) default 'M';
//2.添加列
   alter table employee_info add id varchar2(18);
   alter table employee_info add hiredate date default sysdate not null;
//3.删除列
   alter table employee_info drop column introduce;
//3.修改列
  //3.1 修改列的长度
      alter table dept modify loc varchar2(50);
  //3.2 修改列的精度
      alter table employee_info modify empno number(2);
  //3.3 修改列的数据类型
      alter table employee_info modify sex char(2);
  //3.4 修改默认值
      alter table employee_info modify hiredate default sysdate+1;
//4.禁用约束
  alter table employee_info disable constraint uq_emp_info;
//5.启用约束
  alter table employee_info enable constraint uq_emp_info;
//6.延迟约束
  alter table employee_info drop constraint fk_emp_info;
  alter table employee_info add constraint fk_emp_info foreign key(deptno)
        references dept(deptno)
  deferrable initially deferred;
//7.向表中添加注释
  comment on table employee_info is 'information of employees';
//8.向列添加注释
  comment on column employee_info.ename is 'the name of employees';
  comment on column dept.dname is 'the name of department';
//9.清除表中所有数据
  truncate table employee_info;
//10.删除表
  drop table employee_info;
--
//下面来看看刚刚才我们对表dept和表employee_info所做的更改
//user_constraints视图里面包含了刚刚才我们创建的所有约束,以及其他信息,
//你可以用desc user_constraints命令查看其详细说明
select constraint_name,constraint_type,status,deferrable,deferred
from user_constraints
where table_name='EMPLOYEE_INFO';
--
CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS   DEFERRABLE     DEFERRED
------------------------------ --------------- -------- -------------- ---------
PK_EMP_INFO                    P               ENABLED  NOT DEFERRABLE IMMEDIATE
FK_EMP_INFO                    R               ENABLED  DEFERRABLE     DEFERRED
NOT_NULL_EMP_INFO              C               ENABLED  NOT DEFERRABLE IMMEDIATE
SYS_C005373                    C               ENABLED  NOT DEFERRABLE IMMEDIATE
UQ_EMP_INFO                    U               ENABLED  NOT DEFERRABLE IMMEDIATE
CK_EMP_INFO                    C               ENABLED  NOT DEFERRABLE IMMEDIATE
//我们可以通过user_cons_columns视图查看有关列的约束信息;
select owner,constraint_name,table_name,column_name
from user_cons_columns
where table_name='EMPLOYEE_INFO';
--
OWNER                          CONSTRAINT_NAME                TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------ ------------------------------ ---------------
YEEXUN                         PK_EMP_INFO                    EMPLOYEE_INFO                  EMPNO
YEEXUN                         CK_EMP_INFO                    EMPLOYEE_INFO                  SEX
YEEXUN                         NOT_NULL_EMP_INFO              EMPLOYEE_INFO                  PHONE
YEEXUN                         SYS_C005373                    EMPLOYEE_INFO                  HIREDATE
YEEXUN                         UQ_EMP_INFO                    EMPLOYEE_INFO                  PHONE
YEEXUN                         FK_EMP_INFO                    EMPLOYEE_INFO                  DEPTNO
//我们将user_constraints视图与user_cons_columns视图连接起来
//查看约束都指向哪些列
column column_name format a15;
select ucc.column_name,ucc.constraint_name,uc.constraint_type,uc.status
from user_constraints uc,user_cons_columns ucc
where uc.table_name=ucc.table_name and
      uc.constraint_name=ucc.constraint_name and
      ucc.table_name='EMPLOYEE_INFO';
--
COLUMN_NAME     CONSTRAINT_NAME                CONSTRAINT_TYPE STATUS
--------------- ------------------------------ --------------- --------
EMPNO           PK_EMP_INFO                    P               ENABLED
DEPTNO          FK_EMP_INFO                    R               ENABLED
PHONE           NOT_NULL_EMP_INFO              C               ENABLED
HIREDATE        SYS_C005373                    C               ENABLED
PHONE           UQ_EMP_INFO                    U               ENABLED
SEX             CK_EMP_INFO                    C               ENABLED
--
//这里有个constraint_type,他具体指下面几种类型:
//C:check,not null
//P:primary key
//R:foreign key
//U:unique
//V:check option
//O:read only
--
//我们可以通过user_tab_comments视图获得对表的注释
select * from user_tab_comments
where table_name='EMPLOYEE_INFO';
TABLE_NAME                     TABLE_TYPE  COMMENTS
------------------------------ ----------- --------------------------
EMPLOYEE_INFO                  TABLE       information of employees
--
//我们还可以通过user_col_comments视图获得对表列的注释:
select * from  user_col_comments
where table_name='EMPLOYEE_INFO';
--
TABLE_NAME                     COLUMN_NAME                    COMMENTS
------------------------------ ------------------------------ ---------------------------
EMPLOYEE_INFO                  EMPNO                          
EMPLOYEE_INFO                  DEPTNO                         
EMPLOYEE_INFO                  ENAME                          the name of employees
EMPLOYEE_INFO                  SEX                            
EMPLOYEE_INFO                  PHONE                          
EMPLOYEE_INFO                  ADDRESS                        
EMPLOYEE_INFO                  ID                             
EMPLOYEE_INFO                  HIREDATE 
--
select * from user_col_comments
where table_name='EMPLOYEE_INFO' and
      comments is not null;
--
TABLE_NAME                     COLUMN_NAME                    COMMENTS
------------------------------ ------------------------------ ------------------------
EMPLOYEE_INFO                  ENAME                          the name of employees
--
//最后我们来查看一下修改后的表:
desc employee_info;
Name     Type         Nullable Default   Comments              
-------- ------------ -------- --------- --------------------- 
EMPNO    NUMBER(2)                                             
DEPTNO   NUMBER(3)    Y                                        
ENAME    VARCHAR2(10) Y                  the name of employees 
SEX      CHAR(2)      Y        'M'                             
PHONE    NUMBER(11)                                            
ADDRESS  VARCHAR2(50) Y                                        
ID       VARCHAR2(18) Y                                        
HIREDATE DATE                  sysdate+1
--
desc dept;
Name   Type         Nullable Default Comments               
------ ------------ -------- ------- ---------------------- 
DEPTNO NUMBER(3)                                            
DNAME  VARCHAR2(10) Y                the name of department 
LOC    VARCHAR2(50) Y
--

 

 

 

 

分享到:
评论

相关推荐

    ORACLE Rename Table的语法

    ORACLE Rename Table 语法详解 在 ORACLE 中,重命名(Rename)一个表的命令是 ALTER TABLE old_name RENAME TO new_name,而不是 RENAME old_name TO new_name。 REname 命令只是 SQL*Plus 的命令,不能在其他程序...

    Oracle 字符集详解

    字符集转换在Oracle中主要通过`CONVERT`函数或者使用`ALTER TABLE`语句实现。例如,将一个表的数据从一个字符集转换到另一个字符集: ```sql ALTER TABLE table_name CONVERT TO CHARACTER SET new_charset; ``` ...

    Oracle sqlplus命令详解

    ### Oracle SQLPLUS命令详解 #### 一、Oracle的启动与关闭 在操作Oracle数据库时,启动和关闭系统是基础操作之一。以下将详细介绍如何通过Oracle的`sqlplus`工具及`svrmgrl`来执行这些操作。 ##### 启动Oracle...

    Oracle闪回技术详解

    Oracle 闪回技术详解 Oracle闪回技术是Oracle强大数据库备份恢复机制的一部分,在数据库发生逻辑错误的时候,闪回技术能提供快速且最小损失的恢复。闪回技术旨在快速恢复逻辑错误,对于物理损坏或是介质丢失的错误...

    oracle的Parallel_并行技术案例详解

    Oracle 的 Parallel 并行技术案例详解 Oracle 的 Parallel 并行技术是指在数据库系统中实现并行处理的技术,通过将一个大的任务分解成多个小的任务,并利用多个进程或线程来并发执行这些小任务,从而提高系统的处理...

    1小时学会Oracle

    #### 二、Oracle 基础命令详解 根据提供的内容,我们可以将 Oracle 的命令分为两大类:数据操纵语言(DML)和数据定义语言(DDL)。下面将详细介绍这两类命令的具体用法。 ##### 1. 数据操纵语言 (DML) 数据操纵...

    Oracle数据库用法详解

    3. 数据定义语言(DDL):涉及数据库对象的创建、修改和删除,如`CREATE TABLE`、`ALTER`和`DROP`。 4. 数据控制语言(DCL):用于权限的授予和撤销,如`GRANT`和`REVOKE`。 5. 事务控制语句(TCL):用于事务的提交...

    Oracle_sqlplus详解.

    4. `startup`:默认启动,等同于`startup nomount`、`alter database mount`和`alter database open`的组合。 5. `startup restrict`:限制模式启动,只有特定权限的用户可以访问。 6. `startup force`:在无法正常...

    oracle常用命令详解

    以下是对"Oracle常用命令详解"文档中可能包含的一些关键知识点的详细介绍: 1. **SQL*Plus命令**: - `SELECT`:用于从表中查询数据,是最基础的SQL命令。 - `INSERT`:用于向表中插入新的记录。 - `UPDATE`:...

    Oracle基础及详解

    6. 数据库操作:`ALTER TABLE`用于修改表结构,`DROP TABLE`用于删除表。 三、Oracle函数应用 1. 数值函数:如`ABS()`返回绝对值,`ROUND()`进行四舍五入。 2. 字符串函数:如`CONCAT()`连接字符串,`SUBSTR()`截取...

    Oracle 锁机制问题详解

    ### Oracle 锁机制问题详解 #### 一、引言 在多用户数据库环境中,当多个用户尝试同时访问或修改同一份数据时,就需要通过锁机制来确保数据的一致性和完整性。Oracle 数据库提供了多种类型的锁来支持事务隔离级别,...

    Oracle 增加修改删除字段

    ### Oracle数据库中对表结构进行增加、修改及删除操作详解 在Oracle数据库中,我们经常需要对现有的表结构进行调整,比如增加新的字段、修改现有字段的属性或数据类型、删除不再使用的字段等。这些操作可以通过`...

    ALTER 命令收集

    ### 一、ALTER TABLE命令详解 `ALTER TABLE`命令主要用于修改已存在的表结构。以下是一些常见的`ALTER TABLE`操作: #### 1. 添加列(Add Column) 例如: ``` ALTER TABLE table_name ADD by1 CHAR(10) NOT NULL...

    oracle 入门问题详解

    本文将针对"Oracle入门问题详解"和"oracle傻瓜问题1000问"的标题与描述,深入探讨Oracle数据库的关键概念和常见问题。 1. **Oracle数据库基础**: - 数据库实例(Database Instance):Oracle运行时的数据存储和...

    oracle表分区详解

    - **重新定义分区**:有时候需要调整分区策略,可以通过 `ALTER TABLE ... REPARTITION` 来重新定义表的分区结构。 - **查看分区信息**:使用 `DBMS_METADATA.GET_DDL` 或 `USER_TAB_PARTITIONS` 可以查看分区表的...

    Oracle语句规划详解

    ### Oracle语句规划详解 #### 一、Oracle语句优化的重要性 在数据库管理与开发过程中,优化Oracle SQL语句对于提升系统的整体性能至关重要。优化不仅仅意味着更快的数据查询速度,还能减少资源消耗,提高数据库...

    oracle命令详解

    Oracle命令详解是一个面向初学者的教程,旨在帮助学习者掌握Oracle数据库的基本操作。在这个教程中,我们将重点关注如何解锁和管理用户账户,以及如何查询和调整数据库的配置参数。 首先,Oracle默认的`scott`用户...

    oracle新手入门指导之六—ORACLE回收站详解.txt

    ### Oracle新手入门指导之六——Oracle回收站详解 #### 回收站概念介绍 在Oracle数据库中,**回收站(Recycle Bin)**是一项非常实用的功能,它为用户提供了一种安全删除对象的方式。当用户删除一个表、视图、索引等...

    ORACLE TABLE PARTITION

    ### Oracle表分区转换详解 #### 一、背景与目的 在数据库管理中,表分区是一种重要的数据组织方式,它能够显著提高大型表的查询性能,简化数据管理,并有助于提高系统的可维护性和可用性。有时,我们需要将非分区...

Global site tag (gtag.js) - Google Analytics