| PostgreSQL 9.1.24 문서 | ||||
|---|---|---|---|---|
| 사설 토토 : 문서 : 9.1 : 권한 | 토토 핫 : 문서 : 9.1 : 데이터 정의 | 제5장. 데이터 정의 | 토토 핫 : 문서 : 9.1 : 상속 | |
A 포스트그레SQL데이터베이스 클러스터 하나 이상의 명명된 데이터베이스를 포함합니다. 사용자 및 사용자 그룹 전체 클러스터에서 공유되지만 다른 데이터는 공유되지 않습니다. 데이터베이스 전반에 걸쳐. 서버에 대한 특정 클라이언트 연결은 다음과 같습니다. 단일 데이터베이스의 데이터에만 액세스합니다. 연결 요청입니다.
참고:클러스터 사용자가 반드시 다음을 가질 필요는 없습니다. 클러스터의 모든 데이터베이스에 액세스할 수 있는 권한입니다. 사용자 이름을 공유한다는 것은 서로 다를 수 없음을 의미합니다. 사용자 이름은 다음과 같습니다.조두 개로 동일한 클러스터의 데이터베이스 하지만 시스템은 허용하도록 구성됨조접속 데이터베이스 중 일부만 해당됩니다.
데이터베이스에는 하나 이상의 이름이 포함되어 있습니다.토토 핫, 여기에는 테이블이 포함됩니다. 토토 핫 데이터 유형을 포함하여 다른 종류의 명명된 개체도 포함합니다. 함수, 연산자. 동일한 개체 이름을 사용할 수 있습니다. 충돌 없는 다양한 토토 핫; 예를 들어 둘 다토토 핫1그리고미토토 핫할 수 있다 이름이 지정된 테이블을 포함합니다.마이테이블. 달리 데이터베이스, 토토 핫는 엄격하게 분리되지 않습니다. 사용자가 액세스할 수 있습니다. 그가 연결된 데이터베이스의 토토 핫에 있는 객체, 그에게 그렇게 할 수 있는 특권이 있다면.
사용하려는 이유는 여러 가지가 있습니다. 토토 핫:
많은 사용자가 하나의 데이터베이스를 사용하지 않고 사용하도록 허용하려면 서로 간섭한다.
데이터베이스 개체를 논리적 그룹으로 구성하여 관리하기가 더 쉽습니다.
타사 응용 프로그램을 별도의 토토 핫에 넣을 수 있습니다 그래서 다른 객체의 이름과 충돌하지 않습니다.
토토 핫는 운영 체제의 디렉토리와 유사합니다. 단, 토토 핫는 중첩될 수 없다는 점만 제외됩니다.
토토 핫를 생성하려면 다음을 사용하십시오.토토 핫 생성명령. 줘 원하는 이름을 토토 핫로 지정하세요. 예를 들면:
토토 핫 myschema 생성;
토토 핫에서 개체를 생성하거나 액세스하려면 다음을 작성하십시오.정식 이름토토 핫 이름으로 구성됨 점으로 구분된 테이블 이름:
토토 핫.테이블
이것은 다음을 포함하여 테이블 이름이 예상되는 모든 곳에서 작동합니다. 테이블 수정 명령 및 데이터 액세스 명령 다음 장에서 논의됩니다. (간결하게 이야기하겠습니다. 테이블에만 적용되지만 다른 종류의 테이블에도 동일한 아이디어가 적용됩니다. 유형 및 함수와 같은 명명된 객체.)
사실 훨씬 더 일반적인 구문
데이터베이스.토토 핫.테이블
또한 사용할 수 있지만 현재는 이 용도로만 사용됩니다.프로 형식SQL 표준 준수. 데이터베이스 이름을 쓰는 경우 데이터베이스 이름과 동일해야 합니다. 당신이 연결되어 있는 데이터베이스입니다.
따라서 새 토토 핫에 테이블을 생성하려면 다음을 사용하십시오:
테이블 생성 myschema.mytable( ... );
토토 핫가 비어 있는 경우 삭제하려면(그 안에 있는 모든 객체는 삭제됨) 다음을 사용하세요.
DROP SCHEMA myschema;
포함된 모든 개체를 포함하는 토토 핫를 삭제하려면 다음을 사용하십시오:
DROP SCHEMA myschema CASCADE;
참조토토 핫 : 문서 : 9.1 : 토토 핫 추적에 대한 이에 대한 일반적인 메커니즘에 대한 설명입니다.
종종 다른 사람이 소유한 토토 핫를 생성하고 싶을 것입니다 (이것은 다음의 활동을 제한하는 방법 중 하나이기 때문입니다. 사용자를 잘 정의된 네임스페이스로 변경) 이에 대한 구문 다음과 같습니다:
토토 핫 생성토토 핫이름승인사용자 이름;
토토 핫 이름을 생략할 수도 있습니다. 이 경우 토토 핫는 이름은 사용자 이름과 동일합니다. 참조섹션 5.7.6용 이것이 어떻게 유용할 수 있는지.
다음으로 시작하는 토토 핫 이름pg_있습니다 시스템 목적으로 예약되어 있으며 다른 사람이 만들 수 없습니다. 사용자.
이전 섹션에서 우리는 다음 없이 테이블을 만들었습니다. 토토 핫 이름을 지정합니다. 기본적으로 이러한 테이블(및 기타 객체)은 자동으로 이름이 지정된 토토 핫에 저장됩니다."공개". 모든 새 데이터베이스에는 다음과 같은 내용이 포함됩니다. 토토 핫. 따라서 다음은 동일합니다.
테이블 제품 생성( ... );
그리고:
테이블 생성 public.products ( ... );
적격한 이름은 작성하기가 지루하며 종종 가장 좋습니다. 어쨌든 특정 토토 핫 이름을 애플리케이션에 연결하지 마십시오. 따라서 테이블은 종종 다음과 같이 참조됩니다.부적절한 이름는 다음으로 구성됩니다. 테이블 이름. 시스템은 어떤 테이블이 의미하는지 결정합니다. 다음은검색 경로은 살펴볼 토토 핫 목록입니다. 검색 경로는 원하는 경로로 간주됩니다. 일치하는 항목이 없는 경우 검색 경로에서 일치하더라도 오류가 보고됩니다. 데이터베이스의 다른 토토 핫에 테이블 이름이 있습니다.
검색 경로에 명명된 첫 번째 토토 핫는 현재 토토 핫. 검색된 첫 번째 토토 핫인 것 외에도 다음과 같은 경우 새 테이블이 생성될 토토 핫이기도 합니다.테이블 생성명령이 지정되지 않음 토토 핫 이름.
현재 검색 경로를 표시하려면 다음을 사용하십시오 명령:
검색_경로 표시;
기본 설정에서는 다음이 반환됩니다:
검색_경로 -------------- "$user",공개
첫 번째 요소는 동일한 이름을 가진 토토 핫가 있음을 지정합니다. 현재 사용자를 검색할 예정입니다. 해당 토토 핫가 없는 경우 존재하는 경우 항목이 무시됩니다. 두 번째 요소는 다음을 참조합니다. 우리가 이미 본 공개 토토 핫입니다.
존재하는 검색 경로의 첫 번째 토토 핫는 새 객체를 생성하기 위한 기본 위치입니다. 그게 이유야 기본적으로 객체는 공개 토토 핫에 생성됩니다. 언제 객체는 토토 핫 없이 다른 컨텍스트에서 참조됩니다. 제한(테이블 수정, 데이터 수정 또는 쿼리 명령) 일치하는 객체가 나타날 때까지 검색 경로를 탐색합니다. 발견되었습니다. 따라서 기본 구성에서는 모든 자격이 없는 액세스는 다시 대중만 참조할 수 있습니다. 토토 핫.
새 토토 핫를 경로에 넣기 위해 다음을 사용합니다:
search_path를 myschema,public으로 설정;
(생략함$user여기 왜냐하면 우리는 당장은 필요하지 않습니다.) 그러면 우리는 토토 핫 한정이 없는 테이블:
DROP TABLE mytable;
또한 이후미토토 핫첫 번째입니다 요소가 경로에 있으면 기본적으로 새 객체가 생성됩니다. 그것.
다음과 같이 작성할 수도 있습니다.
검색_경로를 myschema로 설정;
그러면 우리는 더 이상 공개 토토 핫에 접근할 수 없습니다. 명시적인 자격. 내용에는 특별한 것이 없습니다 기본적으로 존재한다는 점을 제외하면 공개 토토 핫입니다. 그럴 수 있다 역시 떨어졌어.
또한 참조토토 커뮤니티 PostgreSQL : 문서 : 9.1 : 시스템 정보 기능용 토토 핫 검색 경로를 조작하는 다른 방법.
검색 경로는 데이터 유형 이름에 대해 동일한 방식으로 작동합니다. 테이블 이름과 마찬가지로 함수 이름, 연산자 이름도 있습니다. 데이터 유형과 함수 이름은 다음과 같이 정확하게 한정될 수 있습니다. 테이블 이름과 동일합니다. 자격을 갖춘 글을 작성해야 하는 경우 표현식의 연산자 이름에는 특별한 조항이 있습니다. 당신은 작성해야합니다
연산자(토토 핫.연산자)
구문적 모호성을 피하기 위해 필요합니다. 예 다음과 같습니다:
3명의 연산자 선택(pg_catalog.+) 4;
실제로는 일반적으로 다음에 대한 검색 경로에 의존합니다. 연산자를 사용하면 다음과 같은 추악한 내용을 작성할 필요가 없습니다. 그거.
기본적으로 사용자는 자신이 사용하는 토토 핫의 어떤 객체에도 접근할 수 없습니다. 소유하지 마십시오. 이를 허용하려면 토토 핫 소유자가 권한을 부여해야 합니다.사용토토 핫에 대한 권한입니다. 받는 사람 사용자가 토토 핫의 개체를 사용할 수 있도록 허용합니다. 적절한 경우 추가 권한을 부여해야 할 수도 있습니다. 개체에 대한.
사용자는 다른 사람의 객체를 생성하도록 허용될 수도 있습니다 다른 사람의 토토 핫. 이를 허용하려면,만들기토토 핫에 대한 권한은 다음과 같아야 합니다. 부여. 기본적으로 모든 사람은 다음과 같습니다.만들기그리고사용토토 핫에 대한 권한공개. 이 특정 데이터베이스에 연결할 수 있는 모든 사용자를 허용합니다. 그 안에 객체를 생성하려면공개토토 핫. 이를 허용하고 싶지 않다면 이를 취소할 수 있습니다. 특권:
공개에서 공개 토토 핫에 대한 생성 취소;
(첫 번째"공개"이것은 토토 핫, 두 번째"공개"의미"모든 사용자". 첫 번째 의미에서는 는 식별자이며 두 번째 의미에서는 핵심 단어입니다. 다른 대문자 사용; 가이드라인을 기억해 보세요.섹션 4.1.1.)
추가로공개그리고 사용자가 생성한 토토 핫, 각 데이터베이스에는 다음이 포함됩니다.pg_catalog21157_21268pg_catalog항상 효과적으로 검색 경로의 일부가 됩니다. 이름이 지정되지 않은 경우 경로에 명시적으로 있으면 암시적으로 검색됩니다.이전검색 중 경로의 토토 핫. 이렇게 하면 내장 이름이 항상 찾을 수 있습니다. 그러나 명시적으로 배치할 수 있습니다.pg_catalog검색 경로의 끝에서 사용자 정의 이름이 기본 제공 이름보다 우선하는 것을 선호합니다.
에포스트그레SQL버전 7.3 이전에는 다음으로 시작하는 테이블 이름이 있습니다.pg_예약되었습니다. 이것은 더 이상 사실이 아닙니다: 당신은 원하는 경우 비시스템에서 이러한 테이블 이름을 만들 수 있습니다. 토토 핫. 그러나 이러한 이름은 계속해서 피하는 것이 가장 좋습니다. 향후 버전이 발생할 경우 충돌이 발생하지 않도록 하세요. 테이블과 동일한 이름의 시스템 테이블을 정의합니다. (와 함께 기본 검색 경로, 테이블에 대한 규정되지 않은 참조 이름은 대신 시스템 테이블로 확인됩니다.) 시스템 테이블은 다음과 같은 규칙을 계속 따릅니다. 로 시작하는 이름pg_, 그래서 그들은 한, 규정되지 않은 사용자 테이블 이름과 충돌하지 않습니다. 사용자는 다음을 피하세요.pg_접두사.
토토 핫는 다양한 방법으로 데이터를 구성하는 데 사용될 수 있습니다. 권장되는 몇 가지 사용 패턴이 있습니다. 기본 구성으로 쉽게 지원됩니다.
토토 핫를 생성하지 않으면 모든 사용자가 액세스합니다. 공개 토토 핫를 암시적으로 사용합니다. 이는 상황을 시뮬레이션한 것입니다. 토토 핫를 전혀 사용할 수 없는 경우. 이 설정은 주로 단일 사용자만 있거나 데이터베이스에 협력하는 사용자가 거의 없습니다. 이 설정은 또한 다음을 허용합니다. 토토 핫를 인식하지 않는 세계에서 원활하게 전환됩니다.
당신은 동일한 이름을 가진 각 사용자에 대해 토토 핫를 생성할 수 있습니다 그 사용자로서. 기본 검색 경로가 시작된다는 점을 기억하세요. 와 함께$user, 이는 다음으로 해결됩니다. 사용자 이름. 따라서 각 사용자가 별도의 토토 핫를 가지고 있는 경우 기본적으로 자체 토토 핫에 액세스합니다.
이 설정을 사용하면 취소할 수도 있습니다. 공개 토토 핫에 액세스하거나 완전히 삭제하므로 사용자는 실제로 자신의 토토 핫로 제한됩니다.
공유 응용 프로그램(다음에서 사용할 테이블)을 설치하려면 여러분, 제3자가 제공하는 추가 기능, 등) 별도의 토토 핫에 넣습니다. 부여하는 것을 잊지 마세요 다른 사용자가 액세스할 수 있도록 적절한 권한 그들. 그런 다음 사용자는 다음을 통해 이러한 추가 개체를 참조할 수 있습니다. 토토 핫 이름으로 이름을 한정하거나 다음을 넣을 수 있습니다. 추가 토토 핫를 검색 경로에 추가합니다. 선택하세요.
SQL 표준에서 동일한 객체의 개념은 다른 사용자가 소유하고 있는 토토 핫가 존재하지 않습니다. 더욱이, 일부 구현에서는 다음과 같은 토토 핫를 생성하는 것을 허용하지 않습니다. 소유자와 이름이 다릅니다. 사실 개념은 토토 핫와 사용자의 비율은 데이터베이스 시스템에서 거의 동일합니다. 지정된 기본 토토 핫 지원만 구현합니다. 표준. 따라서 많은 사용자는 정규화된 이름을 다음과 같이 고려합니다. 실제로는 다음과 같이 구성됩니다.사용자 이름.테이블 이름. 이렇습니다PostgreSQL다음과 같은 경우 효과적으로 작동합니다. 모든 사용자에 대해 사용자별 토토 핫를 생성합니다.
또한 a의 개념이 없습니다공개25365_25490공개토토 핫.
물론 일부 SQL 데이터베이스 시스템은 구현하지 않을 수도 있습니다 토토 핫를 전혀 사용하지 않거나 다음을 허용하여 네임스페이스 지원을 제공합니다. (아마도 제한적일 수 있음) 데이터베이스 간 액세스. 일을 해야 한다면 이러한 시스템을 사용하면 최대의 이식성이 달성됩니다. 토토 핫를 전혀 사용하지 않음.