在做需求的时候发现,正常来讲的话查询的是数据库的表,但是有时查询的可能又是视图,还有可能查询的是一个表的同义词;表/视图/同义词 他们有什么关联,为什么会有这么三种定义呢?

数据库基表
数据库中的表,统一定义为基表,是常规定义的表;
在DATAGRIP中表,视图,同义词 分别对应了tables,views,synonyms;

视图
视图是一条存储起来的 SELECT 语句,是数据的显示方式,通过视图可以限制用户访问行、列、或更新表内容;
在 SQL 中,视图是基于 SQL 语句的结果集的可视化的表。
视图包含行和列,就像一个真实的表。视图中的字段就是来自一个或多个数据库中的真实的表中的字段。我们可以向视图添加 SQL 函数、WHERE 以及 JOIN 语句,就像这些来自于某个单一的表;
比如:创建视图的时候可以增加条件,甚至可以JOIN等;
1 | CREATE VIEW view_name AS |
视图的作用
视图一般是用来限制用户访问行、列、或更新表内容;起到隔离作用;
1 :限制行,列: 在创建视图的时候,就不返回要限制的列和行;
2 :限制更新: 视图不只能查询,不能做更新操作;
创建视图
创建视图语法
1 | CREATE VIEW view_name AS |
更新视图
更新视图: 创建并更新,覆盖原来的视图;
1 | SQL CREATE OR REPLACE VIEW Syntax |
删除视图
删除视图:SQL DROP VIEW Syntax
1 | DROP VIEW view_name |
同义词
同义词的作用
同义词使用场景是:两个独立的数据库用户,用户A想访问用户B数据库表的时候,就可以创建同义词,提供给A访问B的数据库,只限于查询的操作;
大概操作:
- 1: B 用户授权A 用户;
- 2: A 用户数据库创建 B 数据库的同义词;
使用同义词之前要确保用户拥有访问该对象的权限。
当公有对象(公有同义词)和本地对象具有相同的名称时,本地对象优先
公有同义词:DBA建立,所有用户共同拥有。CREATE PUBLIC SYNONYM …
私有同义词:用户建立,使用与该用户(对象,可被授权)。
1 | CREATE OR REPLACE SYNONYM dept FOR scott.dept; |
区别
同义词和视图的区别在于:
同义词是提供给不同用户间范围的,只提供查询的功能,用户提供给不同用户之间范围;
视图是提供给同一个用户的范围内,只提供查询的功能,用户隔离操作;
GitHub登录不了?信任该网站之后再登录。