数据库对象:
1.表 –> 基本的数据存储集合,由行和列组成.
- create table
- 语法:
CREATE TABLE [schema.]table
(column datatype [DEFAULT expr][, …]); - 示例:
create table mytab(id number(20),name varchar(20),birthday date); - 使用子查询创建表:
- create table emp0
as
select * from emp where 1=2;
这条语句相当于拷贝emp的表结构到emp0
- create table emp0
- 语法:
- alter table
- 增加列:
alter table emp add imag blob;
- 增加列:
- 修改列的类型:
alter table emp modify ename varchar(30);
- 修改列的类型:
- 删除列:
alter table emp drop column imag;
- 删除列:
- 删除表:
drop table emp;
- 注意这样删除只是将emp表放到oracle回收站里了
- 删除表:
- 查看回收站
show recyclebin
- 查看回收站
- 清空回收站
purge recyclebin
- 清空回收站
- 彻底删除表:
drop table emp purge;
- 彻底删除表:
- create table
2.视图
- 概述:从表中抽取的逻辑上相关的数据集合
- 语法:
CREATE [OR REPLACE] [FORCE|NOFORCE] VIEW view
[(alias[, alias]…)]
AS subquery
[WITH CHECK OPTION [CONSTRAINT constraint]]
[WITH READ ONLY [CONSTRAINT constraint]];
- WITH READ ONLY:表示该视图只读.
- 优点:
- 1.限制数据访问
- 2.简化复杂查询
- 3.提供数据的相互独立
- 4.同样的数据,可以有不同的显示方式
- 注意:1.视图不能提高性能. 2.不建议使用视图进行表的修改(会受很多限制).
- 1.视图是一张虚表
- 2.视图建立在已有表的基础上, 视图赖以建立的这些表称为基表。
- 3.向视图提供数据内容的语句为 SELECT 语句, 可以将视图理解为存储起来的 SELECT 语句.
视图向用户提供基表数据的另一种表现形式 - 删除视图:drop view 视图名称.
3.序列
- 概述:可供多个用户用来产生唯一数值的数据库对象
- 1.自动提供唯一的数值
- 2.共享对象
- 3.主要用于提供主键值
- 4.将序列值装入内存可以提高访问效率
语法:
CREATE SEQUENCE sequence
[INCREMENT BY n]
[START WITH n]
[{MAXVALUE n | NOMAXVALUE}]
[{MINVALUE n | NOMINVALUE}]
[{CYCLE | NOCYCLE}]
[{CACHE n | NOCACHE}];- NOCYCLE:表示不循环.
- CACHE:缓存.
注意:
- 1.NEXTVAL:返回序列中下一个有效的值,任何用户都可以引用
- 2.CURRVAL:存放序列的当前值
- 修改序列:修改序列的增量, 最大值, 最小值, 循环选项, 或是否装入内存
- 语法:
ALTER SEQUENCE dept_deptid_seq
INCREMENT BY 20
MAXVALUE 999999
NOCACHE
NOCYCLE; - 注意事项:
- 1.必须是序列的拥有者或对序列有 ALTER 权限
- 2.只有将来的序列值会被改变
- 3.改变序列的初始值只能通过删除序列之后重建序列的方法实现
- 语法:
- 删除序列:
- Drop sequence 序列名称。
- 概述:可供多个用户用来产生唯一数值的数据库对象
4.索引: 提高查询的效率
- 概述:
- 1.一种独立于表的模式对象, 可以存储在与表不同的磁盘或表空间中
- 2.索引被删除或损坏, 不会对表产生影响, 其影响的只是查询的速度
- 3.索引一旦建立, Oracle 管理系统会对其进行自动维护, 而且由 Oracle 管理系统决定何时使用索引. 用户不用在查询语句中指定使用哪个索引
- 4.在删除一个表时, 所有基于该表的索引会自动被删除
- 5.通过指针加速 Oracle 服务器的查询速度
- 6.通过快速定位数据的方法,减少磁盘 I/O
- 语法:
CREATE INDEX index
ON table (column[, column]…); - 创建索引:
- 1.自动创建
- 2.手动创建
- oracle索引类型:
- 1.B树索引
- 2.位图索引
- 什么时候创建索引:
- 1.列中数据值分布范围很广
- 2.列经常在 WHERE 子句或连接条件中出现
- 3.表经常被访问而且数据量很大 ,访问的数据大概占数据总量的2%到4%
- 什么时候不创建索引:
- 1.表很小
- 2.列不经常作为连接条件或出现在WHERE子句中
- 3.查询的数据大于2%到4%
- 4.表经常更新
- 概述:
5.同义词
- 概述:给对象起别名,方便访问其它用户的对象,缩短对象名字的长度
- 语法:
CREATE [PUBLIC] SYNONYM synonym
FOR object;
*删除同义词:
DROP SYNONYM 同义词名称
6.存储过程
- 概述:指存储在数据库中的供用户调用的子程序叫存储过程或者存储函数.
- 语法:
create [or replace] procedure 过程名(参数列表)
as
PL/SQL子程序
- 注意:这里的参数需要指定是输入参数还输出参数(in:输入,out:输出)
存储过程调用方式:
- execute[exec] 过程名;
-
begin
过程名
end;
/
-
7.存储函数
- 概述:
函数(Function)为一命名的存储程序,可带参数,并返回一计算值.
函数和过程的结构类似,但必须有一个RETURN子句,用于返回函数值.
函数说明要指定函数名,结果值的类型,以及参数类型等. - 语法:
CREATE [OR REPLACE] FUNCTION 函数名(参数列表)
RETURN 函数值类型
AS
PLSQL子程序体 调用:
1.
begin
dbms_output.put_line(‘salary is:’ || queryEmpSalary(7934));
end;2.
declare
v_sal number;
begin
v_sal:=queryEmpSalary(7934);
dbms_output.put_line(‘salary is:’ || v_sal);
end;
/
- 概述:
8.触发器
- 概述:
数据库触发器是一个与表相关联的,存储的PL/SQL程序。
每当一个特定的数据操作语句(Insert,update,delete)在指定的表上发出时,Oracle自动地执行触发器中定义的语句序列 - 类型:
- 1.语句级触发器(针对表)
*在指定的操作语句操作之前或之后执行一次,不管这条语句影响了多少行 - 2.行级触发器(FOR EACH ROW)(针对行)
- 触发语句作用的每一条记录都被触发.在行级触发器中使用old和new伪记录变量,识别值的状态.
- 1.语句级触发器(针对表)
- 语法:
CREATE [or REPLACE] TRIGGER 触发器名
{BEFORE | AFTER}
{DELETE | INSERT | UPDATE [OF 列名]}
ON 表名
[FOR EACH ROW [WHEN(条件) ] ]
PLSQL 块 - 作用:
- 1.数据确认
- 2.实施复杂的安全性检查
- 3.做审计,跟踪表上所做的数据操作等
- 4.数据的备份和同步
- *
- 概述:
注意:
- 1.存储过程与存储函数的区别:
- 存储过程没有返回值,存储函数有返回值.
- 当只有一个返回值时,用存储函数,否则(无返回值/多个)就用存储过程.
- 2.查看触发器,过程,函数
- Select * from user_triggers;
- Select * from user_source;
- 1.存储过程与存储函数的区别: