MySQL '스키마 만들기'와 '데이터베이스 만들기'-차이점이 있습니까?


104

에 피크 촬영 information_schema상기 데이터베이스와 피킹을 메타 데이터 내 애완 동물 프로젝트 중 하나에 대한, 내가 힘든 시간을 이해하는 데 어떤 차이가 사이가 (있는 경우) create schema명령과 create databaseMySQL을위한 명령.

차이점이 있습니까? 그렇지 않다면 이것은 관계형 데이터베이스에 대한 다소 일반적인 동작 패턴입니까 (Oracle과 같은 다른 데이터베이스의 경우 스키마가 데이터베이스와 동일한 수준에 있지 않고 데이터베이스에 존재한다고 들었습니다).

감사!

답변:


140

의 MySQL 설명서를 말한다 :

CREATE DATABASE는 주어진 이름으로 데이터베이스를 만듭니다. 이 명령문을 사용하려면 데이터베이스에 대한 CREATE 권한이 필요합니다. CREATE SCHEMA는 MySQL 5.0.2부터 CREATE DATABASE의 동의어입니다.

따라서이 두 명령이 동일한 작업을 수행하는 것은 정상으로 보입니다.


1
우수한! 스키마가 데이터베이스 인스턴스의 일부라고 가정했습니다. 매우 감사합니다!!
asgs

27

Mysql 문서에 따르면 : CREATE SCHEMA는 MySQL 5.0.2부터 CREATE DATABASE의 동의어입니다 .


이 모든 것은 80 년대 중반 SQL에 대한 ANSI 표준으로 거슬러 올라갑니다.

이 표준에는 "CREATE SCHEMA"명령이 있으며 테이블 및 뷰 이름에 여러 네임 스페이스를 도입하는 역할을했습니다. 모든 테이블과 뷰는 "스키마"내에서 생성되었습니다. 이 버전이 테이블과 뷰에 대한 일부 교차 스키마 액세스를 정의했는지 여부는 모르겠지만 그렇게했다고 가정합니다. AFAIR, (적어도 그 당시에는) 실제로 구현 한 제품은 없었으며 전체 개념은 실제보다 이론에 가깝습니다.

OTOH, ISTR이 버전의 표준에는 "사용자"또는 "CREATE USER"명령의 개념이 없었기 때문에 "사용자"라는 개념을 사용하는 제품이있었습니다. 뷰)에 해당하는 "스키마"를 구현합니다.

이것은 시스템이 다른 영역입니다.

행정에 관한 한, 여기에는 차이가 있기 때문에 이것은 너무 중요하지 않습니다.

애플리케이션 코드를 살펴 보는 한, 하나의 애플리케이션이 여러 네임 스페이스의 테이블에 액세스하는 경우에만 "유일하게"신경을 써야합니다. AFAIK, 모든 시스템은 "."구문을 지원하며이를 위해 이름 공간이 사용자, "스키마"또는 "데이터베이스"인지 여부는 중요하지 않습니다.



2
이 답변이 나온 원본 소스에 대한 참조를 제공하는 것이 옳을 것입니다 : lists.mysql.com/mysql/211647
informatik01

@ informatik01 Adinochestva가 원본 포스터가 아니라면.
FanaticD

SQL 서버 테이블 / 종류 / ... 데이터베이스 내에서의 그룹으로 스키마를 구현
Gudgip

7

엄밀히 말하면 데이터베이스스키마의 차이점은 MySql에 존재하지 않습니다.

그러나 SQL Server와 같은 다른 데이터베이스 엔진에서는 그렇지 않습니다. SQL 서버에서 :,

모든 테이블은 데이터베이스 스키마 라는 데이터베이스 의 개체 그룹에 속합니다 . 컨테이너 또는 네임 스페이스입니다 ( Querying Microsoft SQL Server 2012 )

기본적으로 SQL Server의 모든 테이블은 dbo 라는 기본 스키마에 속합니다 . 특정 스키마에 할당되지 않은 테이블을 쿼리 할 때 다음과 같은 작업을 수행 할 수 있습니다.

SELECT *
FROM your_table

이는 다음과 같습니다.

SELECT *
FROM dbo.your_table

이제 SQL 서버는 유사한 목적을 공유하는 테이블을 그룹화 할 수있는 다른 스키마 생성을 허용합니다. 이는 데이터베이스를 구성하는 데 도움이됩니다.

예를 들어,라는 스키마를 만들 수 있습니다 판매 와 같은 테이블, 송장 , creditorders (및 판매와 관련된 기타), 그리고 불리는 또 다른 스키마 조회 , 같은 테이블 국가 , 통화 , subscriptiontypes 모양으로 사용 (그리고 다른 테이블을 테이블).

특정 도메인에 할당 된 테이블은 테이블 이름 앞에 스키마 이름이 추가 된 상태로 SQL Server Studio Manager에 표시됩니다 (기본 dbo 스키마에 속하는 테이블과 정확히 동일 ).

SQL Server에는 특수 스키마가 있습니다. 같은 책을 인용하려면 :

몇 가지 기본 제공 데이터베이스 스키마가 있으며 삭제하거나 변경할 수 없습니다.

1) dbo , 기본 스키마.

2) 게스트 에는 게스트 사용자가 사용할 수있는 개체가 포함되어 있습니다 ( "게스트 사용자"는 SQL Server 용어의 특수 역할이며 일부 기본 및 매우 제한된 권한). 드물게 사용되는.

3) 정보 스키마 뷰에서 사용하는 INFORMATION_SCHEMA

4) sys , SQL Server 내부 전용으로 예약 됨

스키마는 그룹화만을위한 것이 아닙니다. MSDN에 설명 된대로 실제로 각 스키마에 대해 다른 사용자에게 다른 권한을 부여 할 수 있습니다 .

이렇게하면 위에서 언급 한 스키마 조회를 데이터베이스의 모든 표준 사용자가 사용할 수있는 SELECT반면 (예 : 권한 만 해당) supplierbankaccountdetails 라는 테이블 은 financial 라는 다른 스키마에 할당 될 수 있으며 사용자에게만 액세스 권한을 부여 할 수 있습니다. 그룹 accounts(예를 들어, 아이디어를 얻습니다).

마지막으로 같은 책을 다시 인용합니다.

동일한 데이터베이스 스키마테이블 스키마 가 아닙니다 . 전자는 테이블의 네임 스페이스이고 후자는 테이블 정의를 나타냅니다.



5

데이터베이스는 스키마 모음이고 스키마는 테이블 모음입니다. 그러나 MySQL에서는 같은 방식으로 사용합니다.


1

따라서 MySQL "데이터베이스"와 MySQL "스키마"사이에는 차이가 없습니다.이 이름은 테이블과 다른 DB 개체에 대한 네임 스페이스입니다.

Oracle 배경 지식이있는 사용자 : MySQL "데이터베이스"일명 MySQL "스키마"는 Oracle 스키마에 해당합니다. MySQL과 Oracle CREATE SCHEMA 명령의 차이점은 Oracle에서 CREATE SCHEMA 명령은 실제로 스키마를 생성하지 않고 테이블과 뷰로 채운다는 것입니다. 그리고 Oracle의 CREATE DATABASE 명령은 MySQL과는 매우 다른 작업을 수행합니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.