web-dev-qa-db-fra.com

Différence entre schéma / base de données dans MySQL

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.

247
Lloyd Banks

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 de DATABASE dans la syntaxe SQL de MySQL, par exemple, en utilisant CREATE SCHEMA à la place de CREATE 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.

290
eggyal

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.

54
user2631022

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.

16
Akash KC

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.

6
Jean-Michel P.

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.

3
Mike Brant

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.

2
Riz

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

0
EliD