目录
数据库对象
1.能够使用数据定义语言中的create关键来创建的都可以成为数据库对象。
2.Oracle中最基础的数据库对象:表,视图
3.其他:函数,存储过程,触发器,序列,同义词,索引等等。
4.四个数据库对象:同义词,序列,视图,索引
#同义词 synonym
1.对已有的数据表对象起别名。
2.作用:方便其它用户访问
3.同义词:公开同义词 私有同义词
4.公开同义词:所有用户都能被访问(这些用户必须拥有查询的权限)
5.私有同义词:只有当前用户所创建的才能访问。
6.语法
公开同义词: create public synonym 同义词名称 for 表;
私有同义词: create synonym 同义词名称 for 表;
1.2.1 私有同义词
只能被当前用户访问,而且不能与当前模式的对象相同,就是有的对象有这名字了就不能取了。
**创建私有同义词
create sysnonym aa for scott.emp;--aa为名字,可自定义,执行如果出现权限不足错误,可以使用管理员给予权限
**给予权限:使用sys登录后,手动点击user找到scott用户,点击编辑,给系统权限加:
create synonym--创建私有同义词
**查看同义词
select * from aa;--使用同义词得到emp表数据,后期有需求再用,先理解制作方式。
1.2.2 公有同义词
由一个特殊的用户组Public所拥有。顾名思义,数据库中所有的用户都可以使用公用同义词。
**创建公有同义词
create public synonym bb for scott.emp;--会提示权限不足
案例
1.序列
--创建一个序列
create sequence s_demo1;
--认识序列中2个伪列属性
--1.获取当前序列的值 currval
--2.获取当前序列的下一个值 nextval
select s_demo1.nextval from dual;
select s_demo1.currval from dual;
--复制表的结构
create table tb_demo1
as
select empno,ename,sal from emp where 1=0;
--查询
select* from tb_demo1;
--创建序列
create sequence s_demo2
start with 100
increment by 2
maxvalue 10000
minvalue 100
--通过nextval为tb_demo1表中的empno属性复制
insert into tb_demo1
values(s_demo2.nextval,'康康',1);
insert into tb_demo1
values(s_demo2.nextval,'康康2',2);
insert into tb_demo1
values(s_demo2.nextval,'康康3',3);
select * from tb_demo1;
2.视图
#视图:一张虚拟表,通过sql语句查询的结构进行保存,
#视图相当于一个容器,作用:方便查看结果。
#关键字:view
#语法
create view v_视图名称
as
select|update...
#注意2点:(1)通过视图保存的结果集必须唯一(2)必须保证字段有名字
create view v_demo1
as
select emp.*,dept.dname from emp inner join dept on emp.deptno = dept.deptno
create view v_demo2
as
select max(sal) as "最高工资" from emp;
select * from v_demo2;
drop view v_demo2;
3.索引
-索引 index
--数据库中一种特定的排布方式 类似课本的目录
--索引的建立:为了提高查询的效率,我们创建表,如果该表中设立了主键约束,自动会给这个主键的字段创建一个唯一索引。
create index 索引名称
on 表(字段)
create index i_demo1
on emp(ename)
select * from emp where ename like 'S%';
--删除索引
drop index i_demo1;