Diferença entre o esquema / database no MySQL

Existe uma diferença entre um esquema e um database no MySQL? No SQL Server, um database é um contêiner de nível superior em relação a um esquema.

Eu li que Create Schema e Create Database faz essencialmente a mesma coisa no MySQL, o que me leva a crer que esquemas e bancos de dados são palavras diferentes para os mesmos objects.

Tal como definido no glossário MySQL :

No MySQL, fisicamente, um esquema é sinônimo de um database . Você pode replace a palavra-chave SCHEMA vez de DATABASE no MySQL syntax SQL, por exemplo, usando CREATE SCHEMA em vez de CREATE DATABASE .

Alguns outros produtos de database fazer uma distinção. Por exemplo, no produto de database Oracle, um esquema representa apenas uma parte de um database: as mesas e outros objects pertencentes a um único usuário.

Depende do servidor de database. MySQL não se importa, basicamente é a mesma coisa.

Oracle , DB2 e outras soluções de database de nível corporativo fazem uma distinção. Normalmente, um esquema é uma coleção de tabelas e um database é uma coleção de esquemas.

Referindo-se a documentação do MySQL ,

CREATE DATABASE cria um database com o nome dado. Para usar essa instrução, você precisa do privilégio CREATE para o database. CREATE SCHEMA é um sinônimo para CREATE DATABASE a partir do MySQL 5.0.2.

PostgreSQL suporta esquemas, que é um subconjunto da base de dados: https://www.postgresql.org/docs/current/static/ddl-schemas.html

Um database contém um ou mais esquemas nomeados, que por sua vez contêm tabelas. Os esquemas também contêm outros tipos de objects nomeados, incluindo tipos de dados, funções e operadores. O mesmo nome de object pode ser usado em esquemas diferentes sem conflito; Por exemplo, tanto o schema1 quanto o myschema podem conter tabelas chamadas mytable. Ao contrário de bancos de dados, esquemas não são separados rigidamente: um usuário pode acessar objects em qualquer um dos esquemas no database que está conectado, se eles têm privilégios para fazê-lo.

Os esquemas são análogos aos diretórios no nível do sistema operacional, exceto que os esquemas não podem ser nesteds.

Na minha humilde opinião, o MySQL não é um database de referência. Você nunca deve citar MySQL para uma explicação. O MySQL implementa SQL não padrão e, às vezes, apresenta resources que não suportam. Por exemplo, no MySQL, o esquema CREATE criará apenas um DATABASE. Ele é verdadeiramente enganosa usuários.

Esse tipo de vocabulário é chamado de “MySQLism” por DBAs.

Sim, as pessoas usam esses termos como sinônimos em relação ao MySQL. Embora muitas vezes você vai ouvir as pessoas referem-se inadequada para todo o servidor de database como o database.

Microsoft SQL Server por exemplo, esquemas referem-se a um único usuário e é outro nível de um recipiente no fim de indicar os servidores, database, esquemas, tabelas e objects.

Por exemplo, quando você está pretendendo atualizar dbo.table_a ea syntax não está cheio qualificado como UPDATE table.a o DBMS não pode decidir usar a tabela pretendido. Essencialmente por padrão, o DBMS irá utilizar myuser.table_a

no MySQL esquema é sinônimo de database. Sua bastante confuso para as pessoas iniciantes que saltam para MySQL e primeiro dia encontrar a palavra esquema, por isso caras nada para se preocupar, pois ambos são iguais.

Quando você está começando MySQL pela primeira vez, você precisa criar um database (como qualquer outro sistema de database) para trabalhar com para que você pode criar SCHEMA que nada mais é CREATE DATABASE

Em algum outro sistema de database, o esquema representa uma parte do database ou uma coleção de Tabelas, e a coleta de esquema é um database.