Разница между схемой / базой данных в MySQL


290

Есть ли разница между схемой и базой данных в MySQL? В SQL Server база данных является контейнером более высокого уровня по отношению к схеме.

Я прочитал это Create Schemaи в Create Databaseсущности делаю то же самое в MySQL, что наводит меня на мысль, что схемы и базы данных - это разные слова для одних и тех же объектов.


На самом деле я бы сказал , schemaлучше database, так как MySQL является своего рода база данных, и она содержит несколько database, а иногда , что делает много поисков к цели промахов. usedatabase
theaws.blog

Ответы:


336

Как определено в Глоссарии MySQL :

В MySQL физически схема является синонимом базы данных . Вы можете заменить ключевое слово SCHEMAвместо DATABASEсинтаксиса MySQL SQL, например, используя CREATE SCHEMAвместо CREATE DATABASE.

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


74
Я думаю, что «некоторые другие продукты баз данных» - это на самом деле эвфемизм практически для любой другой базы данных (возможно, кроме SQLite, но это понятно).
Стефан Штайгер

5
Создание схемы, синонимичной с базой данных, интересно - я всегда ассоциировал ее с пользовательскими объектами. И дружеское упоминание о SQLServer, который разделял концепцию пользователя / схемы, позволяющую обеспечить гибкость и некоторые интересные способы выполнения динамических запросов.
Джерард ONeill

Досадная вещь при определении «схемы» как группировки объектов базы данных состоит в том, что она перегружает старое значение слова, например, en.wikipedia.org/wiki/Database_schema .
Марк Э. Хааз

1
@mehaase - это старое значение слова. У Oracle были схемы еще до SQL3 (1999), хотя они рассматривали их так, как другие базы данных использовали бы полноценные базы данных. Фактически Oracle называет «базой данных» то, что другие называют сервером или экземпляром сервера - разные двоичные файлы, разные исполняемые файлы, разные порты.
Панагиотис Канавос

61

Зависит от сервера базы данных. MySQLне волнует, это в основном то же самое.

Oracle, DB2, И другие решения баз данных на уровне предприятия делают различие. Обычно схема представляет собой набор таблиц, а база данных представляет собой набор схем.


6
Даже Microsoft SQL Server имеет очень похожее различие, как Oracleи DB2для этого случая.
RBT

2
В MySQL «база данных» и «схема» - это не одно и то же; это одно и то же (например, create databaseи create schemaявляются синонимами). В Oracle схема является синонимом пользователя (возможно, точнее, схема представляет собой список всех объектов, созданных под пользователем). MSSQL различает все три (и, как следствие, при доступе к таблице из другой базы данных имя должно быть квалифицировано, например, как для базы данных, так и для схемы database1.dbo.table2)
Майк

17

Ссылаясь на документацию MySql ,

CREATE DATABASE создает базу данных с заданным именем. Чтобы использовать этот оператор, вам нужна привилегия CREATE для базы данных. CREATE SCHEMA является синонимом CREATE DATABASE с MySQL 5.0.2.


7

PostgreSQL поддерживает схемы, которые являются подмножеством базы данных: https://www.postgresql.org/docs/current/static/ddl-schemas.html

База данных содержит одну или несколько именованных схем, которые в свою очередь содержат таблицы. Схемы также содержат другие виды именованных объектов, включая типы данных, функции и операторы. Одно и то же имя объекта может использоваться в разных схемах без конфликтов; например, и schema1, и myschema могут содержать таблицы с именем mytable. В отличие от баз данных, схемы жестко не разделены: пользователь может получить доступ к объектам в любой из схем в базе данных, к которой он подключен, если у него есть права для этого.

Схемы аналогичны каталогам на уровне операционной системы, за исключением того, что схемы не могут быть вложенными.

По моему скромному мнению, MySQL не является справочной базой данных. Вы никогда не должны цитировать MySQL для объяснения. MySQL реализует нестандартный SQL и иногда требует функций, которые он не поддерживает. Например, в MySQL схема CREATE будет создавать только базу данных. Это действительно вводит в заблуждение пользователей.

Этот вид словаря называется «MySQLism» администраторов баз данных.


2
А потом есть «схемы», которые добавят в замешательство новичков :)
Zeni

@ Зени, что такое схемы в MySQL? Все, что я мог найти, - это ссылки на таблицу схем information_schema, но нет точного определения того, что это на самом деле означает
Alf47

@ Alf47 "схемы" - это просто форма слова "схема" во множественном числе. "схемы" тоже приемлемы, но не так
уж и красиво

6

в MySQL схема является синонимом базы данных . Это довольно запутанно для начинающих людей, которые переходят на MySQL и в первый же день находят слово schema , поэтому парням не о чем беспокоиться, поскольку оба они одинаковы.

Когда вы запускаете MySQL в первый раз, вам нужно создать базу данных (как и любую другую систему баз данных), чтобы вы могли СОЗДАТЬ СХЕМУ, которая является ничем иным, как СОЗДАТЬ БАЗУ ДАННЫХ

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


3

Да, люди используют эти термины взаимозаменяемо в отношении MySQL. Хотя часто вы слышите, как люди неуместно называют весь сервер базы данных базой данных.


0

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

Например, когда вы намереваетесь обновить dbo.table_a, а синтаксис не полностью квалифицирован, такой как таблица UPDATE. A СУБД не может принять решение использовать предполагаемую таблицу. По умолчанию СУБД будет использовать myuser.table_a


Схемы принадлежат одному пользователю. По умолчанию пользователь, созданный в базе данных, использует схему dbo в качестве схемы по умолчанию. Схема по умолчанию, используемая для неполной ссылки на таблицу, задается для этого пользователя.
Джерард ONeill

В более старых версиях SQL Server удаление пользователя приводило к невозможности использования связанной с ним схемы. В настоящее время соответствие между пользователем и схемой менее строгое. Кроме того, рекомендуется создать единую поддельную учетную запись для владельца базы данных и всех схем.
Джонатан Аллен
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.