Oracle数据库
1、oracle数据库简介
ORACLE数据库系统是美国ORACLE公司(甲骨文)提供的以分布式数据库为核心的一组软件产品,是目前最流行的关系型数据库之一。它是在数据库领域一直处于领先地位的产品。系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的 适应高吞吐量的数据库解决方案
特点:
1、大型数据库、多用户、
2、安全性高
3、分布式和高并发操作
2、oracle的启动和连接 管理
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OwT9Sen8-1596781057396)(oracle01.assets/1580978317256.png)]
OracleServiceORCL:oracle实例服务
Listener:监听服务,监听客户端发送的请求
连接
通过sql plus
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-EvjGcb6D-1596781057402)(oracle01.assets/1580978474600.png)]
3、oracle体系结构
1.数据库
Oracle 数据库是数据的物理存储。这就包括(数据文件 ORA 或者 DBF、控制文件、联机日
志、参数文件)。其实 Oracle 数据库的概念和其它数据库不一样,这里的数据库是一个操作系统
只有一个库。可以看作是 Oracle 就只有一个大数据库
2 实例
一个 Oracle 实例(Oracle Instance)有一系列的后台进程(Backguound Processes)和内存结构
(Memory Structures)组成。一个数据库可以有 n 个实例。
3.用户
用户是在实例下建立的。不同实例可以建相同名字的用户。
4.表空间
表空间是 Oracle 对物理数据库上相关数据文件(ORA 或者 DBF 文件)的逻辑映射。一个数
据库在逻辑上被划分成一到若干个表空间,每个表空间包含了在逻辑上相关联的一组结构。每
个数据库至少有一个表空间(称之为 system 表空间)。
每个表空间由同一磁盘上的一个或多个文件组成,这些文件叫数据文件(datafile)。一个数据文件
只能属于一个表空间。
5.数据文件(dbf、ora)
数据文件是数据库的物理存储单位。数据库的数据是存储在表空间中的,真正是在某一个
或者多个数据文件中。而一个表空间可以由一个或多个数据文件组成,一个数据文件只能属于
一个表空间。一旦数据文件被加入到某个表空间后,就不能删除这个文件,如果要删除某个数
据文件,只能删除其所属于的表空间才行。
6.相互关系
4、内置用户
SYS用户
SYS用户是Oracle中的超级用户,主要用于维护系统信息和管理实例,数据库中数据字典的所有表和视图都存储在SYS模式中
SYSTEM用户
SYSTEM用户是Oracle中默认的管理员,它拥有DBA权限。该用户拥有Oracle管理工具使用的内部表和视图,通常通过SYSTEM用户管理Oracle数据库的用户、权限和存储等 Ø SCOTT用户(一般刚开始scott用户被锁定,要用system用户登录 用一下语句解锁用户操作
SCOTT用户
SCOTT是Oracle数据库的一个示范账号**。SCOTT用户模式包含4张示范表,SCOTT用户的默认口令为tiger 对于日常的管理任务,建议使用SYSTEM用户登录Oracle数据库服务器。
- sys:超级管理员。系统字典表的所属者就是他。
- system:管理员。所有系统视图 系统表他都能查,部分可以操作。
- scott:示例账号。默认密码都是tiger。并且默认是锁定状态。
1.切换用户
#conn 用户名/密码 sys system 必须使用sysdab 身份登陆
conn sys/sys as sysdba;
conn system/manager as sysdba;
conn scott/tiger;
as sysdba 就是以sysdba登录,oracle登录身份有三种:
1、normal 普通身份;
2、sysdba 系统管理员身份;拥有最高的系统权限
3、sysoper 系统操作员身份。主要用来启动、关闭数据库,sysoper 登陆后用户是 public
2.解锁/锁定用户
再sys用户下
锁定用户
SQL> alter user scott account lock;
解锁用户
SQL> alter user scott account unlock;
5.创建表空间
以sysdab身份登陆scott,创建表空间
create tablespace wgzspace
datafile 'c:\wgzspace.dbf' # 指定位置
size 20m #初始空间大小
autoextend on #自增
next 10m; #每次自增10m
删除表空间
drop tablespace wgzspace including contents and datafiles;
6.创建用户
- 创建用户
create user user_wgz_1
identified by 123456 #密码
default tablespace wgzspace; #指定用户的表空间
- 授予用户dba角色,若不授予权限则不能登陆
grant dba to user_wgz_1;
- 删除用户
可以删除用户的同时删除用户的数据
drop user user_wgz_1 cascade;
Oracle 中已存在三个重要的角色:connect 角色,resource 角色,dba 角色
- CONNECT 角色: --是授予最终用户的典型权利,最基本的
ALTER SESSION --修改会话
CREATE CLUSTER --建立聚簇
CREATE DATABASE LINK --建立数据库链接
CREATE SEQUENCE --建立序列
CREATE SESSION --建立会话
CREATE SYNONYM --建立同义词
CREATE VIEW --建立视图
- RESOURCE 角色: --是授予开发人员的
CREATE CLUSTER --建立聚簇
CREATE PROCEDURE --建立过程
CREATE SEQUENCE --建立序列
CREATE TABLE --建表
CREATE TRIGGER --建立触发器
CREATE TYPE --建立类型
- DBA 角色:
拥有全部特权,是系统最高权限,只有 DBA 才可以创建数据库结构,并且系统
权限也需要 DBA 授出,且 DBA 用户可以操作全体用户的任意基表,包括删除
系统权限&用户权限的区别:
https://www.cnblogs.com/zuiyue_jing/p/10154983.html
7、oracle中数据类型
- CHAR类型
CHAR表示固定长度字符串,长度不够的用空格补充,最多可以存储2000字节,CHAR类型区分中英文,中文在CHAR中占两个字节,而英文只占一个字节
-
VARCHAR2类型
VARCHAR2表示可变长度字符串,最多可以存储4000字节
在定义该数据类型时,应该指定其大小。与CHAR类型相比,使用VARCHAR2可以节省磁盘空间
数值类型
- NUMBER类型
NUMBER类型可以存储正数、负数、零、定点数和精度为38位的浮点数
NUMBER(M,N)。其中,M表示精度,代表数字的总位数;N表示小数点右边数字的位数
- DATE类型
用于存储表中的日期和时间数据,取值范围是公元前4712年1月1日至公元9999年12月31日
长度是7,7个字节分别表示世纪、年、月、日、时、分和秒 默认是 年 月 日
- TIMESTAMP类型
用于存储日期的年、月、日以及时间的小时、分和秒值
其中,秒值精确到小数点后6位,该数据类型同时包含时区信息 默认精确到六位
大对象类型
8、数据操作
创建表
create table user_2(id number,name varchar2(50),sex char(1),birthday date,create_time TIMESTAMP);
create table user_3(id number,name varchar2(50),sex char(1),birthday date,create_time TIMESTAMP(2));
插入数据
insert into user_2(id,name,sex,birthday,create_time) values (1,'xiaoming','F',date '2020-02-07',LOCALTIMESTAMP(2));
insert into user_3(id,name,sex,birthday,create_time) values (1,'xiaoming','F',date '2001-01-24',LOCALTIMESTAMP(2));
更新数据
update user_1 set sex='M' where id=1;
删除数据
delete from user_1 where name='xiaoming';
查询数据
select * from user_2;
备注:在oracle中所有数据的增加和修改,删除都需要手动提交
提交:commit
回滚:rollback
9、修改表结构
增加列
alter table student add (height varchar2(2));
修改列
alter table student modify (height number);
删除数据
delete from user_1 where name='xiaoming';
查询数据
select * from user_2;
备注:在oracle中所有数据的增加和修改,删除都需要手动提交
提交:commit
回滚:rollback