source

다른 데이터베이스를 사용하는 데이터베이스와 스키마의 차이점은 무엇입니까?

factcode 2023. 7. 28. 22:57
반응형

다른 데이터베이스를 사용하는 데이터베이스와 스키마의 차이점은 무엇입니까?

MS SQL과 MySQL의 데이터베이스 용어의 차이점은 무엇입니까?

MySQL 인스턴스에 둘 이상의 데이터베이스가 있을 수 있습니까?다른 스키마만 만들 수 있는 것 같습니다.그러나 SQL 명령은create database.

MS SQL에서 여러 개의 데이터베이스를 만들 수 있습니다. 각각 기본 스키마 dbo를 가지고 있습니까?하지만 데이터베이스에 여러 스키마가 여전히 가능합니까?

링크를 통해 MS SQL 스키마가 더 이상 사용자와 관련이 없음을 알 수 있습니다. 다음은 관련 인용문입니다.

SQL Server 2005에서 스키마 동작이 변경되었습니다.스키마는 더 이상 데이터베이스 사용자와 동일하지 않습니다. 이제 각 스키마는 작성한 데이터베이스 사용자와 독립적으로 존재하는 고유한 네임스페이스입니다.즉, 스키마는 단순히 객체의 컨테이너입니다.스키마는 모든 사용자가 소유할 수 있으며 소유권은 양도할 수 있습니다.

MySQL에서 데이터베이스와 스키마는 정확히 동일하며 명령어의 단어를 교환할 수도 있습니다. 즉, CREATE DATABASE는 CREATE SCHEMA와 동의어입니다.

MySQL은 여러 데이터베이스(스키마)를 지원하고 MS SQL은 여러 데이터베이스와 여러 스키마를 지원합니다.

일반적으로, 저는 위키백과에 대한 다음과 같은 글이 유용하다고 생각했습니다.

기사 하단에는 다음과 같은 내용이 있습니다.

SQL 사양은 "SQL 스키마"가 무엇인지 명확하게 하지만 데이터베이스마다 이를 잘못 구현합니다.이러한 혼란을 가중시키기 위해 기능이 잘못 구현될 경우 상위 데이터베이스의 기능과 중복될 수 있습니다.SQL 스키마는 데이터베이스 내의 네임스페이스일 뿐이며, 이 네임스페이스 내의 항목은 멤버 연산자 "도트"를 사용하여 주소가 지정됩니다.이것은 모든 구현에서 보편적인 것으로 보입니다.완전한(데이터베이스, 스키마 및 테이블) 정규화된 실제 쿼리는 다음과 같습니다.select * from database.schema.table

이제 문제는 스키마와 데이터베이스 둘 다 하나의 테이블을 분리하는 데 사용할 수 있습니다.foo다른 비슷한 이름의 테이블에서.foo다음은 의사 코드입니다.select * from db1.foo대.select * from db2.foo(db와 테이블 사이에 명시적인 스키마 없음)select * from [db1.]default.foo대.select * from [db1.]alternate.foo(명시적인 db 접두사 없음) 이전 MySQL 사용자가 하나의 프로젝트에 대해 여러 데이터베이스를 만들 것이라는 문제가 발생합니다.이러한 맥락에서 MySQL 데이터베이스는 Postgres-schema와 기능 면에서 유사하므로, Postgres와 같은 경우 MySQL이 가지고 있는 기성 교차 데이터베이스 기능이 부족합니다.반대로 Postgres는 크로스 테이블, 크로스 스키마를 구현하는 사양을 더 많이 적용한 다음 향후 크로스 데이터베이스 기능을 위한 여지를 남겼습니다.백그라운드에서 MySQL 별칭, 스키마 생성 및 데이터베이스 생성과 같은 데이터베이스가 있는 스키마는 아날로그입니다.

따라서 MySQL은 테이블 간 기능을 구현하고 스키마 기능을 완전히 건너뛰었으며 데이터베이스 구현에 유사한 기능을 제공했다고 할있습니다.요약하자면, Postgres는 스키마를 완전히 지원하지만 MySQL이 데이터베이스에 가지고 있는 일부 기능이 없는 반면 MySQL은 실제 스키마를 지원하려고 시도하지도 않습니다.

MS SQL에 대해 'schema'라고 말하는 것은 'owner'를 의미한다고 생각합니다.

제가 알기로는, MySQL에서 당신이 할 때

SELECT * from world.city;

이 쿼리는 월드 데이터베이스에서 테이블 도시를 선택하는 중입니다.

MsSQL에서 당신은 해야 할 것입니다.

SELECT * from world.dbo.city;

여기서 'dbo'는 테이블의 기본 소유자입니다.

작업을 보다 쉽게 수행하려면 다음을 입력하여 기본 데이터베이스를 정의

USE world
SELECT * from city;

MySQL에서는 테이블의 소유자를 선언할 수 없습니다.i. 'dbo'

MS SQL 각각 1개에서 많은 스키마를 가진 여러 데이터베이스를 지원합니다. dbo는 이전 버전과의 호환성을 위한 기본값일 뿐입니다.

언급URL : https://stackoverflow.com/questions/1869522/differences-between-database-and-schema-using-different-databases

반응형