oracle alter table详解

2023-05-16

//建测试表
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
--

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

oracle alter table详解 的相关文章

  • oracle查找两个表之间的差异

    我有两个结构相同的表 一个是临时的 另一个是产品的 每次都会加载整个数据集 有时该数据集会从先前的数据集中删除记录 我首先将数据集加载到临时表中 如果删除了任何记录 我也想从产品表中删除它们 那么如何找到prod中存在但temp中不存在的记
  • 我怎样才能等到所有调度程序作业完成?

    我是我的包裹 我正在排队多个作业 如下所示 dbms scheduler create job job name gt p job name job type gt PLSQL BLOCK job action gt p sql code
  • 表与视图的性能

    最近开始使用一个数据库 其中的惯例是为每个表创建一个视图 如果您假设表和视图之间存在一对一的映射 我想知道是否有人可以告诉我这样做对性能的影响 顺便说一句 这是在 Oracle 上的 假设问题是关于非物化视图 实际上取决于视图所基于的查询以
  • 在 MVC3 应用程序中使用具有表单身份验证的 Oracle 数据库

    我编写了一个简单的 MVC3 应用程序 并遵循了有关如何设置经过身份验证的用户的教程 本教程使用 SQL Server Express 数据库 是否可以使用 Oracle 数据库代替 SQL Server 这只是更改 web config
  • 根据 Oracle SQL 中的营业时间计算时间

    我希望根据工作时间计算任务开始和结束之间的时间 我有以下示例数据 TASK START TIME END TIME A 16 JAN 17 10 00 23 JAN 17 11 35 B 18 JAN 17 17 53 19 JAN 17
  • 休眠可能会导致此“获取顺序错误”错误吗?

    我尝试使用 Hibernate Spring JPA 执行此查询 在 Oracle DB 中 Query value DELETE from MY TABLE where ID ID nativeQuery true void delete
  • Oracle 中的函数与过程

    Oracle 中函数和过程的主要区别是什么 如果我可以用函数完成所有事情 为什么我必须使用过程 如果我无法在sql语句中调用过程 好吧 我会编写一个函数来完成相同的工作 过程不返回值 好的 在任何 dml 操作后我将仅返回 sql rowc
  • 将 OraclePreparedStatement 与 DBCP 连接结合使用

    我正在尝试使用 dbcp 框架为我的 oracle 服务器创建一个连接池 我用过这个tutorial http web archive org web 20120615100115 http www freshblurbs com 80 j
  • Oracle存储过程使用数组作为表插入的参数

    我一直在寻找一个明显的例子 但没有运气 抱歉 如果已经回答了 我正在尝试做一些非常简单的事情 一个存储过程 它将获取输入并将它们插入到表中 我希望它获取多行数组并一次全部插入 我认为这很简单 但我还没有找到一个可以展示我的例子 在很多例子中
  • FROM 子句中的嵌套括号是否有效的 Oracle SQL 语法?

    此查询使用正确的 Oracle 语法吗 select from dual a where a dummy X 它可以在 11g 和 12c 中运行 但它是真正有效的语法吗 或者这只是一个编译器 错误 将来可能会修复 导致代码失败 我怀疑这是
  • 如何在Oracle中使用Timestamp_to_scn和Scn_to_timestamp?

    我的查询结果是这样的 select cast to date a start time mm dd yyyy hh mi ss pm as timestamp date of call ora rowscn from calling tab
  • APEX 安装失败,PLS-00201:必须声明标识符“SYS.DBMS_DB_VERSION”

    尝试在 Oracle XE 18c 数据库上安装 Oracle APEX 20 2 如下官方说明 https docs oracle com en database oracle application express 20 1 htmig
  • Oracle TDE 能否保护数据免受 DBA 的侵害?

    甲骨文专家 我的客户想要部署一个必须在数据库中保存信用卡号的应用程序 客户显然很关心安全性 我们特别关注一个令人痛苦的问题 我们如何确保只有具有 业务需要知道 的授权用户才可以访问数据 我们如何保护数据免受 DBA 的侵害 一个明显的解决方
  • Delphi 5 中的 Oracle 数据库连接

    我正在使用 Delphi 5 版本 我想连接到 Oracle 数据库 我有 TDatabase 组件 我不知道如何通过 Delphi 连接到数据库 请提供连接数据库的步骤 谢谢 The TDatabase http docwiki emba
  • SQL 国家字符 (NCHAR) 数据类型的真正用途是什么?

    也CHAR CHARACTER and VARCHAR CHARACTER VARYING SQL 提供了NCHAR NATIONAL CHARACTER and NVARCHAR NATIONAL CHARACTER VARYING 类型
  • 检查两个“select”是否相等

    有没有办法检查两个 非平凡的 选择是否等效 最初我希望两个选择之间有形式上的等价 但是答案在证明 sql 查询等价性 https stackoverflow com questions 56895 proving sql query equ
  • 快速查询最新记录的方法?

    我有一张这样的表 USER PLAN START DATE END DATE 1 A 20110101 NULL 1 B 20100101 20101231 2 A 20100101 20100505 在某种程度上 如果END DATE i
  • 如何在java 1.8中从org.jboss.jca.adapters.jdbc.jdk8.WrappedConnectionJDK8转换为oracle.jdbc.OracleConnection

    如何在 java 1 8 中从 org jboss jca adapters jdbc jdk8 WrappedConnectionJDK8 转换为 oracle jdbc OracleConnection 目前我正在这样使用并得到以下异常
  • SQL查询查找表的主键?

    我怎样才能找到哪一列首要的关键使用查询来创建表 这是重复的question https stackoverflow com questions 893874 mysql determine tables primary key dynami
  • 通知设置的数据库设计

    用户可以打开或关闭 他的通知设置 帐户 用于通知 例如 更改帐户资料信息 收到新消息等 通知可以通过电子邮件或手机 推送或短信 发送 用户可以只有 1 封电子邮件和多个手机设备 有什么方法可以改进以下数据库设计或者您会采取不同的方式吗 让我

随机推荐