设为首页 收藏本站

运维网

查看: 545|回复: 0

[经验分享] Oracle alter table详解

[复制链接]

尚未签到

发表于 2018-9-13 12:27:40 | 显示全部楼层 |阅读模式
  //建测试表
  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;

  >  //1.添加约束
  //1.1 primary key

  >  //1.2 foreign key

  >  references dept(deptno);
  //1.3 check

  >  (sex in ('F','M'));
  //1.4 not null

  >  //1.5 unique

  >  //1.6 default

  >  //2.添加列

  >
  >  //3.删除列

  >  //3.修改列
  //3.1 修改列的长度

  >  //3.2 修改列的精度

  >  //3.3 修改列的数据类型

  >  //3.4 修改默认值

  >  //4.禁用约束

  >  //5.启用约束

  >  //6.延迟约束

  >
  >  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        >  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
  --


运维网声明 1、欢迎大家加入本站运维交流群:群①:263444886群②:197202523群③:485755530群④:201730672群⑤:202807635运维网交流群⑥:281548029
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须注明原文的出处
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
5、运维网 - 服务您的运维操作管理专家!
6、联系人Email:admin@yunvn.com 网址:www.iyunv.com

点击关注更多内容
您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则  允许回帖邮件提醒楼主

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服 E-mail:kefu@yunvn.com

本站由青云提供云计算服务

运维网--中国最专业的运维工程师交流社区

京ICP备14039699号-1 Copyright © 2012-2018

使用手机软件扫描微信二维码

关注我们可获取更多热点资讯

Good good study day day up !


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


独家合作伙伴: 青云cloud

快速回复 返回顶部 返回列表