表的增删改查
创建表
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小时内删除。
发表评论