数据库
按照数据结构来组织、存储和管理数据的仓库,是对数据持久化的工具。
使用数据库的优点:
存储大量数据
保持数据信息的完整、一致性
数据的共享和安全
SQL(Structured Query Language)结构化的查询语言,是一种数据库查询和程序设计语言,用于存取数据以及查询、更新和管理关系数据库系统。
SQL语言包含4个部分:
DDL(Data Definition Language)数据定义语言,如数据表的建立修改删除等
DML(Data Manipulation Language)数据操作语言,如对数据的增删改
DQL(Data Query Language)数据查询语言,如对数据的查询
DCL(Data Control Language)数据控制语言,如事务的提交回滚,权限控制等
PL/SQL
Procedural Language/SQL 过程化SQL语言
是ORACLE对SQL语言的扩展,在普通的SQL中加入了编程语言的特点,例如:变量的使用和流程语句的控制等
DDMS
DataBase Management System 数据库管理系统,负责对数据库进行统一的管理和操作,确保数据操作的安全性和完整性
数据的存储
关系型数据库使用数据表来存储数据,通过对表与表的完整性实施,实现表关系的维护。
数据表
每行数据就是写入表中的每个实体
数据库中以2维表的方式记录数据
ORACLE的数据内容
客户端应用程序
服务器端
数据库实例
数据库服务
数据库监听器
表空间
存放数据表的空间,是ORACLE存储关系数据的物理空间。
DBMS提供对表空间中数据的逻辑映射。表空间由同一个磁盘的一个或多个数据文件构成,这些文件称为DATA FILE,一个数据文件只能属于一个表空间。
注意点:每个数据库实例中必须要有一个表空间(默认为SYSTEM)
所有关系对象型数据库的数据内容都是记录在数据表里面的
ORACLE的数据表记录在表空间中
SqlServer的数据表是记录在数据库里的
ORACLE中表空间只能记录数据库
SqlServer中的数据库不光能记录数据表,还能记录和这些相关的其他对象(用户对象、存储过程对象、权限、索引)
ORACLE中的数据表直接和用户关联,同一个用户可以将多张表存储在不同的表空间内。比如:用户admin 可以在a表空间建立c表,还能在b表空间内建立d表,但是不能在b表空间建立同名的c表。
SqlServer中的数据表和架构名有关,架构名又和数据库相关。
比如:架构名admin可以在a数据库中建立c表,也能同时在b数据库中建立c表。
安装Oracle和卸载Oracle
安装文档
卸载Oracle
运行----- regedit----到注册表 ---在注册表里 HKEY_LOCAL_MACHINE--------SOFTWARE里 删除ORACLE ,SYSTEM里将CONTROLSet001,002 和CurrentControlSet里的与Oracle相关的注册表信息删除
----------重启--------------把物理文件删除-------最后再重启
--编写sql语句的注释
注意:SQL语句不区分大小写
在编写SQL语句时没有规定的编写规范,公司里各有各的编写规范:1、都是大写 2、都是小写 3、关键字为大写,其余小写
表空间
1、 新建表空间
create tablespace 表空间名 datafile 存放路径 size 文件大小 autoextend on
存放路径 用单引号 ' '
--创建表空间
create tablespace mySpace datafile 'd:/mySpace.dbf' size 10m autoextend on;
2、 删除表空间
drop tablespace 表空间名 including contents
删除表空间(假删除,断开表空间与DBMS的关联)
including contents表示删除表空间的同时也删除表空间内的数据表数据
--删除表空间
drop tablespace mySpace including contents
Oracle 用户
注意:创建了表空间后用户是不能访问该表空间的,因此需要建立用户后设定用户的可访问权限
Oracle通过对用户身份和权限增强安全性
3、创建用户
create user 用户名 identified by 密码
default tablespace 表空间名
密码必须字母开头
default tablespace 默认表空间表示当使用该用户登陆DBMS并进行数据表的创建时,数据表默认保存的表空间。
--创建用户
create user tom identified by tom123
create user tom identified by tom123 default tablespace mySpace
4、删除用户
drop user 用户名
cascade(级联)
--删除用户
drop user tom
5、修改用户
alter user 用户名 identified by 密码 default tablespace 表空间名
创建数据表(后面会学到)
--创建数据表
create table test
(
testid int
)
查询(后面会学到)
--查询
--如果访问的对象不是当前登录用户创建的,则必须要用前缀用户名
select * from tom.test
select * from hr.employees
select * from hr.jobs
(权限内容基本掌握)
创建用户后需要分配权限才能使用。
Oracle 将权限分为两类,分别是:
系统权限:系统权限提供了用户在整个DBMS中执行操作的能力,会影响到整个数据库系统的安全
对象权限:对象权限是指赋予用户在特定数据库对象执行特定操作的能力,这些对象可包括:数据表、视图、字段、序列等
常见的系统权限
create session 连接数据库
create sequence 创建序列
create synonym 创建同名对象
create table 创建表
insert any table 往所有表中插入记录
select any table 查询所有的表
drop table 删除表
create user 创建用户
........
6、赋予系统权限
grant 权限,权限 to 用户名
with admin option
with admin option 表示用户在获得权限的同时也具备分配该权限的功能
--分配登录权限给用户
grant create session to tom with admin option
grant create user,create table to tom
7、移除系统权限
revoke 权限,权限 from 用户名
--移除用户的权限
revoke create user,create table from tom
常用的对象权限
alter 修改
insert 新增数据
update 修改数据
delete 删除数据
select 查询数据
execute 执行存储过程
........
8、赋予对象权限
grant 权限名,权限名 on 对象名 to 用户名
--赋予对象权限只能访问hr.employees表
grant select on hr.employees to jack
9、撤销对象权限
revoke 权限名,权限名 on 对象名 from 用户名
--删除对象权限
revoke select on hr.employees from tom
角色的使用
角色是系统权限和对象权限的集合,可以分配给一个用户
角色分为系统角色 和 用户角色
系统角色
connection 只有最基本的权限范围
resource 开发人员的权限,可以建表,建序列等
dba 拥有所有系统级权限
10、
先创建角色,再赋予角色权限 最后将角色赋予用户
1)创建角色
create role 角色名
--创建角色名
create role myRole
2)赋予权限
grant 系统权限 to 角色名
grant 对象权限 on 对象名 to 角色名
--将权限赋予给角色
grant create session,create table ,select any table to myRole
grant delete on hr.jobs to myRole
3)使用角色
grant 角色名 to 用户名
--将角色分配给用户,该用户将具备该角色的所有权限
grant myRole to tom
11、撤销角色
revoke 角色名 from 用户名
--撤销角色
revoke myRole from tom
12、表空间转移
步骤一:使表空间下线
alter tablespace 表空间名 offline
步骤二:修改表空间使用的数据文件路径
alter database rename file 源文件 to 新文件
步骤三:使表空间上线
alter tablespace 表空间名 online
13、表空间导入导出
表空间在转移过程中DBMS中始终记录着被转移表空间的原始位置,如果A电脑中不存在某个表空间希望实现转移的话就无法实现,因此我们需要将表空间导入并导出。
只能在SQL Plus中执行操作
导出数据
1、--导出数据库所有的数据
$exp 用户名/密码@服务名 file = 路径名.dmp ;
2、--导出某个用户的数据
$exp 用户名/密码@服务名 file = 路径名.dmp owner=(用户名) ;
3、--导出某个表空间
$exp 用户名/密码@服务名 file = 路径名.dmp tablespaces=(表空间名);
4、--导出某张表
$exp 用户名/密码@服务名 file = 路径名.dmp tables=(表名);
导入数据
full = y 表示全部
--导入数据
$imp 用户名/密码@服务名 file = 路径名.dmp full=y;