達夢資料庫,寫SQL如何才能不帶上模式名?

2021-10-10 21:42:24 字數 1677 閱讀 1810

經常有朋友問到在dm資料庫裡面,為何sql要加上模式名(資料庫名)訪問呢?

其實這是把mysql或者sqlserver的思維代入dm資料庫造成的,mysql的體系架構是單例項多庫的,乙個使用者可以訪問多個資料庫,然後指定當前資料庫寫sql的時候就不用帶上資料庫名了。

達夢的體系架構是單庫多例項的,也就是沒有多個資料庫的概念了,從mysql或者sqlserver轉到達夢,就需要建多個使用者+表空間來對應mysql的多個資料庫。例如mysql中有testdb1,testdb2兩個庫,都用root使用者來訪問,在達夢中第一步就建立兩個表空間:

create tablespace testdb1 datafile 'testdb1.dbf' size 128;

create tablespace testdb2 datafile 'testdb2.dbf' size 128;

第二步建立兩個使用者,授予對應的許可權:

--以下sql用sysdba使用者登入執行

第三步:遷移mysql testdb1資料庫裡面的表,資料庫遷移工具就使用testdb1使用者來遷移;遷移mysql testdb2資料庫裡面的表,資料庫遷移工具就使用testdb2使用者來遷移

第四步:訪問testdb1使用者(模式)下的表,就使用testdb1使用者登入來訪問,就不需要加模式名testdb1

如果要用jdbc來訪問資料庫,設定如下:

jdbc.driver=dm.jdbc.driver.dmdriver

jdbc.url=jdbc:dm:

jdbc.username=testdb1

jdbc.password=123456789

補充說明一下:假設乙個使用者擁有多個模式,該使用者訪問自己所屬的其他非同名模式下的物件時,如何才能不帶模式名呢?

這裡以sysdba使用者為例:

create schema "test" authorization "sysdba";

create table test.tttt(c1 int);

insert into test.tttt values(1);

commit;

select * from tttt; --會報錯

set schema test; --切換當前模式為test

select * from tttt; --執行成功

達夢資料庫常用SQL

達夢資料庫建立表 create table test table scid varchar2 10 primary key,scname varchar2 20 scsm number 6 scprice number 4,2 當前使用者 達夢資料庫 獲取當前使用者擁有的表 select table...

達夢資料庫和mysql索引引擎 達夢資料庫 索引

1.索引的種類和功能 聚集索引 每乙個普通表有且只有乙個聚集索引 唯一索引 索引資料根據索引鍵唯一 函式索引 包含函式 表示式的預先計算的值 位圖索引 對低基數的列建立位圖索引 位圖連線索引 針對兩個或者多個表連線的點陣圖索引,主要用於資料倉儲中 全文索引 在表的文字列上而建的索引。2.何時使用索引...

達夢資料庫操作

1.安裝 dminstall.bin i接下來是一些設定,比如 語言 key檔案的位置 時區 安裝型別 安裝目錄 略過 2.初始化 進入你剛才設定的安裝目錄的bin目錄下執行 dminit這是我自己的設定 input system dir home dmdba dmdata input db nam...