oracle(12.11)

Oracle的发展历史

在这里插入图片描述

Oracle的组织结构

一,第一结构 表空间 ---------逻辑意义

永久段表进空间() —存储
临时段表空间() ------创建
回滚段表空间() -----修改

1,永久表空间:
一般存储数据的表空间;
系统表空间,普通用户使用的表空间都为永久表空间;
永久表空间的状态有三种:读写,只读,脱机;
只有在永久表空间,才能配置ASSM管理模式;
可以设置记录日志模式。 建立选yes,以便数据库出问题后进行恢复;
以设置为系统默认表空间。这样,创建用户时,没有指定默认表空间。就自动设置为系统默认表空间;
设置默认表空间的命令:ALTER DATABASE DEFAULT TABLESPACE <TABLESPACE_NAME>;

2,临时表空间;
一般用来排序和创建索引时使用;
临时表空间里不存放实际的数据,所以,即使出了问题,也不需要恢复,而且,也不需要备份,因此也不需要记录日志;
临时表空间只能呢使用读写模式,而且只能为手动管理段空间模式;
可以设置为系统默认临时表空间。这样,创建用户时,没有指定默认临时表空间。就自动设置为系统默认临时表空间,命令如下:ALTER DATABASE DEFAULT TEMPORARY TABLESPACE <TABLESPACE_NAME>;

3,回滚表空间:
用来存放修改中数据的原数据;
回滚段表空间是用来保证数据°一致性的;

二,第二结构 段 -----------业务意义
1,数据段
2,索引段
3,回滚段
4,临时段

(详细解释)
1,数据段
一个数据可以供以下方案对象(或方案对象的一部分)容纳数据:
(1),非分区表或非簇表
(2),分区表的一个分区
(3),一个簇表
当用户使用CREATE语句 创建表或簇表时,Oracle 创建相应的数据段。
表或簇表(Mysql的表)的存储参数(storage parameter) 用来决定对应数据段的数据扩展如何被分配。
用户可以使用CREATE 或 ALTER 语句直接设定这些存储与访问效率。

2,索引段
Oracle 数据库中每个非分区索引(nonpartitioned index) 使用一个索引段(index segment) 来容纳其数据。
面对于分区索引(partitioned index),每个分区使用一个索引段来容纳其数据。
用户可以使用 CREATE INDEX 语句为索引或索引的分区创建索引段。
在创建语句中,用户可以设定索引段的数据扩展(extent)的存储参数(storage parameter) 以及此索引段应存储在那个表空间中。
(表的数据段和与其祥光的索引段不一定要村是在同一表空间中。)
索引段的存储参数将会影响数据的存储与访问效率。

3,临时段简介
当oracle 处理一个查询时。经常需要为sql语句的解析与执行的中间结果(intermediate stage) 准备临时空间。
Oracle 会自动的分配被称为 临时段(temporary segment) 的磁盘空间。
例如:Oracle在进行排序操作时就需要使用临时段。
当排序操作可以子内存中执行,或Oracle设法利用索引就能执行时,就不必创建临时段。
需要使用临时段的操作:
(1),CREATE INDEX
(2),SELECT…ORDER BY
(3),SELECT DISTANCE…
(4),SELECT…GROUP BY
(5),SELECT…UNION
(6),SELECT…INTERSECT
(7),SELECT…MINUS
有些不能使用索引的关联操作(unindexed join),或者需要在子查询间建立相互关系(correlated subqueries),也可能需要使用临时段(temporary segment).所以当查询包含DISTANCE,GROUP BY,或 ORDER BY 子句时,Oracle有可能是由两个临时段。


** 以上时规划定义,作用

以下,规划存储**


三,区(extent) -----------扩容
段由区组成,区时磁盘分配的最小单位。
短的增大,是通过增加区的个数来实现的。
每个区的大小是数据块大小的整数倍。
区的 大小可以不相同,使用区的目的是保存特定的数据类型的数据。

四,数据快(datablock)
数据快是数据库中最小的I/O 单位,同时也是内存数据缓冲区的单位,及数据文件存储空间单位。
块的组成部分是 块头、表目录、行目录、空余空间、行数据

整体:表空间→段→区→块

补:(数据库是一个概念)我们创建的数据库是由一堆系统文件组成,不会映射到某一个文件上,一个数据库可以对应多个系统的文件,一个文件只能对应一个库
图解:

在这里插入图片描述

Sql语言

1,数据查询语言(DQL)
data question language
用于检索数据库中的数据库,主要是Select 语句,他在操作数据库的过程中使用最为频繁

2,数据操纵语言(DML)
data mainpulation language
用于改变数据库中的数据,主要包括 INSERT update 和 delete 3条语句。其中,insert语句用于将数据插入到数据库中, update语句用于更新数据库已经存在的数据,delete用于删除数据库中已经存在的数据。

3,事务控制语言(TCL)
Transaction Control Language
用于维护数据的一致性,包括 commit rollback 和savepoint 3条语句,其中, commit:提交数据库的更改; rollback:取消对数据库的更改;savepoint:设置保存点;

4,数据定义语言(DDL)
Data Definition Language
用于建立、修改和删除数据库对象。例:用create table 语句创建表, alter table 修改表结构, droptable 删除表;

5,数据控制语言(DCL)
Data Control Language
用于执行权限授予和权限回收的操作, 主要包括 crant 和 revoke; crant :给用户或角色授予权限; revoke: 收回用户或角色所具有的权限

(图解:)
在这里插入图片描述

账号

1,用户
用户是真正可以操作数据库的对象,
(1)创建
(2),修改

	(3),删除

(1)创建:
	Create User USERNAME  						 账户
	Identified  by  PASSWORD						密码
	Defalt  Tablespace  TABLESPACE_NAME			表空间
	Temporay  Tablespace  TABLESPACE_NAME		临时表空间
	Quota  integer/unlimited  on  tablespace;			表空间使用量
	account  lock  or  account  unlock  					用户是否被加锁

(2)修改:
	Alter  user  USERNAME   identified   by  PASSWORD;		修改口令字
	Alter  user  USERNAME    password  expire;				注销用户口令字
	Alter  user  USERNAME     account    lock/unlock;  		锁定用户

(3)删除:
	drop  user  用户名;				·删除用户
	drop  user  用户名 cascade 			 删除用户及全部的实体

2, 角色。
角色是一组权限的集合,将角色献给一个用户就拥有了这个角色的所有权限。
(1)系统角色
(2)创建自定义角色
(3)修改自定义角色
(4)删除自定义角色
(5)角色赋予

(1)系统角色
DBA:拥有全部特权,是系统最高权限,只有DBA才可以创建数据库结构
resource:拥有resource权限的用户只可以创建实体,不可以创建数据库结构
connect: 拥有connect 权限的用户可以登录Oracle。不可以创建实体,不可以创建数据结构
对于普通用户:授予 connect resource 权限
对于DBA管理用户: 授予 connect resource dba 权限

(2)创建自定义角色
create role role1; 创建默认角色
create role role1 identified by password1; 创建带密码角色(每次使用临时打开,不常用)

(3)修改自定义角色
alter role role1 not identified; 取消角色口令
alter role role1 identified by password1; 设定口令

(4)删除自定义角色
drop role rolename; 角色删除后,原来拥有该角色的用户就不再拥有该角色了。相应的权限也就没有了,

(5)角色赋予
grant role1 to user1

(5)角色生效
(注:角色的生效是一个什么概念? 假设用户a有b1,b2,b3三个角色,那么如果b1生效,则b1所包含的权限对于a来讲是不拥有的,只有角色生效了,角色内的权限作用于用户,最大可生效角色由参数 max_enabled_roles设定;在用户登录后,Oracle)
将所有直接赋给用户的权限和用户默认角色中的权限赋给用户;)
set role role1; 使role生效
set role role,role2; 使role,role2生效;
set role role identified by password1; 使用带有口令的role 生效(其他角色暂时失效)
set role all; 使用该用户的所有角色生效
set role none; 设置所有角色失效
set role all exoept role1; 除role1 外的该用户的所有其他角色生效。

再给用户(角色) 授权或从用户(角色)回收权限的同时,权限开始生效。
角色则不同,只有用户下次登陆或者执行了 set  role 语句才能使角色生效,
 select  *  from   select_roles;       查看当前用户的生效角色;

无法使用  with  crant   option  为角色授予对象权限。
可以使用  withadmin  option  为  角色授予系统权限,取消时不是级联

3,权限
(1),系统权限
(2),实体权限

 赋予:  grant   权限1,权限2  on    [username] tablename   to   usename | role | public  [with  grant  option]    权限传递[with  hierarchy  option] 子对象权限
  回收:  revoke   权限1,权限2  on    [username] tablename   from   usename | role | public  cascade | cascade  constraints

(1),系统权限
		系统规定用户使用数据库的权限。(系统权限是对用户而言)
		create  session				创建会话
		create  sequence				创建序列
		create  synonyn				创建同名对象
		create  table					在用户模式中创建表
		create  any  table				在任何模式中创建表
		drop  table					在用户模式中删除表
		drop any  table					在任何模式中删除表
		create  procedure				创建存储过程
		exercute   any  procedure		执行任何模式的存储过程
		create  user					创建用户
		drop  user					删除用户
		create   view					创建视图
(2),实体权限(对象权限):
		某种权限用户对其他用户的表或视图的存取权限。(是针对表或视图而言的)。

		对象权限:      表  视图   序列   过程
		修改(alter)
		删除(delete)
		执行(execute)
		索引(index)
		插入(insert)
		关联(reference)
		选择(select)
		更新(update)

数据类型

1,字符
(1),char 数据类型
(2),varchar2 数据类型

(1)char  数据类型  用于存储固定长度的字符串。一旦定义了char类型的列,该列就会一直保持的声明时所规定的长度大小。当为该列的某个单元格。(行与列的交叉处时单元格)赋予长度较短的数值后,空余部分Oracle会用空格自动填充;如果字段保存的字符长度大于规定的长度,则Oracle 会产生错误信息。char类型的长度范围为1-2000字节。
(2)varchar2  数据类型与 char 类型相似,都用于存储字符串数据。但varchar2类型的字段用于存储边长,而非固定长度的字符串。将字段定义为varchar2数据类型时。该字段的长度将根据实际字符数据的长度自动调整(即如果该列的字符串长度小于定义时的长度,系统不会使用空格填充,而是保留实际的字符串长度)因此大多数情况下,提倡varchar2类型 替代 char/
	a,varchar2把所有字符都占两字节处理(一般情况下),varchar只对汉字和全角等字符占两字节,数字,英文字符等都是一个字节;
	b,varchar2 把空串等同于null处理,而varchar仍按照空串处理;
	c,varchar2 字符要用几个字节存储,要看数据库使用的字符集,
!!!大部分情况下建议使用varchar2。可以保证更好的兼容性。

2,数值
number( 星号*,星号)
数值数据类型的字段用于存储带符号的整数或浮点数。Oracle中的number 数据类型具有精度(precisions)和范围(scale)。精度(precision) 指定所有数字位的个数,范围(scale)指定小数的位数,这两个参数都是可选的。如果插入字段的数据超过指定的个数,Oracle将自动进行四舍五入。

3,日期
Date
Oracle 提供的日期时间数据类型时它可以存储日期和时间的组合数据。用Date数据类型存储日期时间比使用字符数据类型进行存储更简单,并且可以借助于Oracle 提供的日期时间函数方便地处理数据。在Oracle中,可以使用不同的方法建立日期值。其中,最常用的获取日期值的方法是通过sysdate 函数,调用该函数可以获取当前系统的日期值。

实操作 表

创建
create table table_name(
c_name1 c_type1,
c_name2 c_type2,
c_name3 c_type3,
c_name4 c_type4
)

修改
rename old_tablename to new_tablename

删除
drop table table_name

补: 发布数据会触发回滚段

实操作 字段

创建

Alter table TABLE_NAME add COLUMN_NAME COLUMN_TYPE

修改

Alter table TABLE_NAME modify COLUMN_NAME COLUMN_TYPE

Alter table TABLE_NAME rename column OLD_COLUMNNAME to NEW_COLUMNNAME

删除

Alter table TABLE_NAME drop column COLUMN_NAME 默认值

默认值

Create table TABLE_NAME(
C_NEME1 C_TYPE1 default default_value,
C_NEME2 C_TYPE2,
C_NEME3 C_TYPE3,
C_NEME4 C_TYPE4
)

alert table table_name modify 字段名 defalt ’ ’ ;

以上,笔试多用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值