MySQL '스키마 만들기'와 '데이터베이스 만들기'-차이점이 있습니까?
에 피크 촬영 information_schema
상기 데이터베이스와 피킹을 메타 데이터 내 애완 동물 프로젝트 중 하나에 대한, 내가 힘든 시간을 이해하는 데 어떤 차이가 사이가 (있는 경우) create schema
명령과 create database
MySQL을위한 명령.
차이점이 있습니까? 그렇지 않다면 이것은 관계형 데이터베이스에 대한 다소 일반적인 동작 패턴입니까 (Oracle과 같은 다른 데이터베이스의 경우 스키마가 데이터베이스와 동일한 수준에 있지 않고 데이터베이스에 존재한다고 들었습니다).
감사!
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 구문
Database is a collection of schemas and schema is a collection of tables. But in MySQL they use it the same way.
So, there is no difference between MySQL "database" and MySQL "schema": these are two names for the same thing - a namespace for tables and other DB objects.
For people with Oracle background: MySQL "database" a.k.a. MySQL "schema" corresponds to Oracle schema. The difference between MySQL and Oracle CREATE SCHEMA commands is that in Oracle the CREATE SCHEMA command does not actually create a schema but rather populates it with tables and views. And Oracle's CREATE DATABASE command does a very different thing than its MySQL counterpart.
'Programing' 카테고리의 다른 글
형식 문자열, 선행 0이있는 정수 (0) | 2020.08.23 |
---|---|
런타임에 TextView의 스타일을 변경하는 방법 (0) | 2020.08.23 |
JavaScript에서 ( "foo"=== new String ( "foo"))가 false로 평가되는 이유는 무엇입니까? (0) | 2020.08.22 |
웹 사이트를위한 자동 Retina 이미지 (0) | 2020.08.22 |
휴리스틱과 알고리즘의 차이점은 무엇입니까? (0) | 2020.08.22 |