Oracle 创建和管理表

1. 命名规则

表名和列名

  • 必须以字母开头
  • 必须在1-30个字符之间
  • 必须只能包含A-Z,a-z,0-9,_,$,和#
  • 必须不能和用户定义的其他对象重名
  • 必须不能是Oracle的保留字

2. 创建表语句 create table

sql>create tabel 必须具有创建权限,存储空间。
必须指定

  • 表名
  • 字段名称,字段数据类型和字段大小

2.1 引用其他用户的表

其他用户定义的表不在当前用户的方案中
应该使用用户名作为前缀,引用其他用户定义的对象
在这里插入图片描述

2.2 DEFAULT选项

  • 在插入的过程中,为列指定一个默认值
  • 字符串,算数表达式,或者sql函数都是合法的
  • 其他列的列名和伪列都是非法的
  • 默认值必须满足列得数据类型定义

在这里插入图片描述
在这里插入图片描述

3. 数据类型

在这里插入图片描述
在这里插入图片描述

4. 约束语句

  • 约束为表级的强制规则
  • 如果对表有依赖关系,约束能防止表的删除
  • 以下时有效的约束类型
    • not null 非空
    • unique 唯一
    • primary key 主键
    • foreign key 附键
    • check

4.1 约束准则

  • 如果不指定约束名Oracle server自动按照SYS_Cn的格式指定约束名
  • 在什么时候创建约束:
    • 建表的同时
    • 建表之后
  • 可以在表级或者列级定义约束
  • 可以通过数据字典视图查看约束

语法规则
在这里插入图片描述
语法示例:
在这里插入图片描述
约束效果
在这里插入图片描述

uninque约束
在这里插入图片描述
RPIMARY KEY 约束
在这里插入图片描述
foreign key 约束
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

4.2 FOREIGN KEY 约束:关键字

FOREIGN KEY在表级指定子表中的列
REFERENCES表示在父表中的列
ON DELETE CASCADE当父表中的列被删除时,字表中相对应的列也被删除
ON DELETE SET NULL字表中相应的列表空

4.3 CHECK约束

  • 定义每一行必须满足的条件
  • 以下的表达式是不允许的
    • 出现CURRVAL,NEXTVAL,LEVEL,和ROWNUM伪列
    • 使用SYSDATE,UID,USER,和USERENV函数
    • 在查询中涉及到其他行的值

在这里插入图片描述
在这里插入图片描述

5. 使用子查询创建表

  • 使用CREATE TABLE语句和AS subquery选项,将创建表和插入数据结合起来完成
    在这里插入图片描述

  • 指定的列和子查询中的列要一一对应

  • 通过列名和默认值定义列

    使用子查询创建表
    在这里插入图片描述
    在这里插入图片描述

6. 更改表 ALTER TABELE

使用alter table

  • 添加一个新列
  • 修改现有的列定义
  • 新的列定义默认值
  • 删除一列
  • 重命名列
  • 将表更改为只读状态

在这里插入图片描述

6.1 增加⼀个新列

例如

alter table dept30 add (job varchar2(9));

在这里插入图片描述

6.2 更改⼀个现存的列

可更改⼀个现存列的数据类型、⻓度、以及缺
对于缺省值的修改只影响到以后新加的列
例如

ALTER TABLE dept30 modify (ename varchar2(15));

在这里插入图片描述

6.3 删除⼀列

使⽤DROP COLUMN 来删除表中将来不使⽤的列。

6.4 对表名或者列名重命名

rename column

ALTER TABLE table_name
RENAME COLUMN col_old TO col_newname;
ALTER TABLE t_old RENAME TO t_new;

6.5 改变⼀个对象的名称

更改表、视图、同义词、序列等对象的名称,可执⾏RENAME命令(操作用户必须是对象的拥有者)

ALTER TABLE t_old RENAME TO t_new;

7. 删除表 DROP TABLE

  • 表移动到回收站,purge recyclebin
  • 使用PURGE子句可彻底删除表
  • 表上依赖的对象失效的同时删除对象权限、

8. SET UNUSED 标记列不可用

表中数据量⾮常⼤时,如果在业务⾼峰时间直接执⾏ alter table drop column 可能会收到如下错误
ORA-01562 - failed to extend rollback segment number string

Oracle 推荐使用 SET UNUSED 选项标记⼀列(或多列),使该列不可用。 然后,当业务量下降后再使用 DROP UNUSED column 选项删除被被标记为不可用的列.

SETUNUSED COLUMNS 用于 drop 多列时效率更⾼,

SET UNUSED COLUMNS 方法系统开销比较小,速度较快。

8.1 用法

SET UNUSED 标记列不可用

alter table xxx set unused (col1);
alter table xxx drop unused col1;

无法删除属于sys的表中的列,将会报错ora-12988

9. 为⼀个表增加注释

可以使⽤COMMENT 语句为⼀个表,或表中的某⼀列增加注释

COMMENT ON TABLE tab_name IS ’this is data table;
COMMENT ON COLUMN tab_name.col ISis col’

可通过查询⼀下数据字典视图进⾏查询

  • ALL_COL_COMMENTS
  • USER_COL_COMMENTS
  • ALL_TAB_COMMENTS
  • USER_TAB_COMMENT
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值