第一章:MySQL中Schema和DataBase是否等同?
涉及到數(shù)據(jù)庫(kù)的模式有很多疑惑,問(wèn)題經(jīng)常出現(xiàn)在模式和數(shù)據(jù)庫(kù)之間是否有區(qū)別,如果有,區(qū)別在哪里。
取決于數(shù)據(jù)庫(kù)供應(yīng)商
對(duì)schema(模式)產(chǎn)生疑惑的一部分原因是數(shù)據(jù)庫(kù)系統(tǒng)傾向于以自己的方式處理模式
(1)MySQL的文檔中指出,在物理上,模式與數(shù)據(jù)庫(kù)是同義的,所以,模式和數(shù)據(jù)庫(kù)是一回事。
(2)但是,Oracle的文檔卻指出,某些對(duì)象可以存儲(chǔ)在數(shù)據(jù)庫(kù)中,但不能存儲(chǔ)在schema中。 因此,模式和數(shù)據(jù)庫(kù)不是一回事。
(3)而根據(jù)這篇SQL Server技術(shù)文章SQLServer technical article,schema是數(shù)據(jù)庫(kù)SQL Server內(nèi)部的一個(gè)獨(dú)立的實(shí)體。 所以,他們也不是一回事。
MySQL官方文檔指出,從概念上講,模式是一組相互關(guān)聯(lián)的數(shù)據(jù)庫(kù)對(duì)象,如表,表列,列的數(shù)據(jù)類(lèi)型,索引,外鍵等等。但是從物理層面上來(lái)說(shuō),模式與數(shù)據(jù)庫(kù)是同義的。你可以在MySQL的SQL語(yǔ)法中用關(guān)鍵字SCHEMA替代DATABASE,例如使用CREATE SCHEMA來(lái)代替CREATE DATABASE。
SQL Server官方文檔指出,schema中包含了數(shù)據(jù)庫(kù)的表,字段,數(shù)據(jù)類(lèi)型以及主鍵和外鍵的名稱(chēng)。參考:SQL Server Glossary. SQL Server 2016 Technical Documentation. Microsoft Developer Network. Retrieved 6 June 2016.
Oracle中的schema系統(tǒng)與其他數(shù)據(jù)庫(kù)系統(tǒng)大不相同,Oracle的schema與數(shù)據(jù)庫(kù)用戶(hù)密切相關(guān)。
Oracle官方文檔指出,schema是數(shù)據(jù)或模式對(duì)象的邏輯結(jié)構(gòu)的集合,由數(shù)據(jù)庫(kù)用戶(hù)擁有,并且與該用戶(hù)具有相同的名稱(chēng),也就是說(shuō)每個(gè)用戶(hù)擁有一個(gè)獨(dú)立的schema。
盡管上述三個(gè)DBMS在定義schema方面有所不同,還是有一個(gè)共同點(diǎn),就是每一個(gè)都支持CREATE SCHEMA語(yǔ)句。
MySQL
在MySQL中,CREATE SCHEMA創(chuàng)建了一個(gè)數(shù)據(jù)庫(kù),這是因?yàn)镃REATE SCHEMA是CREATE DATABASE的同義詞。 換句話(huà)說(shuō),你可以使用CREATE SCHEMA或者CREATE DATABASE來(lái)創(chuàng)建一個(gè)數(shù)據(jù)庫(kù)。
Oracle Database
在Oracle中,CREATE SCHEMA語(yǔ)句實(shí)際上并不創(chuàng)建一個(gè)模式,這是因?yàn)橐呀?jīng)為在創(chuàng)建用戶(hù)時(shí),數(shù)據(jù)庫(kù)用戶(hù)就已經(jīng)創(chuàng)建了一個(gè)模式,也就是說(shuō)在ORACLE中CREATE USER就創(chuàng)建了一個(gè)schema,CREATE SCHEMA語(yǔ)句允許你將schema同表和視圖關(guān)聯(lián)起來(lái),并在這些對(duì)象上授權(quán),從而不必在多個(gè)事務(wù)中發(fā)出多個(gè)SQL語(yǔ)句。
SQL Server
在SQL Server中,CREATE SCHEMA將按照名稱(chēng)創(chuàng)建一個(gè)模式,與MySQL不同,CREATE SCHEMA語(yǔ)句創(chuàng)建了一個(gè)單獨(dú)定義到數(shù)據(jù)庫(kù)的模式。和ORACLE也不同,CREATE SCHEMA語(yǔ)句實(shí)際創(chuàng)建了一個(gè)模式(前面說(shuō)到這個(gè)語(yǔ)句在ORACLE中不創(chuàng)建一個(gè)模式),在SQL Server中,一旦創(chuàng)建了模式,就可以往模式中添加用戶(hù)和對(duì)象。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-427117.html
總結(jié)
schema這個(gè)詞可以用在很多不同的環(huán)境中,在特定數(shù)據(jù)庫(kù)管理系統(tǒng)創(chuàng)建一個(gè)schema時(shí),您需要使用DBMS特定定義模式,當(dāng)你切換到一個(gè)新的數(shù)據(jù)庫(kù)管理系統(tǒng)時(shí),一定要查看該系統(tǒng)是如何定義schema的。
整理自:https://blog.csdn.net/weixin_44321080/article/details/108446596文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-427117.html
到了這里,關(guān)于MySQL必知必會(huì):MySQL中的Schema與DataBase的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!