`

oracle,alter table

 
阅读更多
文章来源
http://blog.csdn.net/BOBO12082119/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  
--  
分享到:
评论

相关推荐

    ALTER TABLE table_name

    ### ALTER TABLE 语句在Oracle中的应用 #### 标题:ALTER TABLE table_name - **知识点**:在数据库管理系统(DBMS)中,`ALTER TABLE` 是一种用于修改已存在表结构的 SQL 语句。这包括添加、删除或修改列、约束等...

    orcle使用中经常遇到的问题及解决办法

    本文将详细探讨在"Oracle使用中经常遇到的问题及解决办法",包括Oracle监听器错误、中文乱码问题、资源正忙的情况、修改Oracle端口以及数据库字符集问题,同时也会介绍如何在命令行下操作Oracle数据库。 首先,...

    ORACLE Rename Table的语法

    在 ORACLE 中,重命名(Rename)一个表的命令是 ALTER TABLE old_name RENAME TO new_name,而不是 RENAME old_name TO new_name。 REname 命令只是 SQL*Plus 的命令,不能在其他程序中使用,如果将其放在 Java、...

    oracle DBA_TAB_MODIFICATIONS 刷新

    总结来说,Oracle DBA_TAB_MODIFICATIONS 视图是数据库变更跟踪的重要工具,但它的行为取决于多种因素,包括操作类型(如 `CREATE TABLE AS` 或 `APPEND` 指令)、事务提交状态、隐含参数设置以及刷新机制。...

    alter table move相关知识研究

    源码层面,`ALTER TABLE MOVE`的具体实现依赖于数据库管理系统(如Oracle、MySQL等)的内部机制。在Oracle中,这个操作涉及到数据字典的更新、数据文件的读写以及重构建索引等复杂步骤。对于有兴趣深入理解这一过程...

    Oracle对字段的增删改方法分享

    alter table table_name modify column_name varchar2(10); ``` 这个命令适用于所有支持SQL标准的数据库系统。 其次,修改字段名是一个常用的需求。在Oracle中,你可以使用`RENAME COLUMN`子句来实现。假设你想要...

    Oracle常用的和表(Table)相关的命令

    sql> alter table table_name allocate extent (size 500k datafile 'c:/oracle/data.dbf'); ``` **解析**: - `allocate extent`: 分配扩展区。 - `size`: 扩展区大小。 - `datafile`: 数据文件路径。 #### 4.3 ...

    oracle数据备份

    Alter table table_name add (new_colum_name datatype [default value] [not null]) 修改列类型 Alter table…modify Alter table table_name modify column_name new_datatype 修改列名 Alter table…rename Alter...

    Sequence简单介绍.pdf

    ALTER TABLE Orders ADD CONSTRAINT FK_Employee FOREIGN KEY (EmployeeID) REFERENCES Employees(EmployeeID); -- SQL Server ALTER TABLE Orders ADD CONSTRAINT FK_Employee FOREIGN KEY (EmployeeID) ...

    oracle中truncate table后的数据恢复

    在Oracle数据库中,`TRUNCATE TABLE`是一个用于删除表中所有数据的命令,它与`DELETE`语句不同,不记录任何删除操作,并且在大多数情况下执行速度更快。然而,一旦执行`TRUNCATE TABLE`,数据通常无法通过常规的...

    alter提升各种数据库脚本的方法

    - **Oracle:** `ALTER TABLE table_name MODIFY (column_name new_data_type [NULL | NOT NULL]);` **示例:** - **MySQL:** 修改表`table_name`中的`column_name`字段为`BIT`类型且不允许为空。 ```sql ALTER ...

    SQLserver、Oracle、Mysql语法与用法对比

    - Oracle:`alter table 表名 rename column 旧列名 to 新列名` - MySQL:`alter table test change column address address1 varchar(30)` 5. **删除数据库**: - SQL Server:`drop database 数据库名` - ...

    Oracle与SQL和Mysql的对比笔记

    - Oracle: `ALTER TABLE 子表 ADD CONSTRAINT 外键约束名 FOREIGN KEY (子表的列名) REFERENCES 主表 (列名) ON UPDATE CASCADE / ACTION` - SQL Server: `ALTER TABLE 子表 ADD CONSTRAINT 外键约束名 FOREIGN ...

    Oracle 增加修改删除字段

    本文将详细介绍如何使用`ALTER TABLE`命令来增加、修改以及删除字段,并且也会涵盖如何添加和修改表的约束。 #### 一、增加字段 使用`ALTER TABLE`命令增加字段的基本语法如下: ```sql ALTER TABLE 表名 ADD ...

    oracle数据库安装

    Alter table table_name add (new_colum_name datatype [default value] [not null]) 修改列类型 Alter table…modify Alter table table_name modify column_name new_datatype 修改列名 Alter table…rename Alter...

    oracle修改表空间的全部步骤,包含bob,clob字段

    SELECT 'ALTER TABLE ' || table_name || ' MOVE TABLESPACE 新表空间名;' FROM user_all_tables; SELECT 'ALTER INDEX ' || index_name || ' REBUILD TABLESPACE 新表空间名;' FROM user_indexes; ``` #### 3. ...

    Oracle 10gR2压缩(Compress)技术

    - 分区表压缩属性修改:使用ALTER TABLE ... MODIFY PARTITION ... COMPRESS/NOCOMPRESS命令。 - 分区索引压缩属性修改:对分区索引执行类似的修改操作。 - 分区表空间数据压缩:将数据移动到启用压缩的表空间中。 -...

    1小时学会Oracle

    - 示例:`ALTER TABLE table_name RENAME TO new_table_name;` - 更改名称示例:`ALTER TABLE student RENAME TO students;` - **ALTER TABLE**:修改现有表的结构。 - 添加列:`ALTER TABLE table_name ADD ...

    Oracle9i模式对象.ppt

    Oracle 9i 中的约束可以使用 ALTER TABLE 语句删除,例如: ```sql ALTER TABLE test DROP CONSTRAINT test_ln_uk; DROP TABLE test CASCADE CONSTRAINTS; ``` 在删除表时,需要先删除表的约束,然后才能删除表。...

    oracle修改表结构

    ALTER TABLE table_name ADD (column_name datatype [NULL | NOT NULL] [default 'default_value']); ``` 例如,向`test3`表中添加一个名为`address`的字段,类型为`VARCHAR2(100)`,默认值为`unkown`: ```sql ...

Global site tag (gtag.js) - Google Analytics