MySQL에서 스키마 / 데이터베이스의 차이점


290

MySQL에서 스키마와 데이터베이스간에 차이가 있습니까? SQL Server에서 데이터베이스는 스키마와 관련하여 상위 수준 컨테이너입니다.

나는 읽었 Create SchemaCreate Database본질적으로 나를 스키마와 데이터베이스가 동일한 개체에 대한 다른 단어 있다고 생각하는 리드 MySQL은 같은 일을 수행합니다.


사실 나는 말할 것 schema보다 낫다 databaseMySQL은 데이터베이스의 일종으로, 그리고 몇 가지 포함 database하고, 때로는 usea는 database, 미스 대상에 많은 검색을 만든다.
theaws.blog

답변:


335

MySQL 용어집에 정의 된대로 :

MySQL에서 물리적으로 스키마데이터베이스 와 동의어입니다 . MySQL SQL 구문 SCHEMA대신 키워드를 대신 사용할 수 있습니다 ( DATABASE예 : CREATE SCHEMA대신 사용) CREATE DATABASE.

일부 다른 데이터베이스 제품은 차별화를 이끌어냅니다. 예를 들어, Oracle Database 제품에서 스키마 는 데이터베이스의 일부 (단일 사용자가 소유 한 테이블 및 기타 객체) 만 나타냅니다.


74
"일부 다른 데이터베이스 제품"은 실제로 다른 모든 데이터베이스 (어쩌면 SQLite를 제외하고는 이해할 만하다)의 완곡 어라고 생각한다.
Stefan Steiger

5
데이터베이스와 동의어를 만드는 것은 흥미 롭습니다. 저는 항상 사용자 개체와 관련이있었습니다. SQLServer에 대한 친숙한 언급은 사용자 / 스키마 개념을 분리하여 유연성을 높이고 동적 쿼리를 수행하는 몇 가지 흥미로운 방법을 허용합니다.
Gerard ONeill

"스키마"를 데이터베이스 객체 그룹으로 정의하는 데있어 성가신 것은 예전의 의미 인 en.wikipedia.org/wiki/Database_schema를 오버로드한다는 것 입니다.
Mark E. Haase

1
@mehaase는 모두 단어의 오래된 의미입니다. 오라클은 다른 데이터베이스가 본격적인 데이터베이스를 밟는 것처럼 취급했지만 SQL3 (1999) 이전의 스키마를 가졌습니다. 실제로 오라클은 다른 바이너리, 다른 실행 파일, 다른 포트 등 다른 서버 또는 서버 인스턴스라고하는 것을 "데이터베이스"라고 부릅니다.
Panagiotis Kanavos

61

데이터베이스 서버에 따라 다릅니다. MySQL상관 없습니다. 기본적으로 같은 것입니다.

Oracle, DB2및 기타 엔터프라이즈 수준의 데이터베이스 솔루션이 차별화됩니다. 보통 스키마는 테이블의 모음입니다데이터베이스 스키마의 모음입니다.


6
Microsoft SQL Server조차도이 경우 Oracle와 매우 유사 DB2합니다.
RBT

2
MySQL에서 "데이터베이스"와 "스키마"는 기본적으로 같은 것이 아닙니다. 정확히 같은 일이다 (예를 들어, create databasecreate schema동의어이다). Oracle 스키마에서 사용자와 동의어입니다 (아마도 더 정확하게 스키마는 사용자가 생성 한 모든 객체의 목록입니다). MSSQL은 세 가지를 모두 구분 (및 다른 데이터베이스에서 테이블을 액세스 할 때 결과적으로, 이름은 모두 데이터베이스와 스키마 예에 의해 자격이 있어야합니다 database1.dbo.table2)
마이크 Rosoft에게

17

로 다스 려 MySQL의 문서 ,

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


7

PostgreSQL은 데이터베이스의 하위 집합 인 스키마를 지원합니다. https://www.postgresql.org/docs/current/static/ddl-schemas.html

데이터베이스에는 하나 이상의 명명 된 스키마가 포함되며이 스키마에는 테이블이 포함됩니다. 스키마에는 데이터 유형, 함수 및 연산자를 포함하여 다른 종류의 명명 된 객체도 포함됩니다. 충돌없이 다른 스키마에서 동일한 객체 이름을 사용할 수 있습니다. 예를 들어 schema1과 myschema 모두 mytable이라는 테이블을 포함 할 수 있습니다. 데이터베이스와 달리 스키마는 엄격하게 분리되지 않습니다. 사용자는 연결된 데이터베이스의 스키마에있는 권한이있는 경우 스키마의 개체에 액세스 할 수 있습니다.

스키마는 스키마를 중첩 할 수 없다는 점을 제외하고 운영 체제 레벨의 디렉토리와 유사합니다.

겸손한 의견으로는 MySQL은 참조 데이터베이스가 아닙니다. 설명을 위해 MySQL을 인용해서는 안됩니다. MySQL은 비표준 SQL을 구현하며 때로는 지원하지 않는 기능을 요구합니다. 예를 들어 MySQL에서 CREATE 스키마는 DATABASE 만 만듭니다. 실제로 오해의 소지가있는 사용자입니다.

이런 종류의 어휘를 DBA에서는 "MySQLism"이라고합니다.


2
그리고 초보자를위한 혼란에 추가하는 "schemata"가 있습니다 :)
Zeni

@ Zeni MySQL의 스키마는 정확히 무엇입니까? 내가 찾을 수있는 것은 information_schema schemata 테이블에 대한 참조이지만 실제 의미에 대한 간결한 정의는 없습니다.
Alf47

@ Alf47 "schemata"는 "schema"라는 단어의 복수형 일뿐입니다. "스키마"도 수용 가능하지만 화려하지는 않습니다 :)
jobo3208

6

MySQL 스키마 에서 데이터베이스와 동의어입니다 . MySQL로 뛰어 들고 첫날에 스키마 라는 단어를 찾는 초보자에게는 혼란 스럽습니다 . 따라서 둘 다 동일하므로 걱정할 필요가 없습니다.

MySQL을 처음 시작하는 경우 다른 데이터베이스 시스템과 마찬가지로 작업 할 데이터베이스를 작성해야 SCHEMA 를 작성할 수 있습니다. CREATE DATABASE

일부 다른 데이터베이스 시스템 스키마에서는 데이터베이스의 일부 또는 테이블 모음을 나타내며 스키마 모음은 데이터베이스입니다.


3

예, 사람들은 MySQL과 관련하여 이러한 용어를 서로 바꿔 사용할 수 있습니다. 종종 사람들이 데이터베이스 서버 전체를 부적절하게 데이터베이스라고 언급하는 것을들을 수 있습니다.


0

예를 들어 스키마는 단일 사용자를 나타내며 서버, 데이터베이스, 스키마, 테이블 및 개체를 나타내는 순서로 컨테이너의 다른 수준입니다.

예를 들어, dbo.table_a를 업데이트하려고하고 구문이 UPDATE table.a와 같이 정규화되지 않은 경우 DBMS는 의도 한 테이블을 사용하도록 결정할 수 없습니다. 기본적으로 DBMS는 myuser.table_a를 사용합니다.


스키마 는 단일 사용자 가 소유 합니다. 기본적으로 데이터베이스에서 작성된 사용자는 dbo 스키마를 기본 스키마로 사용합니다. 정규화되지 않은 테이블 참조에 사용되는 기본 스키마는 해당 사용자에 대해 설정된 것입니다.
Gerard ONeill

이전 버전의 SQL Server에서는 사용자를 삭제하면 연결된 스키마를 사용할 수 없게됩니다. 요즘에는 사용자와 스키마 간의 매핑이 덜 엄격합니다. 또한 데이터베이스 및 모든 스키마의 소유자에게 단일 가짜 계정을 만드는 것이 가장 좋습니다.
Jonathan Allen
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.