一:表操作
create user learn_object identified by test;
--给予权限
grant dba to learn_object;
--创建表
create table tb_userinfo(
userid number primary key, --primary key表示主键 (唯一 并且不能为空)
username varchar2(20) not null, --not null 表示当前的列 不允许插入 null 和 ''
sex number default 0 --默认值 default 值 当插入数据为空时 自动填上默认值 插入不为空的值 插入当前值
)
--修改表名称
rename tb_userinfo to userinfo
--修改列名
alter table userinfo rename column sex to tb_sex
--修改列类型
alter table userinfo modify username char(20)
--添加列
alter table userinfo add age number default 18
--删除列
alter table userinfo drop column age
二:删除操作
删除表:把表中所有的行和表结构都删除。
DROP TABLE 表名;--Oracle中删除表时并没有直接删除,只是放置到“回收站”
显示回收站中的对象:SHOW RECYCLEBIN;
恢复回收站中的表:FLASHBACK TABLE 表名 TO BEFORE DROP;
删除回收站中的表:PURGE TABLE 表名;
彻底删除 不进回收站:DROP TABLE 表名 PURGE;
截断表:删除表中所有的数据行,重置表的存储空间。
TRUNCATE TABLE 表名;
delete from 表名
区别 :
1 truncate是ddl语句 delete 是dml语句 都可以删除数据行
2 truncate不需要提交事物 delete需要提交事物
3 truncate删除表数据及表的存储 无法恢复 delete删除 可以使用归档日志恢复
4 delete可以删除指定条件的记录
三 表分区
意义 :可以容灾(出现事故后 还有一部分数据保留)
范围(range(字段名))
范围分区将数据基于范围映射到每一个分区,这个范围是你在创建分区时指定的分区键决定的。这种分区方式是最为常用的,并且分区键经常采用日期
格式:
create table XXX() partition by range(表中数值类型的字段名)(partition 分区名 values less than 具体值 [tablespace 表空间名] ,…)
列表(list(字段名))
该分区的特点是某列的值只有几个
…partition by list(字段名) (partition 分区名 values (值列表)值 [tablespace 表空间名] ,…))
哈希(hash)
分区是在列值上使用散列算法,以确定将行放入哪个分区中。当列的值没有合适的条件时,建议使用散列分区。
…partition by hash(表中数值类型的字段名)(partition 分区 [tablespace 表空间名] ,…)
… partition by hash(表中数值类型的字段名)PARTITIONS n STORE IN (s1,….sn)
列表(list(字段名))
复合分区(分区组合)