创建表空间和表
ORACLE物理上是由磁盘上的以下几种文件:数据文件和控制文件和LOGFILE/logfile构成的
oracle中的表就是一张存储数据的表。表空间是逻辑上的划分。方便管理的。
数据表空间 (Tablespace)
存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据。当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件
数据表:在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层。 我们在数据库中存放数据,最终是数据表的单元来存储与管理的。
数据文件:以上几个概念都是逻辑上的, 而数据文件则是物理上的。就是说,数据文件是真正“看得着的东西”,它在磁盘上以一个真实的文件体现。
1、创建表空间
格式:create tablespace 表空间名 datafile "数据文件名" size 表空间大小[如:20m]
例子:create tablespace data_test datafile "D:01.dbf" size 20m;
2.建好tablespace,就可以建用户了,并指定用户默认的表空间
格式:create user 用户名 identified by 密码 default tablespace 表空间名;
例子:create user test identified by test123 default tablespace sp001;
3.授权给新用户
格式:grant connect , resource,dba to test; //给test用户分配connect,resource,dba角色
格式:grant create session to test; //允许用户登录数据库权限
格式:grant create table test; //允许用户创建表权限
格式:grant unlimited tablespace test; //允许用户在其他表空间随意建表
4.创建数据库表(student,course,score表)


5.创建约束则使用如下命令:
格式:alter table 表名 add constraint 约束名 约束内容。
oracle建表、建主键、外键基本语法
创建表格语法:
增加主键:
alter table 表名 add constraint 主键名 primary key (字段名1);
增加外键:
alter table 表名 add constraint 外键名 foreign key (本表字段名) references 关联表 (关联表字段名);
在建立表格时就指定主键:
主键和外键一起建立:
有哪些约束条件:
创建表时可以给字段加上约束条件 例如: 非空 NOT NULL ,不允许重复 UNIQUE ,关键字 PRIMARY KEY ,按条件检查 CHECK (条件), 外键 REFERENCES 表名(字段名)
创建表的例子:
添加约束:
1. primary key
格式:alter table 表名 add constraint 约束名 primary key(字段名);
2. foreign key
格式:alter table 表名 add constraint 约束名 foreign key(字段名) references dept(字段名);
3. check
格式:alter table 表名 add constraint 约束名 check (sex in ("F","M"));
4. not null
格式:alter table 表名 modify 字段名constraint 约束名 not null;
5. unique
格式:alter table 表名 add constraint 约束名 unique(字段名);
6. default
格式:alter table 表名 modify 字段名char(2) default "M";
查看表约束信息:
格式:select * from user_constraints where table_name="表名";
修改表:
1.重命名
格式:rename 原表名 to 新表名;
2.清除表中所有数据
格式:truncate table 表名;
格式:delete from 表名;
格式:delete * from 表名;
3.删除表
格式:drop table 表名;
修改列:
1.添加列
格式: alter table 表名 add 字段名 字段类型(长度);
2.删除列
格式:alter table 表名 drop column 字段名;
3.修改列
格式:alter table 表名 modify 字段名 字段类型(长度);
格式:alter table 表名 modify hiredate default sysdate+1; //修改默认值
4.禁用约束
格式:alter table 表名 disable constraint 约束名;
5.启用约束
格式:alter table 表名 enable constraint 约束名;
6.向列添加注释
格式:comment on column 表名.字段名 is "注释";
创建表空间分为四步:
第一步:创建临时表空间
create temporary tablespace 临时表空间名 tempfile "文件名路径" size 50m autoextend on next 50m maxsize 20480m extent management local;
第二步:创建数据表空间
create tablespace 表空间名 logging datafile "文件名路径"size 50m autoextend on next 50m maxsize 20480m extent management local;
第三步:创建用户并指定表空间
create user 用户名 identified by 密码 default tablespace 表空间名 temporary tablespace 临时表空间名;
第四步:给用户授予权限
grant connect , resource to 用户名;
//以后以该用户登录,创建的任何数据库对象都属于user_temp 和user_data表空间,
这就不用在每创建一个对象给其指定表空间了
撤权: revoke 权限... from 用户名;
删除用户命令:drop user 用户名 cascade;
建立表空间: create tablespace 表空间名 datafile "文件名路径" size 500m uniform size 128k; //指定区尺寸为128k,如不指定,区尺寸默认为64k;
删除空的表空间,但是不包含物理文件:
drop tablespace 表空间名称;
删除非空表空间,但是不包含物理文件:
drop tablespace 表空间名称 including contents;
删除空表空间,包含物理文件:
drop tablespace tablespace_name including datafiles;
删除非空表空间,包含物理文件:
drop tablespace tablespace_name including contents and datafiles;
如果其他表空间中的表有外键等约束关联到了本表空间中的表的字段,就要加上cascade constraints:
drop tablespace 表空间名称 including contents and datafiles cascade constraints;
建立UNDO表空间: create undo tablespace 表空间名 datafile "文件名路径" size 500m ; #注意:在OPEN状态下某些时刻只能用一个UNDO表空间,如果要用新建的表空间,必须切换到该表空间: alter system set undo_tablespace=表空间名;
建立临时表空间:create temporary tablespace 临时表空间名 tempfile"文件路径名" size 50m
改变表空间状态
1.使表空间脱机
alter tablespace 表空间名 offline;
如果是意外删除了数据文件,则必须带有recover选项
alter tablespace 表空间名 offline for recover;
2.使表空间联机
alter tablespace 表空间名 online;
3.使数据文件脱机
alter database datafile 3 offline;
4.使数据文件联机
alter database datafile 3 online;
5.使表空间只读
alter tablespace 表空间名 read only;
6.使表空间可读写
alter tablespace 表空间名 read write;
扩展表空间
首先查看表空间的名字和所属文件
select tablespace_name,file_id,file_name,round(bytes/(1024*1024),0) total_space from dba_data_files order by tablespace_name;
1.增加数据文件
alter tablespace 表空间名 add datafile "文件名路径" size 1000m;
2.手动增加数据文件尺寸
alter database datafile "文件名路径" resize 4000m;
3.设定数据文件自动扩展
alter database datafile "文件名路径" autoextend on next 100m maxsize 10000m;
以上就是个人整理出来的Oracle创建表空间和表,供大家参考和学习。




