创建表空间和表
概念: 数据表空间 (Tablespace) :存放数据总是需要空间, Oracle把一个数据库按功能划分若干空间来保存数据。当然数据存放在磁盘最终是以文件形式,所以一盘一个数据表空间包含一个以上的物理文件
数据表:在仓库,我们可能有多间房子,每个房子又有多个货架,每架又有多层。 我们在数据库中存放数据,最终是数据表的单元来存储与管理的。
数据文件:以上几个概念都是逻辑上的, 而数据文件则是物理上的。就是说,数据文件是真正“看得着的东西”,它在磁盘上以一个真实的文件体现
1、创建表空间:
格式:create tablespace 表间名 datafile ‘数据文件名’ size 表空间大小
例: create tablespace data_test datafile ‘F:\Oracle\test\data.dbf’ size 2000M; (文件名为绝对路径)
2、创建用户
格式: create user 用户名 identified by 密码 default tablespace 表空间表;
create user xyt identified by eaten default tablespace data_test;
(用户名为 xyt,密码为 eaten, 缺省表空间为 data_test)
(缺省表空间表示 用户xyt今后的数据如果没有专门指出,其数据就保存在 data_test中, 也就是保存在对应的物理文件 F:\Oracle\test\data.dbf中)
3、表空间与临时表空间
表空间是数据库的逻辑划分,一个表空间只能属于一个数据库。所有的数据库对象都存放在指定的表空间中。但主要存放的是表, 所以称作表空间。Oracle临时表空间主要用来做查询和存放一些缓冲区数据。临时表空间,可自动释放;而表空间中存储表数据、函数、过程、序列等。是随数据库永久存在的。
表空间:
CREATE USER lll IDENTIFIED BY 123456 PROFILE DEFAULT DEFAULT TABLESPACE lllspace ACCOUNT UNLOCK;
临时表空间:
CREATE USER kkk IDENTIFIED BY 654321 DEFAULT TABLESPACE kkkspace TEMPORY TABLESPACE kkk_temp;
4、授权给新用户
grant connect,resource to xyt;
–表示把 connect,resource权限授予xyt用户
grant dba to xyt;
–表示把 dba权限授予给 xyt
例:grant create session,create table,create view,create sequence,unlimited tablespace to xyt;
5、创建数据表
进入xyt用户
sqlplusw xyt/eaten 然后在用户xyt中创建数据表
格式: create table 数据表名
oracle数据类型及含义:
类型 | 含义 |
---|---|
CHAR(length) | 存储固定长度的字符串。参数length指定了长度,如果存储的字符串长度小于length,用空格填充。默认长度是1,最长不超过2000字节。 |
VARCHAR2(length) | 存储可变长度的字符串。length指定了该字符串的最大长度。默认长度是1,最长不超过4000字符。 |
NUMBER(p,s) | 既可以存储浮点数,也可以存储整数,p表示数字的最大位数(如果是小数包括整数部分和小数部分和小数点,p默认是38为),s是指小数位数。可存负数 |
DATE | 存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从公元前4712年1月1日到公元后4712年12月31日。 |
TIMESTAMP | 不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。 |
CLOB | 存储大的文本,比如存储非结构化的XML文档 |
BLOB | 存储二进制对象,如图形、视频、声音等。 |
创建表时给字段加默认值和约束条件:
建表时加默认值: 字段 DEFAULT 值
例:is_pass NUMBER(1) default 1 --是否及格
建表时加约束条件
例: 非空 NOT NULL,不允许重复 UNIQUE,关键字 PRIMARY KEY,按条件检查 CHECK (条件), 外键 REFERENCES 表名(字段名)
6、创建约束
ALTER TABLE 表名 ADD CONSTRAINT 约束
例:ALTER TABLE student ADD CONSTRAINT pk_student PRIMARY KEY(id); //主键约束
ALTER TABLE student ADD CONSTRAINT ck_student_gender CHECK(gender=‘男’ or gender=‘女’); //check约束
ALTER TABLE student ADD CONSTRAINT ck_student_age CHECK(age<=100 and age>=0); //check约束
7、同义词
概念: Oracle数据库中提供了同义词管理的功能。同义词是数据库方案对象的一个别名,经常用于简化对象访问和提高对象访问的安全性。在使用同义词时,Oracle数据库将它翻译成对应方案对象的名字。与视图类似,同义词并不占用实际存储空间,只有在数据字典中保存了同义词的定义。在Oracle数据库中的大部分数据库对象,如表、视图、同义词、序列、存储过程、包等等,数据库管理员都可以根据实际情况为他们定义同义词。
分类: Oracle同义词有两种类型,分别是公用Oracle同义词与私有Oracle同义词。
1)公用Oracle同义词:由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。公用同义词往往用来标示一些比较普通的数据库对象,这些对象往往大家都需要引用。
2)私有Oracle同义词:它是跟公用同义词所对应,他是由创建他的用户所有。当然,这个同义词的创建者,可以通过授权控制其他用户是否有权使用属于自己的私有同义词。
常见用法:(理解与使用的重点) 当需要频繁使用其他人创建的表时,如果没有同义词的话,必须使用user.table的形式,此时创建一个同义词就会特别方便。
创建与删除:
私有同义词创建:
CREATE SYNONYM d_sum FOR dept_sum_vu;
公有同义词创建:
CREATE PUBLIC SYNONYM s_dept FOR alice.s_dept;
删除:
DROP [PUBLIC] SYNONYM d_sum/s_dept;
8、扩展表空间(可能能解决no space left on device的问题)
1.查看表空间的名字和所属文件
select tablespace_name, file_id, file_name,round(bytes/(10241024),0) total_space from dba_data_files order by tablespace_name;
round(bytes/(10241024),0) :将B换成MB,round是四舍五入,0是保留0位小数
2.增加数据文件
ALTER TABLESPACE game ADD DATAFILE ‘/oracle/oradata/db/GAME02.dbf’ SIZE 1000M;
3.手动增加数据文件尺寸
ALTER DATABASE DATAFILE ‘/oracle/oradata/db/GAME.dbf’ RESIZE 4000M;
4.设定数据文件自动扩展
ALTER DATABASE DATAFILE ‘/oracle/oradata/db/GAME.dbf’ AUTOEXTEND ON NEXT 100M MAXSIZE 10000M;
5.设定后查看表空间信息
SELECT A.TABLESPACE_NAME,A.BYTES TOTAL,B.BYTES USED, C.BYTES FREE,(B.BYTES100)/A.BYTES “% USED”,(C.BYTES100)/A.BYTES “% FREE” FROM SYS.SM
T
S
A
V
A
I
L
A
,
S
Y
S
.
S
M
TS_AVAIL A,SYS.SM
TSAVAILA,SYS.SMTS_USED B,SYS.SM$TS_FREE C WHERE A.TABLESPACE_NAME=B.TABLESPACE_NAME AND A.TABLESPACE_NAME=C.TABLESPACE
其他部分基本类似mysql,此处略。