Различия между Базой данных и Схемой с помощью различных баз данных?

Перезапись файла на месте часто делается путем сохранения старой копии с измененным именем. Люди Unix добавляют ~ для маркировки старого. Люди Windows делают все виды вещей - добавляют .bak или .old - или переименовывают файл полностью или помещают ~ на переднюю сторону имени.

import shutil
shutil.move( afile, afile+"~" )

destination= open( aFile, "w" )
source= open( aFile+"~", "r" )
for line in source:
    destination.write( line )
    if <some condition>:
        destination.write( >some additional line> + "\n" )
source.close()
destination.close()

Вместо shutil, можно использовать следующее.

import os
os.rename( aFile, aFile+"~" )
42
задан Ry- 25 May 2013 в 14:06
поделиться

4 ответа

Из этой ссылки мы видим, что схемы MS SQL больше не привязаны к пользователям, вот соответствующая цитата:

Поведение схем изменилось в SQL Server 2005. Схемы больше не эквивалент пользователей базы данных; каждый схема теперь является отдельным пространством имен который существует независимо от пользователь базы данных, который ее создал. В других словами, схема - это просто контейнер объектов. Схемой может владеть любой пользователь, и его право собственности переносимый.

В MySQL базы данных и схемы - это одно и то же, вы даже можете заменять слова в командах, т.е. CREATE DATABASE имеет синоним CREATE SCHEMA.

MySQL поддерживает несколько баз данных (схем), а MS SQL поддерживает несколько баз данных и несколько схем.

69
ответ дан 26 November 2019 в 23:29
поделиться

Я считаю, что, говоря «схема» для MS SQL, вы имеете в виду «владелец».

Насколько я понимаю, в MySQL, когда вы выполняете

SELECT * from world.city;

Этот запрос выбирает из мировой базы данных таблица city.

В MsSQL вам нужно будет сделать

SELECT * from world.dbo.city;

Где dbo является владельцем таблицы по умолчанию.

Чтобы упростить жизнь, определите базу данных по умолчанию, набрав

USE world
SELECT * from city;

В MySQL нет возможности объявить владельца таблицы. т.е. 'dbo'.

Чтобы упростить жизнь, определите базу данных по умолчанию, набрав

USE world
SELECT * from city;

В MySQL нет способа объявить владельца таблицы. т.е. 'dbo'.

Чтобы упростить жизнь, определите базу данных по умолчанию, набрав

USE world
SELECT * from city;

В MySQL нет способа объявить владельца таблицы. т.е. 'dbo'.

4
ответ дан 26 November 2019 в 23:29
поделиться

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

2
ответ дан 26 November 2019 в 23:29
поделиться

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

Внизу статьи следующее:

Спецификация SQL делает понять, что такое «схема SQL»; однако в разных базах это реализовано неправильно. Чтобы усугубить эту путаницу, при неправильной реализации функциональность может перекрываться с функциональностью родительской базы данных. Схема SQL - это просто пространство имен в базе данных, вещи в этом пространстве имен адресуются с помощью точки оператора-члена ".". Это кажется универсальным среди всех реализаций. Истинный полностью квалифицированный запрос (база данных, схема и таблица) представлен как таковой: select * from database.schema.table

Теперь проблема, как схему, так и базу данных, можно использовать для изоляции одной таблицы , foo из другой таблицы с похожим именем foo . Ниже приведен псевдокод: выберите * из db1.foo vs. выберите * из db2.foo (без явной схемы между db и таблицей) выберите * из [db1. ] default.foo vs. select * from [db1.] alternate.foo (без явного префикса db) Возникающая проблема состоит в том, что бывшие пользователи MySQL будут создавать несколько баз данных для одного проекта. В этом контексте базы данных MySQL аналогичны по функциям схемам Postgres, поскольку в Postgres отсутствуют стандартные функциональные возможности кросс-баз данных, которые есть в MySQL. Наоборот, Postgres применил больше спецификаций, реализующих кросс-таблицу, кросс-схему, а затем оставил место для будущей кросс-базы данных. Скрытые псевдонимы MySQL, схема с базой данных, такая, что создают схему, и создание базы данных являются аналогами.

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

30
ответ дан 26 November 2019 в 23:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: