Oracle-DDL(创建与管理表)

目录

一、创建表

二、修改表

三、删除表

四、对象重命名:


常见的数据库对象

表:基本的数据存储集合,由行和列组成;

视图:从表中抽出的逻辑上相关的数据集合;

序列:提供有规律的数值;

索引:提高查询的效率;

同义词:给对象起别名;

查看用户创建的表:select * from user_tables;

查询用户定义的表、视图、同义词、序列:select * from user_catalog;

查询用户所有数据库对象:select * from user_objects;(表、索引、过程、序列、函数)

一、创建表

create table 表名(

字段名 类型(长度)primary key,

...

);

表名和列名的命名规则

    • 必须字母开头
    • 必须在1~30个字符之间
    • 只能包含字母、数字、_$#
    • 不能和用户定义的其他对象同名
    • 不能是Oracle的保留字

数据类型

字符型

CHAR:用于存储固定长度的字符串,最多2000个字符

NCHAR:用于存储固定长度的Unicode字符数据。NCHAR的字符集只能是AL16UTF16或UTF8,在数据库创建时指定为国家字符集

VARCHAR2:存储可变长度的字符串,最多4000字符

LONG:大文本类型,最大2G

数字型

NUMBER 默认是18位

NUMBER[(precision [, scale])] 例NUMBER(5,2) 999.99

精度代表数字长度,尺度是小数位数;

FLOAT数据类型

FLOAT(p) FLOAT的最大精度是126

在FLOAT中,精度是二进制位,而在NUMBER中精度是十进制数,以下公式转换

P(d) = 0.30103 * P(b)

日期型

Date:日期类型,允许以一秒的精度存储包括日期和时间的时间点值

TO_CHAR()函数格式化日期

to_date()

DATE '2017-08-01'、ANSI日期文字没有时间部分,必须采用确切格式('YYYY-MM-DD')

TIMESTAMP:用于存储日期和时间数据,精确到秒的小数点后9位。

column_name TIMESTAMP[(fractional_seconds_precision)]

fractional_seconds_precision指定SECOND字段小数部分的位数。它的范围从0到9,这意味着可以使用TIMESTAMP数据类型来存储到纳秒的精度。如果省略fractional_seconds_precision,则默认为6

要提取TIMESTAMP组件(如年,月,日,小时,分钟和秒),请使用EXTRACT()函数

另外,它提供INTERVAL数据类型用于存储一段时间

有两种类型的INTERVAL:

  • INTERVAL YEAR TO MONTH - 间隔使用年份和月份。
  • INTERVAL DAY TO SECOND - 使用包括小数秒在内的天,小时,分钟和秒存储间隔。

INTERVAL YEAR [(year_precision)] TO MONTH

year_precision代表YEAR字段中的位数。范围从0到9。

year_precision是可选的。如果省略year_precision参数,则默认为2。也就是说,默认情况下,最多可以存储99年和11个月的期限,这个期限必须小于100年。

二进制类型

CLOB:存储字符,最大4G。

BLOB:存储图像、声音、视频,最多4G。

二、修改表

添加列

ALTER TABLE table_name ADD column_name type constraint;

添加多列:

ALTER TABLE table_name ADD

(

column_name type constraint,

column_name type constraint, ...

);

修改表-修改列属性

ALTER TABLE table_name MODIFY column_name type constraint;

修改列定义:

ALTER TABLE table_name MODIFY column_name action;

修改列的可见性

允许或不允许NULL值

缩短或扩大列的大小

更改列的默认值

修改虚拟列的表达式

删除现有的列

ALTER TABLE table_name DROP COLUMN column_name;

删除列:

从大表中删除列的过程可能耗费时间和资源,通常使用ALTER TABLE SET UNUSED COLUMN语句来逻辑删除列;

ALTER TABLE table_name SET UNUSED COLUMN column_name;

当执行了该语句,该列就不再可见。在非高峰时段,可以使用以下语句在物理上删除未使用的列:

ALTER TABLE table_name DROP UNUSED COLUMNS;

如果要减少累积的撤消日志量,可以使用CHECKPOINT选项,该选项在指定的行数已被处理后强制检查点

ALTER TABLE table_name DROP UNUSED COLUMNS CHECKPOINT 250;

删除多列

ALTER TABLE table_name DROP (column_1,column_2,...);

重命名列的子句

ALTER TABLE table_name RENAME COLUMN column_name TO new_name;

三、删除表

drop table table_name cascade constraints;

drop table table_name purge --该子句不允许您回滚或恢复删除的表

清空表:不能回滚rollback,效率比delete高

TRUNCATE TABLE语句

四、对象重命名:

执行rename语句改变表、视图、序列或同义词的名称

rename table_name to new_name;

ALTER TABLE table_name RENAME TO new_table_name;

DDL命令操作完,不可回滚

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值