MySQL "создает схему" и "создает базу данных" - есть ли разница

Принимая пик в базе данных information_schema и достигая максимума в метаданных для одного из моих домашних проектов, мне трудно понять, какие (если есть) различия между командой create schema и create database для MySQL.

Есть ли различия? Если это не так, это довольно типичная модель поведения для реляционных баз данных (я слышал, что для других баз данных, таких как Oracle, схема существует в базе данных, а не на том же уровне, что и база данных).

Спасибо!

Ответ 1

Документация MySQL

Ответ 2

Документация Mysql говорит: CREATE SCHEMA является синонимом CREATE DATABASE с MySQL 5.0.2.


все это возвращается к стандарту ANSI для SQL в середине 80-х.

В этом стандарте была команда "СОЗДАТЬ СХЕМУ", и она служила для введения несколько пространств имен для имен таблиц и представлений. Все таблицы и созданный в рамках "схемы" . Я не знаю, определена ли эта версия некоторый доступ к таблицам и представлениям по межсхеме, но я предполагаю, что это так. AFAIR, ни один продукт (по крайней мере тогда) действительно не реализовал его, понятие было более теорией, чем практикой.

OTOH, ISTR, эта версия стандарта не имела понятия "пользователь" или команда "СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ", поэтому были продукты, которые использовали понятие "пользователь" (у которого тогда было свое собственное пространство имен для таблиц и просмотров) для реализации их эквивалента "схемы" .

Это область, где системы отличаются.

Что касается администрации, это не должно иметь большого значения, потому что здесь у вас есть различия.

Насколько вы смотрите на код приложения, вам нужно только "заботиться" случаи, когда одно приложение обращается к таблицам из нескольких пространств имен. AFAIK, все системы поддерживают синтаксис ".", и для этого не имеет значения, является ли пространство имен пространством имен пользователя, "схемы" или "базы данных".

Ответ 3

Строго говоря, разница между Database и Schema существует в MySql.

Однако это не относится к другим механизмам базы данных, таким как SQL Server. В SQL-сервере :,

Каждая таблица относится к группировке объектов в базе данных, называемой схемой базы данных. Это контейнер или пространство имен (запрос Microsoft SQL Server 2012)

По умолчанию все таблицы в SQL Server относятся к схеме по умолчанию, называемой dbo. Когда вы запрашиваете таблицу, которая не была назначена какой-либо конкретной схеме, вы можете сделать что-то вроде:

SELECT *
FROM your_table

что эквивалентно:

SELECT *
FROM dbo.your_table

Теперь SQL-сервер позволяет создавать различные схемы, что дает возможность группировать таблицы, которые имеют сходную цель. Это помогает организовать базу данных.

Например, вы можете создать схему, называемую sales, с таблицами, такими как счета-фактуры, кредитные организации (и любые другие, связанные с продажами), и другая схема, называемая поиском, с такими таблицами, как страны, валюты, типы подписки (и любая другая таблица, используемая как внешний вид вверх).

Таблицы, выделенные для определенного домена, отображаются в SQL Server Studio Manager с именем схемы, предшествующим имени таблицы (точно так же, как и таблицы, которые относятся к схеме dbo по умолчанию).

В SQL Server есть специальные схемы. Процитировать одну и ту же книгу:

Существует несколько встроенных схем базы данных, и их нельзя отбросить или изменить:

1) dbo, схема по умолчанию.

2) гость содержит объекты, доступные пользователю гостя ("гостевой пользователь" - особая роль в SQL Server lingo, с некоторыми стандартными и очень ограниченными правами). Редко используемый.

3) INFORMATION_SCHEMA, используемые представлениями информационной схемы

4) sys, зарезервированный для внутреннего использования SQL Server исключительно

Схемы не только для группировки. На самом деле можно предоставить разные разрешения для каждой схемы для разных пользователей, как описано в MSDN.

Делая таким образом, что поиск схемы упоминалось выше, может быть доступна для любого обычного пользователя в базе данных (например, SELECT, только права доступа), в то время как таблица под названием supplierbankaccountdetails могут быть выделены в другой схеме называется финансовой, и дать доступ только для пользователей в групповых accounts (просто пример, вы получаете идею).

Наконец, снова цитируя ту же книгу:

Это не та же схема базы данных и схема таблиц. Первый - это пространство имен таблицы, тогда как последнее относится к определению таблицы

Ответ 5

База данных представляет собой набор схем и схем, представляющих собой набор таблиц. Но в MySQL они используют его одинаково.

Ответ 6

Таким образом, нет никакой разницы между MySQL "базой данных" и "схемой" MySQL: это два имени для одной и той же вещи - пространство имен для таблиц и других объектов БД.

Для людей с базой Oracle: MySQL "база данных", так называемая "схема" MySQL, соответствует схеме Oracle. Разница между командами MySQL и Oracle CREATE SCHEMA заключается в том, что в Oracle команда CREATE SCHEMA фактически не создает схему, а заполняет ее таблицами и представлениями. И команда Oracle CREATE DATABASE делает совсем другую вещь, чем ее аналог MySQL.