DM8与Oracle关于模式、用户等概念的分析
最近在學習達夢數據庫時對達夢的模式概念有些模糊,所以將它和Oracle的進行了對比。
一、Oracle數據庫關于模式、用戶等概念的分析
Oracle數據庫是我行一直使用的數據庫,相對來說schema的概念比較清晰。先用官方解釋來闡述下,在來講講我的理解。
原文: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.
   大意:模式是數據庫對象的集合。模式對象是數據庫數據的邏輯結構。(把數據庫對象用模式分開成不同的邏輯結構)。
schema里面包含了各種對象如tables, views, sequences, stored procedures, synonyms, indexes, clusters, and database links等。
在我的理解中,schema的個數和名字都和user相同,但是schema和user的創建時間是不同的。schema是不能通過創建得到的,默認是在創建用戶的時候自動生成的,在創建一個用戶的同時為這個用戶創建一個與用戶名同名的schema并作為該用戶的缺省 schema。一個用戶有一個缺省的schema,其schema名就等于用戶名,當然一個用戶還可以使用其他的schema。如果我們訪問一個表時,沒有指明該 表屬于哪一個schema中的,系統就會自動給我們在表上加上缺省的schema名。比如我們在訪問數據庫時,訪問scott用戶下的emp表,通過 select * from emp; 其實,這sql語句的完整寫法為select * from scott.emp。
在數據庫中一個對象的完整名稱為schema.object,而不屬user.object。類似如果我們在創建對象時不指定該對象 的schema,在該對象的schema為用戶的缺省schema。這就像一個用戶有一個缺省的表空間,但是該用戶還可以使用其他的表空間,如果我們在創 建對象時不指定表空間,則對象存儲在缺省表空間中,要想讓對象存儲在其他表空間中,我們需要在創建對象時指定該對象的表空間。
二、DM8數據庫關于模式、用戶等概念的分析
官方定義為:用戶的模式(SCHEMA)指的是用戶賬號擁有的對象集,在概念上可將其看作是包含表、視圖、索引和權限定義的對象。包含表、視圖、約束、索引、序列、觸發器、存儲過程/函數、包、同義詞、類、域等。
使用模式的主要原因:
可以使用如下語句查詢數據庫中所有模式:
在DM中,一個用戶可以擁有多個模式,一個模式僅歸屬于一個用戶;一個模式中的對象(表、視圖等)可以被多個用戶使用(前提是有訪問權限)。
而這就是Oracle和DM最大的不同。
如果要查看數據庫中所有模式分別歸屬于哪個用戶,可以使用如下語句查詢:
使用如下語句可以查詢某模式(這里以TEST模式為名,模式名區分大小寫)下的所有數據庫對象:
也可以在DM管理工具對象導航窗口查看模式下的所有對象,如下圖所示。在DM數據庫中,除模式對象之外,還有模式對象之外的其他對象,稱為非模式對象,比如:用戶、角色、表空間、目錄等。
在創建用戶時,系統會為每一個用戶自動建立了一個與用戶名同名的模式作為其默認模式,用戶還可以用模式定義語句建立其它模式。這一點也是和Oracle迥然不同的。
在創建模式時也可以同時創建模式下對象,只有具有CREATE SCHEMA權限的用戶才能創建模式。圖形化如圖:
或者用命令也可:
create schema MYDM authorization test;如果我們不再使用某個模式,可以刪除該模式;使用如下語句刪除模式,默認為RESTRICT方式(如果模式下存在對象則不能直接刪除,可以使用CASCADE級聯刪除模式及模式下的所有對象)。
DROP SCHEMA <模式名> [RESTRICT | CASCADE];
模式一旦定義,該用戶所建基表、視圖等均屬該模式,其它用戶訪問該用戶所建立的基表、視圖等均需在表名、視圖名前冠以模式名;引用模式對象的格式如下:
[模式名].對象名
在當前模式和要引用的模式對象所屬的模式相同時,可以省略模式名。當訪問一個表時,沒有指明該表屬于哪一個模式,系統會自動在表前加上缺省的模式名。類似地,如果我們在創建對象時不指定該對象的模式,則該對象的模式為用戶的缺省模式。如果當前模式和要引用的模式對象所屬的模式相同,可省略模式名。
我們也可以使用如下語句指定某個模式為當前模式(前提是該模式屬于當前登錄用戶):
SET SCHEMA <模式名>;
如下樣例,我們使用SYSDBA查詢DMHR模式下的部門信息表,在未設置模式時,默認情況下,當前模式是登錄用戶的同名模式(即SYSDBA),所以我們訪問DMHR模式下的表需要加上模式名;當我們使用如下命令設置了當前模式為DMHR時,則訪問DMHR模式下的表可以不必再加上模式名,簡化了對象的訪問。
三、Oracle和DM8數據庫關于模式、用戶等概念的對比
綜上所述,我們看出Oracle和DM之間在模式的這個定義上有所不同的:
1)Oracle的話,一個用戶一般對應一個schema,該用戶的schema名等于用戶名,并作為該用戶缺省schema。?而DM數據中一個用戶下可以存在多個schema。
2)Oracle數據庫中不能新創建一個schema,要想創建一個schema,只能通過創建一個用戶的方法解決?。而DM數據庫中,在創建用戶時,系統會為每一個用戶自動建立了一個與用戶名同名的模式作為其默認模式,并且用戶還可以用模式定義語句建立其它模式。
3)Oracle數據庫不能刪除或者創建模式,而DM數據庫可以刪除或者創建模式。
總結
以上是生活随笔為你收集整理的DM8与Oracle关于模式、用户等概念的分析的全部內容,希望文章能夠幫你解決所遇到的問題。
 
                            
                        - 上一篇: win8.1 linux系统,电脑显示w
- 下一篇: android密码可见不可见的光标控制,
