Oracle04-基本使用
1、创建表空间
(1)创建语句
create tablespace testdata
datafile 'c:\datafile\testdata.dbf' size 100m
autoextend on
next 10m
(2)参数说明
- testdata:表空间名称
- datafile:用于设置物理文件名称,注意这里datafile 文件夹需要先创建,否则报错
- size:用于设置表空间的初始大小
- autoextend on:用于设置自动增长,如果存储量超过初始大小,则开始自动扩容
- next:用于设置扩容的空间大小
2、创建用户授权
(1)创建用户
create user testuser
identified by 123456
default tablespace testdata
- create user:创建用户
- identified by:用于设置用户的密码
- default tablesapce:用于指定默认表空间名称

(2)用户授权
grant dba to testuser
- 给用户 testuser 赋予 DBA 权限后即可登陆
(3)默认用户密码
- Oracle数据库安装时会预置多个系统账户,以下是常见的默认用户及密码清单(注意:不同版本可能存在差异)
- SYS
- 默认密码:
change_on_install
- 权限:最高权限(SYSDBA),拥有数据字典和控制文件的管理权限。
- 注意:Oracle 10.2版本后可能要求安装时自定义密码。
- SYSTEM
- 默认密码:
manager
- 权限:普通管理员权限,用于创建其他用户和管理表空间。
- SCOTT
- 默认密码:
tiger
- 用途:预置示例用户,包含测试表(EMP/DEPT),适合学习SQL操作。
- SH
- 默认密码:
sh
- 用途:大数据样本用户,用于演示分析功能。
- DBSNMP
- 默认密码:
dbsnmp
- 用途:用于Oracle Enterprise Manager监控。
- SYSMAN
- 默认密码:
oem_temp
- 用途:Oracle管理服务(OMS)的管理账户。
- OUTLN
- 默认密码:
outln
- 用途:存储SQL执行计划大纲。
- 注意事项
- 安全建议:
- 安装后必须修改默认密码,避免未授权访问。
- 部分账户(如SCOTT)可能默认锁定,需通过SQL解锁:
ALTER USER scott ACCOUNT UNLOCK;
- 版本差异:Oracle 11g及以上版本可能要求安装时自定义核心账户密码,而非使用默认值。
- 完整清单:更多账户(如CTXSYS、MDSYS等)可参考官方文档或通过SQL查询:
SELECT username, account_status FROM dba_users;
(4)默认角色权限
- 常用角色权限
- CONNECT
- 权限:允许用户连接到数据库并执行基础操作,例如:
CREATE SESSION
(创建会话)CREATE TABLE/VIEW/SYNONYM
(创建表、视图、同义词)ALTER SESSION
(修改会话参数)。
- 用途:适用于临时用户或仅需基础访问权限的场景。
- RESOURCE
- 权限:允许用户创建和管理数据库对象,例如:
CREATE TABLE/SEQUENCE/PROCEDURE
(创建表、序列、存储过程)CREATE TRIGGER/INDEX/CLUSTER
(创建触发器、索引、聚簇)。
- 用途:面向开发者或需要创建复杂对象的用户。
- DBA
- 权限:拥有所有系统权限,包括:
- 无限制的表空间管理
- 用户权限分配(如授予/回收其他用户的权限)
- 数据库结构修改(如创建/删除用户、表空间)。
- EXP_FULL_DATABASE / IMP_FULL_DATABASE
- 权限:允许通过数据泵工具(Data Pump)执行全库导出/导入操作。
- DELETE_CATALOG_ROLE / EXECUTE_CATALOG_ROLE / SELECT_CATALOG_ROLE
- 权限:分别控制对数据字典的删除、执行(如包、过程)和查询权限。
- AQ_ADMINISTRATOR_ROLE / AQ_USER_ROLE
- 权限:管理高级队列(Advanced Queuing)功能,支持消息队列的创建和订阅。
- RECOVERY_CATALOG_OWNER
- 权限:管理恢复目录(Recovery Catalog),用于备份和恢复操作。
- 自定义角色管理
CREATE ROLE custom_role;
GRANT CREATE TABLE, CREATE VIEW TO custom_role;
- **授权与回收:**
GRANT custom_role TO user1;
REVOKE custom_role FROM user1;
- 注意事项
- 版本差异:
- Oracle 11g及以上版本建议自定义角色,而非依赖预定义的CONNECT/RESOURCE/DBA角色。
- 部分角色(如SCOTT用户)可能默认被锁定,需手动解锁。
- **权限查询:**通过以下SQL查看角色权限:
SELECT * FROM ROLE_SYS_PRIVS WHERE ROLE = '角色名';
- **安全建议:*** 避免直接授予DBA角色给普通用户。* 通过角色分层管理权限,例如将业务权限封装到自定义角色中。
3、表的增删改
(1)表的创建
CREATE TABLE 表名称(字段名 类型(长度) primary key,字段名 类型(长度), .......
);
create table t_owners
(
id number primary key,
name varchar2(30),
addressid number,
housenumber varchar2(30),
watermeter varchar2(30),
adddate date,
ownertypeid number
);
(2)约束类型
- 主键(
**PRIMARY KEY**
) - 非空(
**NOT NULL**
) - 唯一(
**UNIQUE**
)
(3)数据类型
- 字符型
- CHAR : 固定长度的字符类型,最多存储 2000 个字节
- VARCHAR2 :可变长度的字符类型,最多存储 4000 个字节
- LONG : 大文本类型。最大可以存储 2 个 G
- 数值型:NUMBER : 数值类型
- NUMBER(5) 最大可以存的数为 99999
- NUMBER(5,2) 最大可以存的数为 999.99
- 日期型
- DATE:日期时间型,精确到秒
- TIMESTAMP:精确到秒的小数点后 9 位
- 二进制型(大数据类型)
- CLOB : 存储字符,最大可以存 4 个 G
- BLOB:存储图像、声音、视频等二进制数据,最多可以存 4 个 G
(4)表的修改
ALTER TABLE 表名称 ADD(列名 1 类型 [DEFAULT 默认值],列名 1 类型
[DEFAULT 默认值]...)
ALTER TABLE T_OWNERS ADD
(REMARK VARCHAR2(20), OUTDATE DATE
);
ALTER TABLE 表名称 MODIFY(列名 1 类型 [DEFAULT 默认值],列名 1 类型
[DEFAULT 默认值]...)
ALTER TABLE T_OWNERS MODIFY
(
REMARK CHAR(20),
OUTDATE TIMESTAMP
);
ALTER TABLE 表名称 RENAME COLUMN 原列名 TO 新列名
ALTER TABLE T_OWNERS RENAME COLUMN OUTDATE TO EXITDATE;
ALTER TABLE 表名称 DROP COLUMN 列;
ALTER TABLE 表名称 DROP (列名 1,列名 2...);
ALTER TABLE T_OWNERS DROP COLUMN REMARK;
(5)表的删除
DROP TABLE 表名称;
4、数据的增删改
(1)插入数据
- 插入数据语法,执行 INSERT 后一定要再执行 commit 提交事务
INSERT INTO 表名[(列名 1,列名 2,...)]VALUES(值 1,值 2,...);
commit;
- 例子如下,语句中的 sysdate 是系统变量用于获取当前日期
insert into T_OWNERS VALUES (1,' 张三丰',1,'2-2','5678',sysdate,1);
commit;
(2)修改数据
- 修改数据语法,执行 UPDATE 后一定要再执行 commit 提交事务
UPDATE 表名 SET 列名 1=值 1,列名 2=值 2,....WHERE 修改条件;
commit;
update T_OWNERS set adddate=adddate-3 where id=1;
commit;
(3)删除数据
- 删除数据语法,执行 DELETE 后一定要再执行 commit 提交事务
DELETE FROM 表名 WHERE 删除条件;
commit;
delete from T_OWNERS where id=2;
commit;
TRUNCATE TABLE 表名称;
- 比较 truncat 与 delete 实现数据删除?
- delete 删除的数据可以 rollback
- delete 删除可能产生碎片,并且不释放空间
- truncate 是先摧毁表结构,再重构表结构,数据无法回滚
5、数据导入导出
- 当我们使用一个数据库时,总希望数据库的内容是可靠的、正确的,但由于计算机系统的故障(硬件故障、软件故障、网络故障、进程故障和系统故障)影响数据库系统的操作,影响数据库中数据的正确性,甚至破坏数据库,使数据库中全部或部分数据丢失。因此当发生上述故障后,希望能重构这个完整的数据库该处理称为数据库恢复,而要进行数据库的恢复必须要有数据库的备份工作。
(1)整库导出
- 整库导出命令,添加参数 full=y 就是整库导出。
exp system/123456 full=y
- 执行命令后会在当前目录下生成一个叫 EXPDAT.DMP,此文件为备份文件。如果想指定备份文件的名称,则添加 file 参数即可,命令如下
exp system/123456 file=文件名 full=y
(2)整库导入
- 此命令如果不指定 file 参数,则默认用备份文件 EXPDAT.DMP 进行导入
imp system/123456 full=y
- 如果指定 file 参数,则按照 file 指定的备份文件进行恢复
imp system/123456 full=y file=文件名
(3)按用户导出
exp system/123456 owner=testuser file=testuser.dmp
(4)按用户导入
imp system/123456 file=testuser.dmp fromuser=testuser
(5)按表导出
- 用 tables 参数指定需要导出的表,如果有多个表用逗号分割即可
exp testuser/123456 file=a.dmp tables=t_account,a_area
(6)按表导入
imp testuser/123456 file=a.dmp tables=t_account,a_area