답변:
CREATE DATABASE는 주어진 이름으로 데이터베이스를 만듭니다. 이 명령문을 사용하려면 데이터베이스에 대한 CREATE 권한이 필요합니다. CREATE SCHEMA는 MySQL 5.0.2부터 CREATE DATABASE의 동의어입니다.
따라서이 두 명령이 동일한 작업을 수행하는 것은 정상으로 보입니다.
Mysql 문서에 따르면 : CREATE SCHEMA는 MySQL 5.0.2부터 CREATE DATABASE의 동의어입니다 .
이 모든 것은 80 년대 중반 SQL에 대한 ANSI 표준으로 거슬러 올라갑니다.
이 표준에는 "CREATE SCHEMA"명령이 있으며 테이블 및 뷰 이름에 여러 네임 스페이스를 도입하는 역할을했습니다. 모든 테이블과 뷰는 "스키마"내에서 생성되었습니다. 이 버전이 테이블과 뷰에 대한 일부 교차 스키마 액세스를 정의했는지 여부는 모르겠지만 그렇게했다고 가정합니다. AFAIR, (적어도 그 당시에는) 실제로 구현 한 제품은 없었으며 전체 개념은 실제보다 이론에 가깝습니다.
OTOH, ISTR이 버전의 표준에는 "사용자"또는 "CREATE USER"명령의 개념이 없었기 때문에 "사용자"라는 개념을 사용하는 제품이있었습니다. 뷰)에 해당하는 "스키마"를 구현합니다.
이것은 시스템이 다른 영역입니다.
행정에 관한 한, 여기에는 차이가 있기 때문에 이것은 너무 중요하지 않습니다.
애플리케이션 코드를 살펴 보는 한, 하나의 애플리케이션이 여러 네임 스페이스의 테이블에 액세스하는 경우에만 "유일하게"신경을 써야합니다. AFAIK, 모든 시스템은 "."구문을 지원하며이를 위해 이름 공간이 사용자, "스키마"또는 "데이터베이스"인지 여부는 중요하지 않습니다.
엄밀히 말하면 데이터베이스 와 스키마의 차이점은 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
(예를 들어, 아이디어를 얻습니다).
마지막으로 같은 책을 다시 인용합니다.
동일한 데이터베이스 스키마 및 테이블 스키마 가 아닙니다 . 전자는 테이블의 네임 스페이스이고 후자는 테이블 정의를 나타냅니다.
CREATE SCHEMA는 CREATE DATABASE의 동의어입니다. CREATE DATABASE 구문
따라서 MySQL "데이터베이스"와 MySQL "스키마"사이에는 차이가 없습니다.이 이름은 테이블과 다른 DB 개체에 대한 네임 스페이스입니다.
Oracle 배경 지식이있는 사용자 : MySQL "데이터베이스"일명 MySQL "스키마"는 Oracle 스키마에 해당합니다. MySQL과 Oracle CREATE SCHEMA 명령의 차이점은 Oracle에서 CREATE SCHEMA 명령은 실제로 스키마를 생성하지 않고 테이블과 뷰로 채운다는 것입니다. 그리고 Oracle의 CREATE DATABASE 명령은 MySQL과는 매우 다른 작업을 수행합니다.