MySQL 'create schema' и 'create database' - есть ли разница
принимая пик в information_schema база данных и пик на метаданных для одного из моих любимых проектов мне трудно понять, какие (если есть) различия существуют между и create database команда для MySQL.
есть ли различия? Если нет, то это довольно типичный шаблон поведения для реляционных баз данных (я слышал, что для других баз данных, таких как Oracle, схема существует в базе данных, а не на тот же уровень, что и база данных).
спасибо!
5 ответов:
The документация MySQL говорит:
создать базу данных создает базу данных с данным именем. Использовать это заявление, вам нужно создать привилегии для базы данных. СОЗДАВАТЬ Схема является синонимом для создания База данных по состоянию на MySQL 5.0.2.
Так что, казалось бы, нормально, что эти две инструкции делают то же самое.
документация Mysql говорит : создать схемы является синонимом для создания базы данных начиная с MySQL 5.0.2.
все это восходит к стандарту ANSI для SQL в середине 80-х годов.
в этом стандарте была команда "создать схему", и она служила для введения несколько пространств имен для имен таблиц и представлений. Все таблицы и представления были создается в рамках "схемы". Я не знаю, определена ли эта версия некоторые схемы доступ к таблицам и взгляды, но я предполагаю, что это так. AFAIR, ни один продукт (по крайней мере, тогда) действительно не реализовал его, это все концепция была скорее теорией, чем практикой.
OTOH, ISTR эта версия стандарта не имела понятия a "пользователь "или команда" создать пользователя", поэтому были продукты, которые использовали понятие "пользователь" (у которого тогда было собственное пространство имен для таблиц и представления) для реализации их эквивалента "схемы".
Это область, где системы отличаются.
Как что касается администрации, то это не должно иметь слишком большого значения, потому что здесь у вас есть различия в любом случае.
насколько вы смотрите на код приложения, вы" только " должны заботиться о случаи, когда одно приложение обращается к таблицам из разных пространств имен. Насколько мне известно, все системы поддерживают синтаксис ".", и для этого не должно иметь значения, является ли пространство имен пользователь, "схема"или" база данных".
строго говоря, разница между база данных и - схемы не существует в MySql.
однако это не относится к другим ядрам баз данных, таким как SQL Server. В SQL server:,
каждая таблица принадлежит к группе объектов в базе данных под названием схемы базы данных. Это контейнер или пространство имен (запрос Microsoft SQL Server 2012)
по умолчанию все таблицы в SQL Server принадлежат схеме по умолчанию с именем dbo. Когда вы запрашиваете таблицу, которая не была выделена для какой-либо конкретной схемы, вы можете сделать что-то вроде:
SELECT * FROM your_tableчто эквивалентно:
SELECT * FROM dbo.your_tableтеперь SQL server позволяет создавать различные схемы, что дает вам возможность группировать таблицы, которые имеют одинаковую цель. Это помогает организовать базу данных.
например, можно создать схему под названием продаж, с таблицами, такие как счета-фактуры,creditorders (и любые другие, связанные с продажами), а другая схема называется поиск, с таблицами, такие как страны,валюты,subscriptiontypes (и любая другая таблица, используемая как таблица).
таблицы, выделенные для определенного домена, отображаются в Диспетчере SQL Server Studio Manager с именем схемы, добавленным к имя таблицы (точно такое же, как и таблицы, принадлежащие по умолчанию dbo схемы).
в SQL Server Есть специальные схемы. Процитируем ту же книгу:
есть несколько встроенных схем баз данных, и они не могут быть удалены или изменены:
1) dbo, схемой по умолчанию.
2) гость содержит объекты, доступные для оценки пользователей ("гость" - это особая роль в SQL Server lingo, с некоторыми разрешениями по умолчанию и очень ограниченными разрешениями). Редко используемый.
3) базы данных information_schema, используется в представлениях информационной схемы
4) sys, зарезервировано исключительно для внутреннего использования SQL Server
- схемы не только для группировки. На самом деле можно дать разные разрешения для каждой схемы для разных пользователей, как описано MSDN.
этим кстати, схема поиск упомянутые выше могут быть доступны любому стандартному пользователю в базе данных (например
SELECTтолько разрешения), тогда как таблица называется supplierbankaccountdetails может быть выделен в другой схеме под названием финансовые, и давать доступ только пользователям в группеaccounts(просто пример, вы поняли).наконец, и снова цитировать ту же книгу:
это не то же самое Схема Базы Данных и Таблицы-Схемы. Первый является пространством имен таблицы, в то время как последний относится к определению таблицы
создать схему является синонимом для создания базы данных. создать синтаксис базы данных
база данных-это коллекция схем, а схема-это коллекция таблиц. Но в MySQL они используют его таким же образом.
Comments