oracle-表空间-用户-角色-权限
概要图
一 表空间
1.1创建表空间
--问题:创建一个名为hp的表空间,指定数据文件为hp.dbf,大小为10m.
create tablespace hp datafile 'C:\app\hp\hp.dbf' size 10M autoextend on next 5m maxsize unlimited;
1.2 删除表空间
drop tablespace hp;
1.3思考题
删除表空间的时候,如何删除关联的数据文件??
drop tablespace test_data including contents and datafiles;
二 创建用户
2.1创建用户
--语法结构:create user 用户名 identified by 密码 【default tablespace 表空间名】【temporary tablespace temp】
create user 用户名 identified by 密码 [default tablespace users] //用户的默认表空间:users [temporary tablespace temp] //用户使用的临时表空间temp [quota 3m on users]; //默认表空间中可以使用的空间配额:3MB
create user hope identified by ; create user hope1 identified by default tablespace users; create user hope2 identified by default tablespace users temporary tablespace temp;
2.2 修改用户密码
--语法结构:alter user 用户名 identified by 密码
alter user hope identified by ;
2.3 删除用户
--drop user 用户名【cascade】
drop user hope; drop user hope cascade;
三 权限和角色
--权限指执行特定类型SQL命令或访问其他对象的权利
--系统权限:允许用户执行某些数据库操作
--对象权限:允许用户对某一特定对象执行特定的操作
--角色是具有名称的一组权限的组合
权限指执行特定类型SQL命令或访问其他对象的权利。创建的新用户是没有任何权限的,甚至连登录的数据库的权限都没有,需要为其指定相应的权限。
权限分为两种:系统权限和对象权限。
1. 系统权限
系统权限:允许用户执行某些数据库操作,如创建表、创建索引、连接实例等。
常见系统权限
权限名 |
描述 |
CREATE SESSION |
创建会话(具有登录权限) |
CREATE TABLE |
创建表 |
DROP TABLE |
删除表 |
CREATE SEQUENCE |
创建序列 |
CREATE USER |
创建用户 |
DROP USER |
删除用户 |
CREATE VIEW |
创建视图 |
权限的分配
grant CREATE SESSION,CREATE TABLE,CREATE USER to 用户名;
权限回收
revoke CREATE SESSION from 用户名;
2.对象权限
对象权限:允许用户对某一特定数据对象执行特定的操作,如读取视图,可更新某些列、执行存储过程等。
对象的拥有者拥有所有权限;对象的拥有者可以向外分配权限。
对象权限 |
表 |
视图 |
序列 |
过程 |
修改(alter) |
√ |
√ |
||
插入(insert) |
√ |
√ |
||
删除(delete) |
√ |
√ |
||
更新(update) |
√ |
√ |
||
查询(select) |
√ |
√ |
√ |
|
执行(execute) |
√ |
|||
索引(index) |
√ |
|||
关联(references) |
√ |
√ |
授权:
grant object_priv|ALL [(columns)] on object to {user|role|public} [WITH GRANT OPTION];
grant all on scott.emp to hope;
收回权限:
revoke object_priv|ALL [(columns)] on object from {user|role|public}
PS:
1.all包括所有权限;
2. public:用户public是oracle预定义的,每个用户享有这个用户享有的权限,那么就意味将该权限授予了该数据库的所有用户
3. WITH GRANT OPTION 权限的分配是级联的。
--赋予权限和角色
--语法结构:grant 角色1,角色2,。。。 to 用户
grant connect to hope2
grant connect,resource to hope2; --给hope2赋予查询scott的emp表的权限
grant select on scott.emp to hope2;
grant select,update on scott.emp to hope2;
--撤销角色和权限:
--语法结构:revoke 角色1,角色2,。。。from 用户
revoke resource from hope2;
revoke connect,resource from hope2;
3.1 常用系统预定义角色
--CONNECT:临时用户
--RESOURCE:更为可靠和正式的用户
--DBA:数据库管理员角色,拥有管理数据库的最高权限
--一般情况下,普通用户,有connect和resource的角色就够了。
3.2 赋予权限和角色
--语法结构:grant 角色1,角色2,。。。 to 用户
grant connect to hope2 grant connect,resource to hope2;
--给hope2赋予查询scott的emp表的权限
grant select on scott.emp to hope2; grant select,update on scott.emp to hope2;
--撤销角色和权限:
--语法结构:revoke 角色1,角色2,。。。from 用户
revoke resource from hope2; revoke connect,resource from hope2;
3.3 常见的预定义角色
(1)connect角色
connect角色具有一般应用开发人员需要的大部分权限,当建立了一个用户后,多数情况下,只要给用户授予connect和resource角色就够了,那么connect角色具有以下系统权限:
alter session、create cluster、create database link、create session、create view、create sequence
这种权限只有在对其他用户的表有访问权时,包括select、insert、update和delete等,才会变得有意义。
(2)resource角色
resource角色具有应用开发人员所需要的其他权限,比如建立存储过程、触发器等。这里需要注意的是resource角色隐含了unlimited tablespace系统权限。
resource角色包含以下系统权限:
create cluster、create indextype、create table、create sequence、create type、create procedure、create trigger
(3)dba角色
dba角色具有所有的系统权限,及with admin option选项,默认的dba用户为sys和system他们可以将任何系统权限授予其他用户。
3.4 自定义角色管理
创建角色:
create role 角色名 [identified by tiger];
删除角色:
drop role 角色名;
3.5 为角色分配权限
权限的分配
grant CREATE SESSION,CREATE TABLE,CREATE USER to 用户名;
grant object_priv|ALL [(columns)] on object to 角色名;
权限回收
revoke CREATE SESSION from 角色;
revoke object_priv|ALL [(columns)] on object from 角色名
SQL> conn system/oracle;
SQL> grant create session to 角色名 with admin option
SQL> conn scott/oracle@orcl;
SQL> grant select on scott.emp to 角色名;
SQL> grant insert, update, delete on scott.emp to 角色名;
角色分配给用户
grant connect, resorce to 用户名 with admin option //可以传递所获权限。
SQL> conn system/oracle;
SQL> grant 角色名 to blake with admin option;
PS:增加WITH ADMIN OPTION选项,则得到的权限可以传递。
删除角色
SQL> conn system/oracle;
SQL> drop role 角色名;
四 Oracle的数据类型@@
类型 |
语法 |
描述 |
|
文本类型 |
char(n) |
定长 |
最大2000字符,默认n=1 |
varchar2(n) |
变长 |
最大4000字符 |
|
nchar(n) |
定长 |
unicode数据类型,最大2000 |
|
nvarchar2(n) |
变长 |
unicode数据类型,最大4000 |
|
clob(character large Object) |
字符型大对象,最大8TB |
||
blob(birnary large Object) |
二进制数据,可存放图片、声音,最大8TB |
||
数值 |
number(p,s) |
变长 |
p-有效位,s-小数位;1<=p<=38,-84<=s<=127 |
日期 |
date |
默认格式:DD-MM-YYYY ‘16-05月-2017’ |
|
timestamp(n) |
4.1 文本类型
--char:可以存储定长的字符串 char(200)
--varchar:可以存储变长的字符串
--varchar2:可以存储变长的字符串 varchar2(200)
--什么时候用char,什么时候用varchar(2) @@
当已知字符串长度用char比较合适
--不确定字符串长度时,用varchar2比较合适。
--nchar和nvarchar2可以存储Unicode字符集
4.2 数值类型
--数值数据类型:numer
--number 等价于number(38,0)
--number(15)表示可以存储一个15位的整数
--number(22,7)表示可以浮点数,整数部分有15位,小数点后有7位
--注意:不建议大家使用varchar,integer,float,double
4.2 日期数据类型
--与日期类型相关的函数
--sysdate:日期函数:显示当前日期
select sysdate from dual;
--systimestamp:比Date更精确的一个时间
select systimestamp from dual;
--to_date(字符串,格式):将一个Oracle不认识的字符串,转成Oracle认识的日期格式
select to_date('2018-01-05','yyyy-mm-dd') from dual;
--Date:日期类型,存储日期和时间
--TimeStamp:比Date更精确的一种日期类型。
--默认日期格式:
--中文的Oracle:日-月-年 比如1998年7月1日 ->‘01-7月-1998’
--英文的Oracle:day-mon-year 比如1998年7月1日 ->'01-JUL-1998'
--Lob:
--BLOB:存储二进制对象,如图像、音频和视频文件
--CLOB:存储字符格式的大型对象
五 表
5.1创建表
1.使用sql/plus创建
create table 表的名称(字段名称1 数据类型, 字段名称2 数据类型…);
示例:
创建学生表,字段和类型如下所示:
字段 |
字段类型 |
id |
number |
name |
varchar2(20) |
sex |
char(2) |
birthday |
date |
score |
number(4,2) |
create table student(
id number,
name varchar2(20),
sex char(2),
birthday date,
score number(4,2)
)
2.使用plsql developer第三方工具创建
--创建表:实际上解决的是表结构的问题,表有几个字段,每个字段的长度是多少,每个字段是什么数据类型
--create table 表名(字段名1 数据类型1(长度),字段名2 数据类型2(长度),。。。);
create table student(stuno number(),stuname varchar2(),age number(),addr varchar());
5.2 删除表
drop table student;
--删除表及该表关联的约束
drop table score cascade constraints;
5.3 修改表
1.修改表名
RENAME 旧的表名称 TO 新的表名称;
2. 添加列
ALTER TABLE 表名称 ADD
(列名称 数据类型 [DEFAULT 默认值],
列名称 数据类型 [DEFAULT 默认值],
…);
3.修改列
ALTER TABLE 表名称 MODIFY
(列名称 数据类型 [DEFAULT 默认值],
列名称 数据类型 [DEFAULT 默认值],
…);
4.删除列
alter table 表名 drop column 列名;
alter table 表名 drop(列名1,列名2,...);
5 修改字段名
alter table [表名] rename column 旧的字段名 to 新的字段名;
6.举例
(1)给学生表添加班级编号
alter table students add(class_id number);
(2)学生姓名变成varchar2(30)
alter table students modify(name varchar2(30));
(3)删除学生表的score字段
alter table students drop column score;
alter table students drop(score);
(4)把学生表名students修改成stu
SQL>rename students to stu;
oracle-表空间-用户-角色-权限的更多相关文章
- oracle创建表空间-用户-角色-授权
1.创建数据表空间: SQL> create tablespace rusky_data datafile 'D:\rusky\rusky_data01,dbf' size 10M autoex ...
- oracle 表空间 用户
Oracle创建表空间.创建用户以及授权.查看权限 创建临时表空间 CREATE TEMPORARY TABLESPACE test_temp TEMPFILE 'C:\oracle\product\ ...
- oracle表空间的创建+权限分配
/*分为四步 */ /*第1步:创建临时表空间 */ create temporary tablespace user_temp tempfile 'D:\oracle\oradata\Oracle9 ...
- oracle 表空间/用户 增加删除
create temporary tablespace user_temp tempfile 'C:\dmp\user_temp.dbf' size 50m autoextend on next 50 ...
- Oracle 表空间和用户权限管理
一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻 ...
- Oracle 表空间和用户权限管理【转】
一. 表空间 Oracle数据库包含逻辑结构和物理结构. 数据库的物理结构指的是构成数据库的一组操作系统文件. 数据库的逻辑结构是指描述数据组织方式的一组逻辑概念以及它们之间的关系. 表空间是数据库逻 ...
- Oracle开发:创建一个用户并分配表空间和分配权限
-- 创建一个用户并分配表空间和分配权限 -- 以sysdba登录 oracle@sha-col-oracle-2:~> sqlplus / as sysdba SQL*Plus: Releas ...
- Oracle表空间,用户,用户授权
一:Oracle表空间 1,Oracle表空间与SQL Server文件组对比 SQL Server的文件组(文件组包括若干MDF,NDF数据文件)对我们来说并不陌生,前段时间我在博客“怎样玩转千万级 ...
- Oracle 表空间、用户
一.表空间 临时表空间 创建临时表空间范例 CREATE TEMPORARY TABLESPACE duke_temp /* 临时表空间名称:duke_temp */ tempfile 'C:\ora ...
随机推荐
- BZOJ 1579 [Usaco2009 Feb]Revamping Trails 道路升级
堆优化的dijkstra. 把一个点拆成k个. 日常空间要开炸一次.. //Twenty #include<cstdio> #include<cstring> #include ...
- Composer的简介说明与安装
https://mp.weixin.qq.com/s/aSZRhoa2-JjKOTRVhPdxdQ Composer 是 PHP 的一个依赖管理工具.它允许你申明项目所依赖的代码库,它会在你的项目中为 ...
- C++【vector】用法和例子
/*** * vector 基础api复习 * 8 AUG 2018 */ #include <iostream> #include <vector> using namesp ...
- Leetcode946. Validate Stack Sequences验证栈序列
给定 pushed 和 popped 两个序列,只有当它们可能是在最初空栈上进行的推入 push 和弹出 pop 操作序列的结果时,返回 true:否则,返回 false . 示例 1: 输入:pus ...
- Leetcode319. Bulb Switcher灯泡开关
初始时有 n 个灯泡关闭. 第 1 轮,你打开所有的灯泡. 第 2 轮,每两个灯泡你关闭一次. 第 3 轮,每三个灯泡切换一次开关(如果关闭则开启,如果开启则关闭).第 i 轮,每 i 个灯泡切换一次 ...
- 跟我一起学koa之在koa中使用mongoose(四)
第一步安装mongoose,创建数据库文件夹 第二步引入mongoose,连接数据库 第三步运行项目 这个报错 只需要将es6写法变成es5写法即可 我们连接数据库,并且以post请求的方式插入数据 ...
- 全面解决Html页面缓存的问题
页面缓存的问题可能大家都遇到过,很多功能做完没起效果,那么怎么解决这个问题呢?这里给出我的使用的解决方法 对于一个html页面,缓存分3部分,一个是页面内容,一个是css样式,一个是JS文件1.页面内 ...
- noi.openjudge 二分法求函数的零点
二分法求函数的零点 总时间限制: 1000ms 内存限制: 65536kB 描述 有函数:f(x) = x5 - 15 * x4+ 85 * x3- 225 * x2+ 274 * x - 121 已 ...
- phalcon常用语法
打印SQL //在config/service.php中注册服务 $di->set( 'profiler', function () { return new \Phalcon\Db\Profi ...
- 微信小程序--导航跟随
最近开发小程序的时候遇到这样一个需求:如图1 页面向下滚动到白色导航的位置时,白色导航固定到页面最上方:当页面向上滚动到白色导航时,白色导航恢复到原始位置:点击各个导航,平滑的跳到相应位置. 思路1: ...