1、表空间TableSpace
作用:是用来建立用户与数据库文件之间的关系,用户插入的数据由表空间来决定保存到哪一个数据文件(.dbf)中。
A、语法
create tablespace 表空间名
datafile 数据文件名
size 初始大小
autoextend on next 步长
maxsize 最大大小
extent management local
临时表空间
create temporary tablespace 表空间名
tempfile 数据文件名
size 初始大小
autoextend on next 步长
maxsize 最大大小
extent management local
B、 默认的表空间:system
默认的临时表空间:temp
C、查看表空间
select * from v$tablespace;
查看所有的表空间
select file_name,tablespace_name from dba_data_files;
查看表空间中的数据文件
D、删除表空间
drop tablespace 表空间名 including contents and datafiles
E、注意点
1)一个表空间只能位于一个数据库
2)一个表空间可以关联多个数据文件
3)一个数据库可以有多个表空间
4)一个数据文件只能属于一个表空间
2、用户
A、创建用户
create user 用户名 identified by 密码 default tablespace 表空间 temporary tablespace 临时表空间;
案例:
create user ll identified by ll;
create user zmy identified by zmy default tablespace ts16 temporary tablespace temp;
B、给用户授权
用户创建之后,没有任何权限,必须给用户授权。
权限分为两种:一种是针对数据库对象(表、视图、表空间等)的权限,另一种是系统级别的权限。
对象权限:
允许用户操纵一些特定的对象,如读取视图,可更新某些列、执行存储过程等
select, update, insert, all …… //all包括所有权限
execute //执行存储过程权限
授权:grant 权限/角色列表 on 对象 to 用户;
撤消:revoke 权限/角色列表 on 对象 from 用户;
系统权限:
允许用户执行特定的数据库动作,如创建表、创建索引、连接实例等
create table、create tablespace、drop talbe等都是系统权限
授权:grant 权限/角色列表 to 用户
撤消:revoke 权限/角色列表 from 用户;
角色:角色是权限的集合,将用户与角色关联,角色有什么权限用户就有什么权限。
内置角色:connect(与登陆相关的的权限集合)、resource(与资源相关的权限集合)
grant connect, resource to ll;
创建角色:create role 角色名;
3、序列(sequence)
序列用于产生一个有序的数字。序列是一个数据库对象。
A、创建序列
CREATE SEQUENCE 序列名
[INCREMENT BY 步长(默认1)]
[START WITH 开始值(默认1)]
[{MAXVALUE / MINVALUE n|NOMAXVALUE}] 最大大小
[{CYCLE|NOCYCLE}] 是否循环
[{CACHE n|NOCACHE}];缓存,默认是20
例:
create sequence SEQ_BLOOD_SUGAR
minvalue 1 --最小值
nomaxvalue --不设置最大值(由机器决定),或 根据表字段的值范围设置 maxvalue
maxvalue 9999999999 -- 最大值
start with 1 --从1开始计数,数值可变
increment by 1 --每次加1,数值可变
nocycle --一直累加,不循环;cycle:达到最大值后,将从头开始累加
nocache; --不建缓冲区。 如果建立cache那么系统将自动读取cache值个seq,这样会加快运行速度;如果在单机中使用cache,或者oracle死了,那么下次读取的seq值将不连贯,所以不建议使用cache。
B、序列的属性
nextval:返回下一个值
currval:返回当前值
insert into ll.t(a,b,c) values(sq16.nextval,sq16.nextval,sq16.nextval);
4、创建表
Oracle 创建表之前判断表是否存在,如果存在则删除已有表
declare
num number;
begin
select count(1) into num from user_tables where table_name = upper('sys_area') ;
if num > 0 then
execute immediate 'drop table sys_area' ;
end if;
end;
– 建表
CREATE TABLE APP_BODY_WEIGHT_DATA
(
"ID" NUMBER(10,0) NOT NULL,
"USER_ID" NUMBER(10,0),
"HEIGHT" NUMBER(6,2),
"WEIGHT" NUMBER(6,2),
"BMI_LEVEL" NUMBER(2,0),
"DAY_STR" VARCHAR2(12),
"HOUR_STR" VARCHAR2(12),
"CREATE_TIME" DATE,
"SYS_TIME" DATE,
PRIMARY KEY ("ID")
);
– 区域表
CREATE TABLE sys_area
(
id Number(4) NOT NULL,
parent_id varchar2(64) NOT NULL,
parent_ids varchar2(2000) NOT NULL,
name nvarchar2(100) NOT NULL,
sort number(10,0) NOT NULL,
code varchar2(100),
type char(1),
create_by varchar2(64) NOT NULL,
create_date timestamp NOT NULL,
update_by varchar2(64) NOT NULL,
update_date timestamp NOT NULL,
remarks nvarchar2(255),
del_flag char(1) DEFAULT '0' NOT NULL,
PRIMARY KEY (id)
);