这一部分的主要内容是常用对象函数的使用以及语句应用。
用户的创建、权限操作
创建用户:
create user username identifeid by password;
分配权限:
grant connect(登录权限),resource(增删改查权限) to username;
撤销权限:
revoke resource from username;
角色:
connect —— 临时用户;
resource —— 更为正式、可靠的用户;
dba —— 管理员。
数据库表的简单操作
创建数据库表:
create table 表名 (字段名1 字段属性 约束条件,字段名2 字段属性 ……)
字段属性包含约束性修饰词和字段的数据类型修饰词
约束性字段修饰词:
primary key —— 主键,要求被该关键字修饰的属性唯一不可为空
unique key —— 唯一,要求被该关键字修饰的属性唯一
check —— 检查条件,要求被该关键字修饰的属性需满足一定的条件
not null —— 非空, 要求被该关键字修饰的属性不能为空
foreign key —— 外键,用于两表之间建立联系,需指定引用主表的哪列,详细内容见后面**表的约束**中*外键*部分。
数据类型部分修饰词:
字符型数据类型:
char —— 存储固定长度的字符串;
varchar2 —— 存储可变长度的字符串;
数值型数据类型:
number —— 存储整数和浮点数,格式为(p,s)其中p代表整数有p位,s代表小数有s位。
日期时间数据类型:
date —— 存储日期和时间数据
timestamp —— 存储比date更加精确的日期和时间数据
Lob数据类型
blob —— 二进制对象,如图像视频音频
clob —— 字符格式的大型对象
修改数据库表
在基本表建立并使用一段时间后可以修改表
格式:
alter table 表名 add/modify 列名 列名属性;
重命名方法:
rename oldname to newname;
表的约束
约束的概念
约束条件是一些规则,在对数据进行插入、删除和修改时要对这些规则进行验证,从而起约束作用。
为什么要有约束?没有规矩不成方圆,有了约束,可以保证数据完整性和一致性。
约束分类
从完整性分类
域完整性约束——非空约束,检查约束
实体完整性约束——唯一约束,主键约束
参照完整性约束—— 外键约束
区别:
域完整性约束是字段约束,约束范围在列
实体完整性约束是行与行之间的约束
引用完整性约束是表和表之间的约束
从作用分类:
表级约束,可约束表中任意一列
列级约束,只作用于列
各约束简介及作用
见约束性字段修饰词
外键:
外键是表与表之间建立连接的桥梁。
如何添加外键:
foreign key (字段名) references 表名 (字段名)
添加约束语法:
alter table 表名 add constraint 约束名,约束条件
删除约束:
alter table 表名 constraint 约束名
序列
序列是oracle专有的对象, 他用产生一个自动递增的数列。
创建语法:
create sequence seq_name
increment by n //递增值
start with n //开始位置
maxvalue n_nomaxvalue //最大值范围
minvaalue n_minvalue //最小值范围
cycle/nocycle //是否循环
cache n/no_cache //是否缓存
序列拥有两个方法,获取下一个值和获取当前值:
select 序列名.nextval from 表名
select 序列名.currtval from 表名
需要注意的是,序列在刚生成时是没有当前值的,需要先走一个下一个值才会由当前值。
删除序列:
drop sequence 序列名
索引
基本概念以及语法格式
可以建立类似目录的数据库对象,实现快速查询,这就是索引。
索引类似于目录,是为了提高数据搜索速度,默认采用B树数据结构。
创建索引和删除索引的语法格式:
create index 索引名 on table (column [column...])
drop index 索引名
索引的作用
加速对表的查询,减少对磁盘的读写。
需要注意的是,索引在创建以后,在用户撤销他之前不会用到索引的名字,但索引会在用户查询时自动起作用。
索引的创建有两个情况,当用户在表上定义一个主键或唯一时系统自动创建,另外一种是用户自己手动创建一个索引。
视图
定义:
视图是从若干个基本表和(或)其他视图构造出来的表,视图也叫虚表。
视图的创建,查询与删除:
create [or replace] view 视图名
as select column
from 表名 [with read only]
select * from 视图名
drop view 视图名
视图的一些特点:
视图不利于修改,安全
视图不存储数据、
视图可以降低查询难度
使用with read only 定义只读视图。
事务简介
定义:
从头到尾的去做一件事,要么完成要么相当不做,事务是为了保证数据库的完整性。
在oracle中,没有事务开始的语句,在修改、删除和添加时事务就开始了。
关键字:
commit,提交事务
roll back ,回滚事务
分页的实现
前n条数据
select rownum * from
(select sal from emp order by sal) t
where rownum<=n;
n-m条数据分页查询
select * from
(select rownum r,t.* from (select sal from emp order by sal desc)t
where rownum <= m) a
where a.r>= n;
三大范式
作用:保证数据库设计的合理性。
合理数据库的要求:
结构合理、冗余较小、尽量避免插入删除修改异常。
范式的分类(这里只介绍前三个):
第一范式:
确保每列保持原子性,即同一列中不能有多个值
第二范式:
在满足第一范式的基础上,确保数据库表的每一列都和主键相关。
第三范式:
在满足第二范式基础上,确保数据表中的每一列数据都和主键直接相关,属性不依赖于别的非主属性。
表与表之间的关系:
一对一,就像我们与自己的身份证一样,一个中国公民只有一个身份证号。
一对多,就像一个人可以有多张银行卡一样。
多对多,就像大学中一个班级可以拥有多个学生, 而学生也可以去多个班级上课,这种的对应关系。一般在数据库操作中,多对多关系会被拆分成两个一对多关系。
这就是我给大家带来的Oracle数据库基础(三)的内容,与大家分享。