数据库之同义词和序列

本文详细介绍了Oracle数据库中的同义词和序列概念。同义词作为数据库对象的别名,分为私有和公有,便于不同权限的用户访问。序列则用于生成连续整数,常用于主键自增。文章通过实例展示了同义词和序列的创建及使用方法。

1、同义词:

同义词(Synonym)是数据库对象的一个别名,Oracle可以为表、视图、序列、过程、程序包等指定一个别名。同义词有两种类型:
**私有同义词:**拥有CREATE SYNONYM权限的用户(包括非管理员用户)即可创建私有同义词,创建的私有同义词只能由当前用户使用。
**公有同义词:**系统管理员可以创建公有同义词,公有同义词可以被所有用户访问。
创建同义词的语法是:
语法结构:同义词
示例:

--同义词和序列
---面试:视图可以进行增删改(dml)吗?
-------简单的视图可以进行增删改,但是限制条件比较多
-------复杂的视图不能进行DML操作
-----zai中创建一个视图包含平均工资,部门名称
create or replace view view_avg_aslary as 
select avg(s.salary) 平均工资, t.department_name 部门名称
  from employees s
  left join departments t
    on s.department_id = t.department_id
 group by s.department_id, t.department_name;

select *from view_avg_aslary;
---错误示例,复杂视图不能进行DML操作
-----delete from view_avg_aslary;
----创建一个非只读简单视图
create or replace view view_employees2 as 
select 
   s.employee_id,
   s.first_name,
   s.email,
   s.phone_number,
   s.hire_date,
   s.job_id,
   s.department_id,
   t.department_name
 from employees s 
 left join departments t
  on s.department_id=t.department_id;

---delete from  view_employees2
----删除其中的一条数据还是可以的
delete from  view_employees2 e where e.employee_id=202
----同义词
select * from user_tables;--user_tables不但是一个视图,还是一个公有的同义词
----查询一下公有的同义词表
select *from all_synonyms;
select *from all_synonyms where synonym_name='USER_TABLES';
select *from all_synonyms where synonym_name='DUAL';
----必须在管理员sys账户下创建公有的同义词:
CREATE OR REPLACE PUBLIC SYNONYM view_avg_aslary
FOR hr.view_avg_aslary
---创建好同义词后,就可以在scott账户下直接访问hr里面的视图了
select *from view_avg_aslary;
select *from all_synonyms where synonym_name='VIEW_AVG_ASLARY';

2、序列:

序列(Sequence)是用来生成连续的整数数据的对象。序列常常用来作为主键中增长列,序列中的可以升序生成,也可以降序生成。
创建序列的语法是:
语法结构:创建序列
示例:

---序列
----创建序列
CREATE SEQUENCE seq_emp;
-----查询序列的下一个值
select seq_emp.nextval from dual;
-----查询序列当前的值
select seq_emp.currval from dual;
----创建一个实现自动增长的表
create table lanqiao(
       id number primary key,
       name varchar2(10)
)
insert into lanqiao values(seq_emp.nextval,'小羊');

select *from lanqiao
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值