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

290

Y a-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 cela Create Schemaet Create Databasefais essentiellement la même chose dans MySQL, ce qui m'amène à croire que les schémas et les bases de données sont des mots différents pour les mêmes objets.

Lloyd Banks
la source
En fait , je dirais schemavaut mieux que database, comme MySQL est une sorte de base de données, et il contient plusieurs database, et parfois vous useun database, ce qui fait beaucoup de recherches pour cible miss.
theaws.blog

Réponses:

335

Comme défini dans le glossaire MySQL :

Dans MySQL, physiquement, un schéma est synonyme d'une base de données . Vous pouvez remplacer le mot-clé SCHEMAau lieu de DATABASEdans la syntaxe SQL MySQL, par exemple en utilisant CREATE SCHEMAau lieu 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 d'une base de données: les tables et autres objets appartenant à un seul utilisateur.

eggyal
la source
74
Je pense que "certains autres produits de base de données" est vraiment un euphémisme pour à peu près toutes les autres bases de données (peut-être sauf SQLite, mais c'est compréhensible).
Stefan Steiger
5
Rendre un schéma synonyme de base de données est intéressant - je l'avais toujours associé à des objets utilisateur .. Et une mention amicale de SQLServer qui séparait le concept utilisateur / schéma permettant une grande flexibilité et quelques façons intéressantes de faire des requêtes dynamiques.
Gerard ONeill
L'ennuyeux à propos de la définition de "schéma" comme un regroupement d'objets de base de données est qu'il surcharge la signification plus ancienne du mot, par exemple en.wikipedia.org/wiki/Database_schema .
Mark E. Haase
1
@mehaase les deux sont l'ancien sens du mot. Oracle avait des schémas avant même SQL3 (1999), bien qu'il les ait traités comme d'autres bases de données fouleraient les bases de données à part entière. En fait, Oracle appelle «base de données» ce que d'autres appellent un serveur ou une instance de serveur - différents binaires, différents exécutables, différents ports.
Panagiotis Kanavos
61

Dépend du serveur de base de données. MySQLs'en fout, c'est fondamentalement la même chose.

Oracle, DB2et d'autres solutions de base de données au niveau de l'entreprise font une distinction. Habituellement, un schéma est une collection de tables et une base de données est une collection de schémas.

user2631022
la source
6
Même Microsoft SQL Server a distinction très similaire Oracleet DB2pour ce cas.
RBT
2
Dans MySQL, "base de données" et "schéma" ne sont pas fondamentalement la même chose; c'est exactement la même chose (par exemple, create databaseet create schemasont synonymes). Dans Oracle, le schéma est synonyme d'utilisateur (peut-être plus précisément, le schéma est une liste de tous les objets créés sous un utilisateur). MSSQL les distingue tous les trois (et par conséquent, lors de l'accès à une table à partir d'une base de données différente, le nom doit être qualifié à la fois par la base de données et le schéma, par exemple database1.dbo.table2)
Mike Rosoft
17

En vous référant à la documentation MySql ,

CREATE DATABASE crée une base de données avec le nom donné. Pour utiliser cette instruction, vous avez besoin du privilège CREATE pour la base de données. CREATE SCHEMA est synonyme de CREATE DATABASE à partir de MySQL 5.0.2.

Akash KC
la source
7

PostgreSQL prend en charge 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 des types de données, des fonctions et des opérateurs. Le même nom d'objet peut être utilisé dans différents schémas sans conflit; par exemple, schema1 et myschema peuvent 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 quel schéma de la base de données à laquelle 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 que les schémas ne peuvent pas être imbriqués.

À mon humble avis, MySQL n'est pas une base de données de référence. Vous ne devez jamais citer MySQL pour une explication. MySQL implémente SQL non standard et revendique parfois des fonctionnalités qu'il ne prend pas en charge. Par exemple, dans MySQL, le schéma CREATE ne crée qu'une base de données. Cela trompe vraiment les utilisateurs.

Ce type de vocabulaire est appelé "MySQLism" par les administrateurs de base de données.

Jean-Michel P.
la source
2
Et puis il y a des "schémas" à ajouter à la confusion pour les débutants :)
Zeni
@Zeni, qu'est-ce qu'un schéma dans MySQL? Tout ce que j'ai pu trouver, ce sont des références à la table des schémas information_schema, mais aucune définition concise de ce que cela signifie réellement
Alf47
@ Alf47 "schemata" n'est que la forme plurielle du mot "schema". "schémas" est également acceptable, mais pas aussi sophistiqué :)
jobo3208
6

dans le schéma MySQL est synonyme de base de données . C'est assez déroutant pour les débutants qui sautent sur MySQL et trouvent le premier mot le schéma , donc les gars n'ont rien à craindre car les deux sont les mêmes.

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) pour travailler avec afin que vous puissiez CRÉER UN SCHÉMA qui n'est rien d'autre que CRÉER UNE BASE DE DONNÉES

Dans certains autres systèmes de base de données, le schéma 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.

Riz
la source
3

Oui, les gens utilisent ces termes de manière interchangeable en ce qui concerne MySQL. Bien que vous entendiez souvent des gens se référer de manière inappropriée à l'ensemble du serveur de base de données comme la base de données.

Mike Brant
la source
0

Par exemple, Microsoft SQL Server, les schémas font référence à un seul utilisateur et constituent un autre niveau d'un conteneur dans l'ordre d'indication du serveur, de la base de données, du schéma, des tables et des objets.

Par exemple, lorsque vous avez l'intention de mettre à jour dbo.table_a et que la syntaxe n'est pas complète, comme UPDATE table.a, le SGBD ne peut pas décider d'utiliser la table prévue. Essentiellement par défaut, le SGBD utilisera myuser.table_a

EliD
la source
Les schémas appartiennent à un seul utilisateur. Par défaut, un utilisateur créé dans la base de données utilise le schéma dbo comme schéma par défaut. Le schéma par défaut utilisé pour une référence de table non complète est celui qui est défini pour cet utilisateur.
Gerard ONeill
Dans les anciennes versions de SQL Server, la suppression d'un utilisateur rendrait inutilisable le schéma qui lui était associé. De nos jours, le mappage entre l'utilisateur et le schéma est moins strict. En outre, il est considéré comme la meilleure pratique de créer un seul faux compte au propriétaire de la base de données et de tous les schémas.
Jonathan Allen