表的增删改查
创建表
CREATE TABLE [用户名.]表名
                (列名 数据类型 [default 默认值] [,...]...);
SQL> create table t1 (     
  2  id number(10),       
  3  name varchar2(20),   
  4  password varchar2(30));
SQL> create table tab1 as select * from emp where sal>2000;
SQL> create table tab2 as select * from emp where 1=2;
增加修改删除列
增加一列
    ALTER TABLE [用户名.]表名
    ADD    (列名1 数据类型[DEFAULT 表达式],[列名2 数据类型],...)
SQL> desc t1;
名称          是否为空? 类型
------------- -------- ---------------
ID                      NUMBER(10)
NAME                    VARCHAR2(20)
PASSWORD                VARCHAR2(30)
SQL> alter table t1 add (sal number(10));
SQL> desc t1;
名称          是否为空? 类型
--------------- -------- --------------------
ID                      NUMBER(10)
NAME                    VARCHAR2(20)
PASSWORD                VARCHAR2(30)
SAL                     NUMBER(10)
SQL> alter table t1 add (job varchar(10));
SQL> desc t1;
名称              是否为空? 类型
------------------ -------- ----------------
ID                          NUMBER(10)
NAME                        VARCHAR2(20)
PASSWORD                    VARCHAR2(30)
SAL                          NUMBER(10)
JOB                          VARCHAR2(10)
修改表已存列的数据类型与列名重命名
提交更改是内存条吗
语法格式:
    ALTER TABLE 表名
    MODIFY (列名1,数据类型 [DEFAULT 表达式],列名2,数据类型,...)
SQL> desc t1;
名称                是否为空? 类型
-------------------- -------- ---------------
ID                            NUMBER(10)
NAME                          VARCHAR2(20)
PASSWORD                      VARCHAR2(30)
SAL                          NUMBER(10)
JOB                          VARCHAR2(10)
SQL> alter table t1 modify (sal varchar2(20));
SQL> desc t1;
名称                  是否为空? 类型
--------------------- -------- ---------------
ID                            NUMBER(10)
NAME                          VARCHAR2(20)
PASSWORD                      VARCHAR2(30)
SAL                            VARCHAR2(20)
JOB                            VARCHAR2(10)
SQL> alter table t1 rename column job to comm;
SQL> desc t1;
名称                  是否为空? 类型
-------------------- -------- ---------------
ID                              NUMBER(10)
NAME                            VARCHAR2(20)
PASSWORD                        VARCHAR2(30)
SAL                            VARCHAR2(20)
COMM                            VARCHAR2(10)
SQL> alter table t1 modify (comm number(10));
SQL> desc t1;
名称                    是否为空? 类型
------------------------ -------- ---------------
ID                                NUMBER(10)
NAME                              VARCHAR2(20)
PASSWORD                          VARCHAR2(30)
SAL                              VARCHAR2(20)
COMM                              NUMBER(10)
删除表里的某列
    ALTER TABLE 表名 DROP COLUMN 列名;
SQL> desc t1;
名称                    是否为空? 类型
------------------------------ -------------------
ID                                NUMBER(10)
NAME                              VARCHAR2(20)
PASSWORD                          VARCHAR2(30)
SAL                              VARCHAR2(20)
COMM                              NUMBER(10)
SQL> alter table t1 drop column comm;
SQL> desc t1;
名称                      是否为空? 类型
------------------------ -------- -------------------
ID                                  NUMBER(10)
NAME                                VARCHAR2(20)
PASSWORD                            VARCHAR2(30)
SAL                                VARCHAR2(20)
间接删除表里已存在的列
删除表里的列特别是删除大表里的列是特耗资源的 所以 在删除一个列时 可以先把要删除的列打标记,标记成无用列 ,然后等系统不忙时在彻底删除这个列
语法格式:
    ALTER TABLE 表名 SET UNUSED COLUMN 列名;
   
把一个列设置成无用列 注意一下事项
_ 必需在8i以上版本适用
_ 该列被设置成无用列后,并不是删除了而是设置成无用标记而已还需要手工删除这个列
_ 设置成无用列后,无法用sqlplus或是sql 语句看到的
_ oracle把设置成无用列当作删除列处理
_ 可以适用DROP UNUSED (列名) 选项删除被设置成无用的列
_ 因为该语句是DDL语句 没有恢复无用列的命令
然后 等系统不忙时在用
    ALTER TABLE 表名    DROP UNUSED COLUMN;
SQL> alter table t1 set unused column sal;
SQL> desc t1;
名称                    是否为空? 类型
----------------------- -------- --------------
ID                                NUMBER(10)
NAME                              VARCHAR2(20)
PASSWORD                          VARCHAR2(30)
SQL> alter table t1 drop unused column;
SQL> desc t1;
名称                      是否为空? 类型
------------------------ -------- --------------
ID                                UMBER(10)
NAME                              VARCHAR2(20)

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。