当前位置:网站首页>SCHEMA solves the puzzle
SCHEMA solves the puzzle
2022-08-01 11:33:00 【HUAWEI CLOUD】
一、定义
A schema is a collection of database objects (used by a user.). Schema objects are the logical structures that directly refer to the database’s data. A user is a name defined in the database that can connect to and access objects .Schemas and users help database administrators manage database security.
从定义中我们可以看出schema为数据库对象的集合,为了区分各个集合,我们需要给这个集合起个名字,这些名字就是我们在企业管理器的方案下看到的许多类似用户名的节点,这些类似用户名的节点其实就是一个schema,schema里面包含了各种对象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links.
一个用户一般对应一个schema,该用户的schema名等于用户名,并作为该用户缺省schema.这也就是我们在企业管理器的方案下看到schema名都为数据库用户名的原因.
Oracle数据库中不能新创建一个schema,要想创建一个schema,只能通过创建一个用户的方法解决(Oracle中虽然有create schema语句,但是它并不是用来创建一个schema的),在创建一个用户的同时为这个用户创建一个与用户名同名的schem,并作为该用户的缺省shcema.即schema的个数同user的个数相同,而且schema名字同user名字一一对应并且相同,所有我们可以称schema为user的别名,虽然这样说并不准确,但是更容易理解一些.
一个用户有一个缺省的schema,其schema名就等于用户名,当然一个用户还可以使用其他的schema.如果我们访问一个表时,没有指明该表属于哪一个schema中的,系统就会自动给我们在表上加上缺省的sheman名.比如我们在访问数据库时,访问scott用户下的emp表,通过select * from emp; 其实,这sql语句的完整写法为select * from scott.emp.在数据库中一个对象的完整名称为schema.object,而不属user.object.类似如果我们在创建对象时不指定该对象的schema,在该对象的schema为用户的缺省schema.这就像一个用户有一个缺省的表空间,但是该用户还可以使用其他的表空间,如果我们在创建对象时不指定表空间,则对象存储在缺省表空间中,要想让对象存储在其他表空间中,我们需要在创建对象时指定该对象的表空间.
二、举例
SQL> Gruant dba to scottSQL> create table test(name char(10));Table created.SQL> create table system.test(name char(10));Table created.SQL> insert into test values('scott'); 1 row created.SQL> insert into system.test values('system');1 row created.SQL> commit;Commit complete.SQL> conn system/managerConnected.SQL> select * from test;NAME----------systemSQL> ALTER SESSION SET CURRENT_SCHEMA = scott; --改变用户缺省schema名Session altered.SQL> select * from test;NAME----------scottSQL> select owner ,table_name from dba_tables where table_name=upper('test');OWNER TABLE_NAME------------------------------ ------------------------------SCOTT TESTSYSTEM TEST上面这个查询就是我说将schema作为user的别名的依据.实际上在使用上,shcema与user完全一样,没有什么区别,在出现schema名的地方也可以出现user名.
边栏推荐
- 石头科技打造硬核品牌力 持续出海拓展全球市场
- Promise学习(二)一篇文章带你快速了解Promise中的常用API
- 【云享新鲜】社区周刊·Vol.73- DTSE Tech Talk:1小时深度解读SaaS应用系统设计
- Promise learning (2) An article takes you to quickly understand the common APIs in Promise
- js中常用追加元素的几种方法:append,appendTo,after,before,insertAfter,insertBefore,appendChild
- WPF 截图控件之绘制箭头(五)「仿微信」
- 如何获取微信视频号的地址(微信公众号的链接地址)
- EasyRecovery热门免费数据检测修复软件
- 爱可可AI前沿推介(8.1)
- 音视频技术开发周刊 | 256
猜你喜欢

千万级乘客排队系统重构&压测方案——总结篇

CAN通信的数据帧和远程帧

EasyRecovery热门免费数据检测修复软件

mysql进阶(二十二)MySQL错误之Incorrect string value中文字符输入错误问题分析

xss-labs靶场挑战

数字化转型实践:世界级2B数字化营销的方法框架

Promise学习(三)Promise的几个关键性问题 -- 状态改变、执行顺序与机制、多任务串联、异常穿透、中断promise链

C#/VB.NET 将PPT或PPTX转换为图像

Audio and Video Technology Development Weekly | 256

用户体验 | 如何度量用户体验 ?
随机推荐
这是我见过写得最烂的Controller层代码,没有之一!
Solve vscode input! Unable to quickly generate skeletons (three methods for the new version of vscode to quickly generate skeletons)
WPF 截图控件之绘制箭头(五)「仿微信」
一文说明白ECDSA spec256k1 spec256r1 EdDSA ed25519千丝万缕的关系
Introduction to data warehouse layering (real-time data warehouse architecture)
(ES6以上以及TS) Map对象转数组
【讲座分享】“营收“看金融
迁移学习冻结网络的方法:
bat倒计时代码
The use of Ts - Map type
新书上市 |《谁在掷骰子?》在“不确定性时代”中确定前行
Favorites|Mechanical Engineer Interview Frequently Asked Questions
Ts-Map 类的使用
复现assert和eval成功连接或失败连接蚁剑的原因
用户体验 | 如何度量用户体验 ?
4种常见的鉴权方式及说明
activiti工作流的分页查询避坑
Flutter Widget 如何启用和屏蔽点击事件
R语言ggplot2可视化:使用ggpubr包的ggscatter函数可视化散点图、使用xscale函数指定X轴坐标轴度量调整方式、设置x轴坐标为scientific使用科学计数法显示坐标值
Mini Program Graduation Works WeChat Food Recipes Mini Program Graduation Design Finished Products (4) Opening Report