Dando uma olhada no information_schema
banco de dados e nos metadados de um de meus projetos favoritos, estou tendo dificuldade em entender quais (se houver) diferenças existem entre o create schema
comando e o create database
comando para MySQL.
Existem diferenças? Caso contrário, esse é um padrão de comportamento bastante típico para bancos de dados relacionais (ouvi dizer que, para outros bancos de dados, como Oracle, existe um esquema em um banco de dados, em vez de estar no mesmo nível de um banco de dados).
Obrigado!
A documentação do Mysql diz: CREATE SCHEMA é um sinônimo para CREATE DATABASE no MySQL 5.0.2.
tudo isso remonta a um padrão ANSI para SQL em meados dos anos 80.
Esse padrão tinha um comando "CREATE SCHEMA" e serviu para introduzir vários espaços de nomes para nomes de tabelas e visualizações. Todas as tabelas e visualizações foram criadas dentro de um "esquema". Não sei se essa versão definiu algum acesso de esquema cruzado a tabelas e visualizações, mas presumo que sim. AFAIR, nenhum produto (pelo menos naquela época) realmente implementava, todo aquele conceito era mais teoria do que prática.
OTOH, ISTR esta versão do padrão não tinha o conceito de um "usuário" ou um comando "CRIAR USUÁRIO", então havia produtos que usavam o conceito de um "usuário" (que então tinha seu próprio espaço de nomes para tabelas e views) para implementar seu equivalente de "esquema".
Esta é uma área em que os sistemas diferem.
No que diz respeito à administração, isso não deve importar muito, porque aqui você tem diferenças de qualquer maneira.
No que diz respeito ao código do aplicativo, você "apenas" precisa se preocupar com os casos em que um aplicativo acessa tabelas a partir de vários namespaces. AFAIK, todos os sistemas suportam uma sintaxe ".", E para isso não importa se o espaço de nomes é de um usuário, um "esquema" ou um "banco de dados".
fonte
A rigor, a diferença entre Database e Schema não existe no MySql.
No entanto, esse não é o caso em outros mecanismos de banco de dados, como o SQL Server. No servidor SQL :,
Por padrão, todas as tabelas no SQL Server pertencem a um esquema padrão chamado dbo . Ao consultar uma tabela que não foi alocada a nenhum esquema específico, você pode fazer algo como:
que é equivalente a:
Agora, o servidor SQL permite a criação de diferentes esquemas, o que lhe dá a possibilidade de agrupar tabelas que compartilham uma finalidade semelhante. Isso ajuda a organizar o banco de dados.
Por exemplo, você pode criar um esquema chamado vendas , com tabelas como faturas , ordens de crédito (e qualquer outro relacionado com vendas), e outro esquema chamado lookup , com tabelas como países , moedas , tipos de assinatura (e qualquer outra tabela usada como lookup tabela).
As tabelas que são alocadas a um domínio específico são exibidas no SQL Server Studio Manager com o nome do esquema anexado ao nome da tabela (exatamente o mesmo que as tabelas que pertencem ao esquema dbo padrão ).
Existem esquemas especiais no SQL Server. Para citar o mesmo livro:
Os esquemas não são apenas para agrupamento. Na verdade, é possível conceder permissões diferentes para cada esquema a usuários diferentes, conforme descrito no MSDN .
Fazendo isso, a pesquisa de esquema mencionada acima pode ser disponibilizada para qualquer usuário padrão no banco de dados (por exemplo,
SELECT
apenas permissões), enquanto uma tabela chamada supplybankaccountdetails pode ser alocada em um esquema diferente chamado financeiro , e dar acesso apenas aos usuários em o grupoaccounts
(apenas um exemplo, essa é a ideia).Finalmente, e citando o mesmo livro novamente:
fonte
CREATE SCHEMA é sinônimo de CREATE DATABASE. Sintaxe CREATE DATABASE
fonte
O banco de dados é uma coleção de esquemas e o esquema é uma coleção de tabelas. Mas no MySQL eles usam da mesma maneira.
fonte
Portanto, não há diferença entre o "banco de dados" do MySQL e o "esquema" do MySQL: esses são dois nomes para a mesma coisa - um namespace para tabelas e outros objetos de banco de dados.
Para pessoas com experiência em Oracle: "banco de dados" MySQL também conhecido como "esquema" MySQL corresponde ao esquema Oracle. A diferença entre os comandos CREATE SCHEMA do MySQL e do Oracle é que no Oracle o comando CREATE SCHEMA não cria realmente um esquema, mas o preenche com tabelas e visualizações. E o comando CREATE DATABASE da Oracle faz uma coisa muito diferente do que sua contraparte do MySQL.
fonte