Wenn ich einen Peak in die information_schema
Datenbank nehme und die Metadaten für eines meiner Lieblingsprojekte anspreche, fällt es mir schwer zu verstehen, welche (wenn überhaupt) Unterschiede zwischen dem create schema
Befehl und dem create database
Befehl für MySQL bestehen.
Gibt es Unterschiede? Wenn nicht, ist dies ein eher typisches Verhaltensmuster für relationale Datenbanken (ich habe gehört, dass für andere Datenbanken wie Oracle ein Schema in einer Datenbank vorhanden ist, anstatt sich auf derselben Ebene wie eine Datenbank zu befinden).
Vielen Dank!
In der MySQL-Dokumentation heißt es: CREATE SCHEMA ist ein Synonym für CREATE DATABASE ab MySQL 5.0.2.
Dies alles geht auf einen ANSI-Standard für SQL Mitte der 80er Jahre zurück.
Dieser Standard hatte den Befehl "CREATE SCHEMA" und diente dazu, mehrere Namensräume für Tabellen- und Ansichtsnamen einzuführen. Alle Tabellen und Ansichten wurden in einem "Schema" erstellt. Ich weiß nicht, ob diese Version einen schemaübergreifenden Zugriff auf Tabellen und Ansichten definiert hat, aber ich gehe davon aus, dass dies der Fall war. AFAIR, kein Produkt (zumindest damals) hat es wirklich umgesetzt, dieses ganze Konzept war mehr Theorie als Praxis.
OTOH, ISTR Diese Version des Standards hatte nicht das Konzept eines "Benutzers" oder eines "CREATE USER" -Befehls, daher gab es Produkte, die das Konzept eines "Benutzers" verwendeten (der dann seinen eigenen Namensraum für Tabellen und hatte Ansichten), um das Äquivalent von "Schema" zu implementieren.
Dies ist ein Bereich, in dem sich die Systeme unterscheiden.
Für die Verwaltung sollte dies nicht allzu wichtig sein, da es hier ohnehin Unterschiede gibt.
Wenn Sie sich den Anwendungscode ansehen, müssen Sie sich "nur" um Fälle kümmern, in denen eine Anwendung über mehrere Namensräume auf Tabellen zugreift. AFAIK, alle Systeme unterstützen eine Syntax ".", Und dabei sollte es keine Rolle spielen, ob der Namensraum der eines Benutzers, eines "Schemas" oder einer "Datenbank" ist.
quelle
Genau genommen gibt es in MySql keinen Unterschied zwischen Datenbank und Schema .
Dies ist jedoch bei anderen Datenbankmodulen wie SQL Server nicht der Fall. In SQL Server:,
Standardmäßig gehören alle Tabellen in SQL Server zu einem Standardschema namens dbo . Wenn Sie eine Tabelle abfragen, die keinem bestimmten Schema zugeordnet wurde, können Sie Folgendes tun:
was äquivalent ist zu:
Jetzt ermöglicht SQL Server die Erstellung verschiedener Schemata, sodass Sie Tabellen gruppieren können, die einen ähnlichen Zweck haben. Das hilft, die Datenbank zu organisieren.
Sie können beispielsweise ein Schema namens " Verkauf" mit Tabellen wie Rechnungen , Gläubigern (und anderen mit Verkäufen verbundenen) und ein anderes Schema namens " Suche" mit Tabellen wie Ländern , Währungen , Abonnementtypen (und jeder anderen Tabelle, die als Look verwendet wird) erstellen Tisch).
Die Tabellen, die einer bestimmten Domäne zugeordnet sind, werden in SQL Server Studio Manager mit dem Schemanamen vor dem Tabellennamen angezeigt (genau wie die Tabellen, die zum Standard- Dbo- Schema gehören).
In SQL Server gibt es spezielle Schemas. Um dasselbe Buch zu zitieren:
Schemata dienen nicht nur der Gruppierung. Es ist tatsächlich möglich, verschiedenen Benutzern unterschiedliche Berechtigungen für jedes Schema zu erteilen, wie in MSDN beschrieben .
Auf diese Weise könnte die oben erwähnte Schemasuche jedem Standardbenutzer in der Datenbank zur Verfügung gestellt werden (z. B.
SELECT
nur Berechtigungen), während eine Tabelle mit dem Namen " Lieferantenbankkontodetails" in einem anderen Schema namens " Finanziell" zugewiesen werden kann , um nur den Benutzern in "Zugriff" zu gewähren die Gruppeaccounts
(nur ein Beispiel, Sie bekommen die Idee).Zum Schluss noch einmal das gleiche Buch zitieren:
quelle
CREATE SCHEMA ist ein Synonym für CREATE DATABASE. CREATE DATABASE Syntax
quelle
Die Datenbank ist eine Sammlung von Schemata und das Schema ist eine Sammlung von Tabellen. Aber in MySQL wird es genauso verwendet.
quelle
Es gibt also keinen Unterschied zwischen MySQL "Datenbank" und MySQL "Schema": Dies sind zwei Namen für dasselbe - ein Namespace für Tabellen und andere DB-Objekte.
Für Personen mit Oracle-Hintergrund: Die MySQL "Datenbank", auch bekannt als MySQL "Schema", entspricht dem Oracle-Schema. Der Unterschied zwischen MySQL- und Oracle CREATE SCHEMA-Befehlen besteht darin, dass der CREATE SCHEMA-Befehl in Oracle kein Schema erstellt, sondern es mit Tabellen und Ansichten füllt. Und der Befehl CREATE DATABASE von Oracle macht etwas ganz anderes als sein MySQL-Gegenstück.
quelle