12-3 程宗武

Oracle

1.Oracle体系结构

实例

一个 Oracle 实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构 (Memory Structures)组成。一个数据库可以有 n 个实例。

用户

用户是在实例下建立的。不同实例可以建相同名字的用户。

表空间

表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数据库在逻 辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每个数据库至少有一 个表空间(称之为 system 表空间)。 每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件只能 属于一个表空间。

数据文件

数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个或者多个数 据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于一个表空间。一旦数 据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数据文件,只能删除其所属于的 表空间才行。

1.1 创建表空间

create tablespace creep
datafile 'C:\creep.dbf'
size 100m
autoextend on
next 10m

itlb 为表空间名称
datafile 指定表空间对应的数据文件(物理结构)
size 表空间的初始大小
autoextend on 自动增长 ,当表空间存储都占满时,自动增长
next 一次自动增长的大小


//删除表空间(不包含物理文件)
drop tablespace creep
drop tablespace creep including datafiles(包含物理文件)

1.2 创建用户

create user czw
identified by czw
default tablespace creep
[ACCOUNT LOCK|UNLOCK]

itlbuser 是账号
identified by 后面是密码(密码不能用数字开头)
default tablespace 后面是表空间
LOCK|UNLOCK 创建用户时是否锁定,默认为非锁定状态。锁定的用户无法正常的登录进行数据库操作

1.3 用户授权

CONNECT 角色 RESOURCE 角色 DBA 角色
是授予最终用户的典型权利,最基本的。主要应用在临时用户,特别是那些不需 要建表的用户拥有 CONNECT 角色的用户,可以与服务器建立连接会话(session,客户端对服务器连接,称为会 话)。CREATE SESSION 建立会话 RESOURCE提供给用户另外的权限以创建他们自己的表、序列、过程(procedure)、触发器 (trigger)、索引(index)等。CREATE PROCEDURE 建立过程 CREATE SEQUENCE 建立序列 CREATE TABLE 建表 CREATE TRIGGER 建立触发器 CREATE TYPE 建立类型 拥有全部特权,是系统最高权限,只有 DBA 才可以创建数据库结构,并且系统权限也 需要 DBA 授出,且 DBA 用户可以操作全体用户的任意基表,包括删除
--赋予权限
GRANT CONNECT TO czw;
GRANT RESOURCE TO czw;
-- 回收权限
REVOKE 角色|权限 FROM 用户
--修改用户的密码语法是:
ALTER USER 用户名 IDENTIFIED BY 新密码
--修改用户处于锁定(非锁定)状态
ALTER USER 用户名 ACCOUNT LOCK|UNLOCK

2.Oracle数据类型

类型 含义
CHAR(length) 存储固定长度的字符串。参数length指定了长度,如果存储的字符串长 度小于length,用空格填充。默认长度是1,最长不超过2000字节。
VARCHAR 字符串
VARCHAR2(length) 存储可变长度的字符串。length指定了该字符串的最大长度。默认长度 是1,最长不超过4000字符。
NUMBER(n) NUMBER(n)表示一个整数,长度是 n
NUMBER(m,n) NUMBER(m,n):表示一个小数,总长度是 m(默认38),小数是 n,整数是 m-n
DATE 存储日期和时间,存储纪元、4位年、月、日、时、分、秒,存储时间从 公元前4712年1月1日到公元后4712年12月31日。
TIMESTAMP 不但存储日期的年月日,时分秒,以及秒后6位,同时包含时区。
CLOB 存储大的文本,比如存储非结构化的XML文档,可存 4G
BLOB 存储二进制对象,如图形、视频、声音等,可存 4G

3.表的管理

3.1 建表

create table person(
       pid number(10) not null,
       name varchar2(10),
       gender number(1) default 1,
       birthday date
);
insert into person(pid, name, gender, birthday)
values(1, 'a', 1, to_date('1997-12-29', 'yyyy-MM-dd'));
-- 插入数据过后需要提交事务才能完成对表的修改

3.2 添加约束

约束 描述
not null (非空) 如果在列上定义了not null,那么当插入数据时,必须为列提供,数据不能 为NULL。约束只能在列级定义,不能在表级定义。
unique (唯一) 当定义了唯一约束后,该列值是不能重复的,但是可以为null。(null值可以重复)
primary key (主键) 用于唯一的标识表行的数据,当定义主键约束后,该列不但不能重复而 且不能为NULL。一张表最多只能有一个主键(联合主键),但是可以由多个unique约束。
foreign key (外键) 用于定义主表和从表之间的关系,外键约束要定义在从表上,主表则必 须具有主键约束或是unique约束,当定义外键约束后,要求外键列数据必须在主表的主键列存在 或是为NULL。
check (检查) 用于强制行数据必须满足的条件,假定在sal列上定义了check约束,并要求sal 列值在1000~2000之间,如果不在1000~2000之间就会提示出错。可以为Null
default (默认) 为列中的值设置默认值,default ....,如果已经定了值,默认值就无效了

评论