Заглянув в information_schema
базу данных и изучив метаданные одного из моих любимых проектов, мне трудно понять, какие (если есть) различия между create schema
командой и create database
командой для MySQL.
Есть ли отличия? Если нет, то это довольно типичный образец поведения для реляционных баз данных (я слышал, что для других баз данных, таких как Oracle, схема существует в базе данных, а не на том же уровне, что и база данных).
Спасибо!
В документации Mysql говорится: CREATE SCHEMA является синонимом CREATE DATABASE в MySQL 5.0.2.
все это восходит к стандарту ANSI для SQL в середине 80-х годов.
В этом стандарте была команда «CREATE SCHEMA», которая служила для введения нескольких пространств имен для имен таблиц и представлений. Все таблицы и представления были созданы в рамках «схемы». Я не знаю, определяла ли эта версия некоторый доступ к таблицам и представлениям между схемами, но я предполагаю, что да. AFAIR, ни один продукт (по крайней мере, тогда) действительно не реализовал это, вся эта концепция была больше теорией, чем практикой.
OTOH, ISTR в этой версии стандарта не было концепции «пользователя» или команды «СОЗДАТЬ ПОЛЬЗОВАТЕЛЯ», поэтому были продукты, в которых использовалась концепция «пользователя» (у которого тогда было собственное пространство имен для таблиц и views) для реализации своего эквивалента «схемы».
Это область, в которой системы различаются.
Что касается администрирования, это не должно иметь большого значения, потому что здесь у вас все равно есть отличия.
Когда вы смотрите на код приложения, вы должны «только» заботиться о случаях, когда одно приложение обращается к таблицам из нескольких пространств имен. AFAIK, все системы поддерживают синтаксис «.», И для этого не должно иметь значения, принадлежит ли пространство имен пользователю, «схеме» или «базе данных».
источник
Строго говоря, разница между базой данных и схемами является inexisting в MySql.
Однако этого не происходит в других механизмах баз данных, таких как SQL Server. На сервере SQL :,
По умолчанию все таблицы в SQL Server принадлежат схеме по умолчанию, называемой dbo . Когда вы запрашиваете таблицу, которая не была выделена какой-либо конкретной схеме, вы можете сделать что-то вроде:
что эквивалентно:
Теперь SQL-сервер позволяет создавать разные схемы, что дает вам возможность группировать таблицы, имеющие схожую цель. Это помогает организовать базу данных.
Например, вы можете создать схему под названием продажи с таблицами, такими как счета-фактуры , кредиторы (и любые другие, связанные с продажами), и другую схему, называемую поиском , с такими таблицами, как страны , валюты , типы подписок (и любые другие таблицы, используемые в качестве внешнего вида). таблицу вверх).
Таблицы, выделенные определенному домену, отображаются в SQL Server Studio Manager с именем схемы, добавленным к имени таблицы (точно так же, как таблицы, принадлежащие схеме dbo по умолчанию ).
В SQL Server есть специальные схемы. Процитируем ту же книгу:
Схемы предназначены не только для группировки. На самом деле можно предоставить разные разрешения для каждой схемы разным пользователям, как описано в MSDN .
Таким образом, упомянутый выше поиск схемы может быть доступен для любого стандартного пользователя в базе данных (например,
SELECT
только с разрешениями), тогда как таблица с именем supplierbankaccountdetails может быть выделена в другой схеме, называемой финансовой , и предоставлять доступ только пользователям в группаaccounts
(просто пример, вы поняли).Наконец, снова процитирую ту же книгу:
источник
CREATE SCHEMA является синонимом CREATE DATABASE. CREATE DATABASE Синтаксис
источник
База данных - это набор схем, а схема - это набор таблиц. Но в MySQL они используют это точно так же.
источник
Итак, нет никакой разницы между «базой данных» MySQL и «схемой» MySQL: это два имени для одного и того же - пространства имен для таблиц и других объектов БД.
Для людей с опытом работы с Oracle: MySQL «база данных», также известная как «схема» MySQL, соответствует схеме Oracle. Разница между командами MySQL и Oracle CREATE SCHEMA заключается в том, что в Oracle команда CREATE SCHEMA фактически не создает схему, а, скорее, заполняет ее таблицами и представлениями. И команда Oracle CREATE DATABASE делает совсем другие вещи, чем ее аналог в MySQL.
источник