Existe-t-il une différence entre un schéma et une base de données dans MySQL? Dans SQL Server, une base de données est un conteneur de niveau supérieur par rapport à un schéma.
J'ai lu que Create Schema
et Create Database
font essentiellement la même chose dans MySQL, ce qui m'amène à croire que schémas et bases de données sont des mots différents pour les mêmes objets.
Comme défini dans le glossaire MySQL :
Dans MySQL, physiquement, un schéma est synonyme d'un base de données . Vous pouvez remplacer le mot clé
SCHEMA
au lieu deDATABASE
dans la syntaxe SQL de MySQL, par exemple, en utilisantCREATE SCHEMA
à la place deCREATE DATABASE
.Certains autres produits de base de données font une distinction. Par exemple, dans le produit Oracle Database, un schéma ne représente qu'une partie de la base de données: tables et autres objets appartenant à un seul utilisateur.
Dépend du serveur de base de données. MySQL
s'en moque, c'est fondamentalement la même chose.
Oracle
, DB2
et d'autres solutions de base de données d'entreprise font la distinction. Habituellement, un schéma est une collection de tables et un base de données est une collection de schémas.
En se référant à documentation MySql ,
CREATE DATABASE crée une base de données avec le nom donné. Pour utiliser cette instruction, vous devez disposer du privilège CREATE pour la base de données. CREATE SCHEMA est un synonyme de CREATE DATABASE à partir de MySQL 5.0.2.
PostgreSQL supporte les schémas, qui sont un sous-ensemble d'une base de données: https://www.postgresql.org/docs/current/static/ddl-schemas.html
Une base de données contient un ou plusieurs schémas nommés, qui à leur tour contiennent des tables. Les schémas contiennent également d'autres types d'objets nommés, notamment les types de données, les fonctions et les opérateurs. Le même nom d'objet peut être utilisé dans différents schémas sans conflit; Par exemple, schema1 et myschema peuvent tous deux contenir des tables nommées mytable. Contrairement aux bases de données, les schémas ne sont pas séparés de manière rigide: un utilisateur peut accéder aux objets de n’importe lequel des schémas de la base de données auxquels il est connecté, s’il dispose des privilèges nécessaires.
Les schémas sont analogues aux répertoires au niveau du système d'exploitation, sauf qu'ils ne peuvent pas être imbriqués.
À mon humble avis, MySQL n'est pas une base de données de référence. Vous ne devriez jamais citer MySQL pour une explication. MySQL implémente du SQL non standard et revendique parfois des fonctionnalités qu’il ne supporte pas. Par exemple, dans MySQL, CREATE schema créera uniquement une base de données. C'est vraiment trompeur utilisateurs.
Ce type de vocabulaire est appelé "MySQLism" par les administrateurs de base de données.
Oui, les gens utilisent ces termes indifféremment en ce qui concerne MySQL. Bien que, souvent, vous entendiez des personnes se référer de manière inappropriée à l'ensemble du serveur de base de données en tant que base de données.
dans MySQL le schéma est synonyme de base de données . C'est assez déroutant pour les débutants qui sautent dans MySQL et le premier jour trouvent le schéma Word .
Lorsque vous démarrez MySQL pour la première fois, vous devez créer une base de données (comme tout autre système de base de données) avec laquelle vous pouvez travailler CRÉER SCHEMA , ce qui n’est autre chose que CREATE DATABASE
Dans d'autres bases de données, le système représente une partie de la base de données ou une collection de tables, et la collection de schémas est une base de données.
Par exemple, dans Microsoft SQL Server, les schémas font référence à un utilisateur unique et constituent un autre niveau de conteneur dans l'ordre qui indique le serveur, la base de données, le schéma, les tables et les objets.
Par exemple, lorsque vous souhaitez mettre à jour dbo.table_a et que la syntaxe n'est pas qualifiée de manière complète, telle que UPDATE table.a, le SGBD ne peut pas décider d'utiliser la table souhaitée. Essentiellement, par défaut, le SGBD utilisera myuser.table_a