Oracle 表结构管理
表其实是数据的‘容器’。oracle有几种类型的表:
- 普通表(ordinary table)又叫堆组织表。
- 聚簇表(clustered table)
- 分区表(partition table)
- 外部表(external table)
- 临时表 (temporary table)
- 索引组织表(index-Organized table IOT)
聚簇是表的一种特殊结构,一个聚簇有多个表组成,几个表共享相同的数据块。一个聚簇有一个或者多个公共的列,多个表共享这些列(聚簇关键字 Cluster Key)。
Oracle 把多个表的数据物理的存储在一起,以加速表的连接(join),这是聚簇的特点。
只有在创建聚簇后,才能在聚簇中创建表,在往聚簇表中插入数据之前必须在聚簇上创建聚簇索引。
在应用中满足下面的条件时才适合使用聚簇:
- 建立聚簇表的目的是为了查询而不是为了修改,繁修改的表不适合创建成聚簇表;
- 查询时,常常对聚簇中的多个表进行连接
创建聚簇表的步骤
- 1,创建聚簇。
- 2,把多个表加入到聚簇中(创建聚簇表)
1: select tablespace_name from dba_tablespaces;
2: create cluster tb_cluster (postcode int) tablespace userdb;
3: SQL> create table stu (
4: 2 id int primary key,
5: 3 name varchar2(20) not null,
6: 4 postcode int)
7: 5 cluster tb_cluster (postcode);
8: SQL> create table address_info (
9: 2 postcode int primary key,
10: 3 name varchar2(30),
11: 4 detail varchar2(30))
12: 5 cluster tb_cluster (postcode);
13:
14: 表已创建。
创建索引组织表(index-Organized Table)
1: create table stu(
2: name varchar2(20) PRIMARY KEY,
3: id NUMBER,
4: detail VARCHAR2(100))
5: ORGAINZATION INDEX
6: TABLESPACE users
7: PCTTHRESHOLD 30
8: INCLUDING detail
9: OVERFLOW TABLESPACE myspace;
索引组织表中一定要有主键。ORGAINZATION INDEX 是指定创建的表示索引组织表,pctthreshold 是指定溢出比例,如果超过溢出比例的限制,则溢出部分讲被存储到溢出区中。
including 指定列名,表示从这个列以后的所有列将存储在溢出区中。overflow tablespace 指定溢出表空间。
创建外部表
先创建本地目录F:\temt\data F:\temt\bad F:\temt\log.
首先用sys身份创建目录对象,授权给用户 item
SQL> CREATE OR REPLACE DIRECTORY dat_dir AS 'f:\temtb\data';
目录已创建。
已用时间: 00: 00: 00.09
SQL> CREATE OR REPLACE DIRECTORY log_dir AS 'F:\temtb\log';
目录已创建。
已用时间: 00: 00: 00.04
SQL> CREATE OR REPLACE DIRECTORY bad_dir AS 'F:\temtb\bad';
目录已创建。
已用时间: 00: 00: 00.07
SQL> GRANT READ ON DIRECTORY dat_dir to item;
授权成功。
已用时间: 00: 00: 00.12
SQL> GRANT READ,WRITE ON DIRECTORY log_dir TO item;
授权成功。
已用时间: 00: 00: 00.01
SQL> GRANT READ,WRITE ON DIRECTORY bad_dir TO item;
授权成功。
连接item用户:
conn item
create table fitness_member
(id integer,
name VARCHAR2(14),
city VARCHAR2(30),
age int)
ORGANIZATION EXTERNAL
(TYPE ORACLE_LOADER //指定访问的驱动是ORACLE_LOADER
DEFAULT DIRECTORY dat_dir // 指定数据的默认存放路径
ACCESS PARAMETERS
(
records delimited by newline //一行为一条记录
badfile bad_dir:'empxt%a_%p.bad' //指定坏文件的名字及路径
logfile log_dir:'empxt%a_%p.log'
fields terminated by ',' //指定字段之间是以逗号进行分割的
missing field VALUES are NULL
(id,name,city,age)
)
LOCATION ('temstu.txt') //指定存放数据的文件的名字
)
PARALLEL
REJECT LIMIT UNLIMITED; //表示允许无限制的行发生错误
SQL> select * from fitness_member;
ID NAME CITY AGE
---------- -------------- ------------------------------ ----------
50016 xiao1 shanghai 22
30021 xiao2 shanghai 22
30032 xiaoW beijing 23
20033 xiaoZ guangzhou 24
已选择4行。
注释:一般情况下 %a 数据库的ID;%p 进程ID;
创建临时表
临时表用于 临时存放中间数据.
- 创建事务型临时表
1: create global temporary table gtt2
2: (name varchar2(10),
3: id number,
4: birthday date)
5: on commit delete rows;
- 创建会话型临时表
1: create global temporary table gtt2
2: (name varchar2(10),
3: id number,
4: birthday date)
5: on commit preserve rows;
修改表的定义
添加length列 alter table t add ( length number(8,3));
重命名列 alter table t rename column length to new_length;
改变列的属性 alter table t modify (new_length not null | number (4,1) |encrypt using ‘3DES168’ |DECRYPT)…..非空、改变列的宽带、加密、解密
为 表手工分配一个新的分区 alter table t allocate extent (size 50K);
删除列 alter table t drop (length,address);
表管理技巧
将表移动到一个新的段 Segment
alter table t move
storage (
initial 20K
minextents 2
…
)
将表移动到其他表空间
alter table t move tablespace myspace2;
锁住表
lock table t
in exclusive mode
nowait; //行级锁
锁住指定行
select * from t where name =’**’ for update;
让一个列自动增长:
Oracle没有提供一种便捷的方法实现表中某列的自动增长,但是我们可以使用一种变通的方式实现表中某列的自动增长。
create table myorder
2 (order_NO NUMBER,
3 order_name VARCHAR2(20),
4 order_desc VARCHAR2(20));
create SEQUENCE seq_order_NO
2 START WITH 1
3 MAXVALUE 999999999999999999999999
4 MINVALUE 1
5 NOCYCLE
6 CACHE 100;
create or replace TRIGGER trigger_myorder
2 BEFORE INSERT ON myorder
3 FOR EACH ROW
4 BEGIN SELECT seq_order_NO.NEXTVAL INTO :NEW.order_NO from dual;
5 END;
6 /
创建触发器,在插入数据之前每一行都出发,使order_NO自动自动增加,.NEXTVAL 表示取序列(seq_order_NO)的下一个值
SQL> INSERT INTO myorder
2 (order_name,order_desc)
3 VALUES
4 ('光盘采购','采购公司需要的光盘');
SQL> insert into myorder
2 (order_name,order_desc)
3 VALUES
4 ('大米','要采购来自美国的大米');
已创建 1 行。
SQL> select * from myorder;
ORDER_NO ORDER_NAME ORDER_DESC
---------- -------------------- --------------------
1 光盘采购 采购公司需要的光盘
2 大米 要采购来自美国的大米
可以看到 order_NO一列的值在自动增长。
Oracle 表结构管理的更多相关文章
- oracle表结构和表内容差异比对
oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...
- oracle表结构和表内容差异比对【原】
oracle表结构和表内容差异比对 oracle中有三种集合操作,他们会把左边和右边的select 结果集进行集合操作. union 并集 intersect 交集 minus 差集 假设有如下两张表 ...
- Oracle 表结构、索引以及分区信息查询
Oracle 表结构.索引以及分区信息查询 /* 获取表:*/ select table_name from user_tables; --当前用户的表 select table_name from ...
- Oracle表空间管理
oracle表空间相关常用命令小结: 1.ALTER DATABASE SET DEFAULT BIGFILE TABLESPACE; //修改表空间数据文件类型 2.ALT ...
- oracle表结构
表管理 新建表 语法 create table 表名 ( 列名1 类型(长度), 列名2 类型(长度), 列名3 类型(长度) ); create table:关键字,建表 后跟新建表的表名,表名长度 ...
- ORACLE表空间管理维护
1:表空间概念 在ORACLE数据库中,所有数据从逻辑结构上看都是存放在表空间当中,当然表空间下还有段.区.块等逻辑结构.从物理结构上看是放在数据文件中.一个表空间可由多个数据文件组成. 如下图所示, ...
- Oracle表结构转换SqlSERVER表结构 脚本
在审计工作中,有时需要将Oracle的表结构修改后再SqlSERVER中创建表结构,然后将数据导入到SqlSERVER中,在修改表结构的过程中方法狠多.手工修改,最蠢的方法,或者用工具UE批量修改,还 ...
- oracle 表空管理方式(LMT)、ASSM段管理方式、一级位图块、二级位图块、三级位图块。
今天是2013-12-16,今天和明天是我学习oracle生涯中一个特殊的日子.今天晚上进行了一下表空间管理方式的学习,在此记录一下笔记. 对于oracle数据库最小i/0单位是数据块,最想分配空间单 ...
- 五、oracle 表的管理
一.表名和列名的命名规则1).必须以字母开头2).长度不能超过30个字符3).不能使用oracle的保留字4).只能使用如下字符 a-z,a-z,0-9,$,#等 二.数据类型1).字符类char 长 ...
随机推荐
- 低代码开发,推荐一款Web 端自动化神器:Automa
1. Automa介绍 又到了优秀工具推荐的时候了,今天给大家分享一款前端自动化操作神器: Automa . 首先了解一下Automa是什么? Automa它定位是一款 Chrome 插件,也就意味着 ...
- 巧用Python快速构建网页服务器
经常做web开发,要调试一个网页,直接打开文件,用file模式显然是业余的. 但动辄要部署个IIS或APACHE站点,也确实太累,怎么办? 逐浪君此前有分享过通过http-server来构建快速的we ...
- [luogu1438]无聊的数列
考虑令$b_{i}=a_{i+1}-a_{i}$,那么1操作相当于对L加上K,对(L,R]区间加上D,对R+1减去K+(R-L)*D,然后询问区间和即可 1 #include<bits/stdc ...
- [atARC111F]Do you like query problems
(以下修改指1和2类操作,询问指3类操作,操作指修改或询问) 注意到总方案数确定,那么不妨求出答案的期望,再乘上方案数即为答案 (这里从期望的角度考虑只是为了描述方便,并没有太大的实际意义) 设$E( ...
- volatile不能保证数据完整性的小案例
package juc; import java.util.Collections; import java.util.HashSet; import java.util.Set; public cl ...
- Codeforces 1175F - The Number of Subpermutations(线段树+单调栈+双针/分治+启发式优化)
Codeforces 题面传送门 & 洛谷题面传送门 由于这场的 G 是道毒瘤题,蒟蒻切不动就只好来把这场的 F 水掉了 看到这样的设问没人想到这道题吗?那我就来发篇线段树+单调栈的做法. 首 ...
- 搜索工具Wox简单使用
目录 下载安装 几个常用命令 自定义 Wox是快速搜索小工具,内置了everything(需要先安装),但比everything好用.不止是搜文件,网页.系统等都可以快速搜索,还可以自定义. 下载安装 ...
- R语言与医学统计图形-【33】生存曲线、森林图、曼哈顿图
1.生存曲线 基础包survival+扩展包survminer. survival包内置肺癌数据集lung. library(survival) library(survminer) str(lung ...
- ggplot2 图例及分页参数
图例: 1 theme(legend.title =element_blank()) 2 guides(fill = guide_legend(title = NULL)) # 去掉图例title 3 ...
- urllib的基本使用介绍
1. urllib中urlopen的基本使用介绍 1 ### urllib中urlopen的基本使用介绍 2 3 ## urlopen的基本用法(GET请求) 4 import urllib.requ ...