이 문서는 지원되지 않는 PostgreSQL 버전에 대한 것입니다.
당신은 다음과 같은 페이지를 보고 싶을 수도 있습니다.PostgreSQL : 문서 : 17 : 5.10. 와이즈 토토버전 또는 위에 나열된 다른 지원 버전 중 하나를 사용하세요.

5.9. 스포츠 토토 사이트

A 포스트그레SQL데이터베이스 클러스터에는 하나 이상의 명명된 데이터베이스가 포함되어 있습니다. 역할과 기타 몇 가지 개체 유형은 전체 클러스터에서 공유됩니다. 서버에 대한 클라이언트 연결은 연결 요청에 지정된 단일 데이터베이스의 데이터에만 액세스할 수 있습니다.

참고

클러스터 사용자는 클러스터의 모든 데이터베이스에 액세스할 수 있는 권한을 반드시 가질 필요는 없습니다. 역할 이름을 공유한다는 것은 이름이 다른 역할이 있을 수 없음을 의미합니다.동일한 클러스터에 있는 두 개의 데이터베이스에 있습니다. 하지만 시스템은 다음을 허용하도록 구성될 수 있습니다.일부 데이터베이스에만 액세스할 수 있습니다.

데이터베이스에는 하나 이상의 이름이 포함되어 있습니다.스포츠 토토 사이트, 여기에는 테이블이 포함됩니다. 스포츠 토토 사이트에는 데이터 유형, 함수, 연산자 등 다른 종류의 명명된 개체도 포함되어 있습니다. 동일한 객체 이름을 충돌 없이 다른 스포츠 토토 사이트에서 사용할 수 있습니다. 예를 들어 둘 다스포츠 토토 사이트1그리고미스포츠 토토 사이트이름이 지정된 테이블을 포함할 수 있습니다.마이테이블. 데이터베이스와 달리 스포츠 토토 사이트는 엄격하게 분리되지 않습니다. 사용자는 권한이 있는 경우 연결된 데이터베이스의 모든 스포츠 토토 사이트에 있는 객체에 액세스할 수 있습니다.

스포츠 토토 사이트를 사용하려는 이유는 여러 가지가 있습니다.

  • 많은 사용자가 서로 간섭하지 않고 하나의 데이터베이스를 사용할 수 있도록 허용합니다.

  • 데이터베이스 개체를 논리적 그룹으로 구성하여 관리하기 쉽게 만듭니다.

  • 타사 응용 프로그램은 다른 개체의 이름과 충돌하지 않도록 별도의 스포츠 토토 사이트에 넣을 수 있습니다.

스포츠 토토 사이트는 중첩될 수 없다는 점을 제외하면 운영 체제 수준의 디렉토리와 유사합니다.

5.9.1. 스포츠 토토 사이트 생성

스포츠 토토 사이트를 생성하려면 다음을 사용하십시오.스포츠 토토 사이트 생성명령. 스포츠 토토 사이트에 원하는 이름을 지정하십시오. 예를 들어:

스포츠 토토 사이트 myschema 생성;

스포츠 토토 사이트에서 개체를 생성하거나 액세스하려면 다음을 작성하십시오.정식 이름점으로 구분된 스포츠 토토 사이트 이름과 테이블 이름으로 구성됨:

스포츠 토토 사이트.테이블

이것은 다음 장에서 설명하는 테이블 수정 명령 및 데이터 액세스 명령을 포함하여 테이블 이름이 예상되는 모든 곳에서 작동합니다. (간결하게 하기 위해 테이블에 대해서만 이야기하지만 유형 및 함수와 같은 다른 종류의 명명된 개체에도 동일한 아이디어가 적용됩니다.)

사실, 훨씬 더 일반적인 구문

데이터베이스.스포츠 토토 사이트.테이블

또한 사용할 수 있지만 현재로서는 이것은 단지프로 형식SQL 표준을 준수합니다. 데이터베이스 이름을 작성하는 경우 연결된 데이터베이스와 동일해야 합니다.

따라서 새 스포츠 토토 사이트에 테이블을 생성하려면 다음을 사용하십시오:

테이블 생성 myschema.mytable(
 ...
);

스포츠 토토 사이트가 비어 있는 경우(그 안의 모든 객체가 삭제된 경우) 스포츠 토토 사이트를 삭제하려면 다음을 사용하세요:

DROP SCHEMA myschema;

포함된 모든 객체를 포함하는 스포츠 토토 사이트를 삭제하려면 다음을 사용하십시오:

DROP SCHEMA myschema CASCADE;

참조PostgreSQL : 문서 : 12 : 5.14.사설 토토 사이트 추적이것 뒤에 있는 일반적인 메커니즘에 대한 설명입니다.

종종 다른 사람이 소유한 스포츠 토토 사이트를 생성하고 싶을 것입니다(이는 사용자의 활동을 잘 정의된 네임스페이스로 제한하는 방법 중 하나이기 때문입니다). 이에 대한 구문은 다음과 같습니다.

스포츠 토토 사이트 생성schema_name승인사용자_이름;

스포츠 토토 사이트 이름을 생략할 수도 있습니다. 이 경우 스포츠 토토 사이트 이름은 사용자 이름과 동일합니다. 보다섹션 5.9.6이것이 어떻게 유용한지 알아보겠습니다.

다음으로 시작하는 스포츠 토토 사이트 이름pg_시스템용으로 예약되어 있으며 사용자가 만들 수 없습니다.

5.9.2. 공개 스포츠 토토 사이트

이전 섹션에서는 스포츠 토토 사이트 이름을 지정하지 않고 테이블을 생성했습니다. 기본적으로 이러한 테이블(및 기타 개체)은 자동으로 이름이 지정된 스포츠 토토 사이트에 저장됩니다.공개. 모든 새 데이터베이스에는 이러한 스포츠 토토 사이트가 포함되어 있습니다. 따라서 다음은 동일합니다.

테이블 제품 생성( ... );

그리고:

테이블 생성 public.products ( ... );

5.9.3. 스포츠 토토 사이트 검색 경로

정식 이름은 작성하기가 지루하며 어쨌든 특정 스포츠 토토 사이트 이름을 응용 프로그램에 연결하지 않는 것이 가장 좋습니다. 따라서 테이블은 종종 다음과 같이 참조됩니다.부적절한 이름, 테이블 이름만으로 구성됩니다. 시스템은 다음을 따라 어떤 테이블이 의미되는지 결정합니다.검색 경로은 살펴볼 스포츠 토토 사이트 목록입니다. 검색 경로에서 첫 번째로 일치하는 테이블이 원하는 테이블로 간주됩니다. 검색 경로에 일치하는 항목이 없으면 데이터베이스의 다른 스포츠 토토 사이트에 일치하는 테이블 이름이 있더라도 오류가 보고됩니다.

다른 스포츠 토토 사이트에서 이름이 같은 개체를 생성하는 기능은 매번 정확하게 동일한 개체를 참조하는 쿼리 작성을 복잡하게 만듭니다. 또한 사용자가 악의적으로 또는 우발적으로 다른 사용자의 쿼리 동작을 변경할 가능성이 있습니다. 쿼리에 정규화되지 않은 이름이 널리 퍼져 있고 그 사용으로 인해포스트그레SQL내부, 스포츠 토토 사이트 추가검색_경로모든 사용자가 가지고 있는 것을 효과적으로 신뢰합니다.생성해당 스포츠 토토 사이트에 대한 권한입니다. 일반 쿼리를 실행하면 검색 경로의 스포츠 토토 사이트에 개체를 생성할 수 있는 악의적인 사용자가 임의의 SQL 함수를 실행하는 것처럼 제어하고 실행할 수 있습니다.

검색 경로에 명명된 첫 번째 스포츠 토토 사이트를 현재 스포츠 토토 사이트라고 합니다. 검색된 첫 번째 스포츠 토토 사이트인 것 외에도 다음과 같은 경우 새 테이블이 생성되는 스포츠 토토 사이트이기도 합니다.테이블 생성명령이 스포츠 토토 사이트 이름을 지정하지 않습니다.

현재 검색 경로를 표시하려면 다음 명령을 사용하십시오:

검색_경로 표시;

기본 설정에서는 다음이 반환됩니다:

검색_경로
--------------
 "$user", 공개

첫 번째 요소는 현재 사용자와 동일한 이름을 가진 스포츠 토토 사이트가 검색되도록 지정합니다. 해당 스포츠 토토 사이트가 없으면 항목이 무시됩니다. 두 번째 요소는 우리가 이미 본 공개 스포츠 토토 사이트를 나타냅니다.

존재하는 검색 경로의 첫 번째 스포츠 토토 사이트는 새 개체를 생성하기 위한 기본 위치입니다. 이것이 기본적으로 객체가 공개 스포츠 토토 사이트에 생성되는 이유입니다. 스포츠 토토 사이트 한정(테이블 수정, 데이터 수정 또는 쿼리 명령) 없이 다른 컨텍스트에서 개체가 참조되는 경우 일치하는 개체를 찾을 때까지 검색 경로가 순회됩니다. 따라서 기본 구성에서 비정규 액세스는 공개 스포츠 토토 사이트만 참조할 수 있습니다.

새 스포츠 토토 사이트를 경로에 넣기 위해 다음을 사용합니다:

search_path를 myschema,public으로 설정;

(생략함$user여기서 당장 필요하지 않기 때문입니다.) 그런 다음 스포츠 토토 사이트 한정 없이 테이블에 액세스할 수 있습니다.

DROP TABLE mytable;

또한, 이후미스포츠 토토 사이트은 경로의 첫 번째 요소이며 기본적으로 새 개체가 여기에 생성됩니다.

우리는 또한 다음과 같이 작성할 수도 있었습니다:

검색_경로를 myschema로 설정;

그러면 우리는 명시적인 자격 없이는 더 이상 공개 스포츠 토토 사이트에 접근할 수 없습니다. 공개 스포츠 토토 사이트에는 기본적으로 존재한다는 점을 제외하면 특별한 것이 없습니다. 떨어뜨릴 수도 있습니다.

또한 참조사설 토토 사이트 PostgreSQL : 문서 : 12 : 9.25. 시스템 정보 기능 및 운영자스포츠 토토 사이트 검색 경로를 조작하는 다른 방법.

검색 경로는 테이블 이름과 마찬가지로 데이터 유형 이름, 함수 이름 및 연산자 이름에 대해 동일한 방식으로 작동합니다. 데이터 유형과 함수 이름은 테이블 이름과 똑같은 방식으로 한정될 수 있습니다. 표현식에 정규화된 연산자 이름을 써야 하는 경우 특별한 조항이 있습니다. 다음과 같이 써야 합니다.

연산자(스포츠 토토 사이트.연산자)

구문적 모호성을 피하기 위해 필요합니다. 예는 다음과 같습니다:

연산자 3명 선택(pg_catalog.+) 4;

실제로는 그런 추악한 내용을 작성할 필요가 없도록 일반적으로 연산자 검색 경로에 의존합니다.

5.9.4. 스포츠 토토 사이트 및 권한

기본적으로 사용자는 자신이 소유하지 않은 스포츠 토토 사이트의 개체에 액세스할 수 없습니다. 이를 허용하려면 스포츠 토토 사이트 소유자가 다음을 부여해야 합니다.사용스포츠 토토 사이트에 대한 권한. 사용자가 스포츠 토토 사이트의 개체를 사용할 수 있도록 하려면 개체에 적절하게 추가 권한을 부여해야 할 수도 있습니다.

사용자는 다른 사람의 스포츠 토토 사이트에 객체를 생성하도록 허용될 수도 있습니다. 이를 허용하려면,생성스포츠 토토 사이트에 대한 권한을 부여해야 합니다. 기본적으로 모든 사람은 다음과 같습니다.생성그리고사용스포츠 토토 사이트에 대한 권한공개. 이를 통해 특정 데이터베이스에 연결할 수 있는 모든 사용자가 해당 데이터베이스에 객체를 생성할 수 있습니다.공개스포츠 토토 사이트. 일부사용 패턴해당 특권 취소를 요청합니다:

공개에서 공개 스포츠 토토 사이트에 대한 생성 취소;

(첫 번째공개스포츠 토토 사이트, 두 번째공개의미모든 사용자. 첫 번째 의미에서는 식별자이고, 두 번째 의미에서는 핵심 단어이므로 대문자 사용이 다릅니다. 의 지침을 기억해 보세요.섹션 4.1.1.)

5.9.5. 시스템 카탈로그 스포츠 토토 사이트

추가로공개및 사용자 생성 스포츠 토토 사이트, 각 데이터베이스에는 다음이 포함됩니다.pg_catalog스포츠 토토 사이트: 시스템 테이블과 모든 내장 데이터 유형, 함수 및 연산자가 포함되어 있습니다.pg_catalog은 항상 검색 경로의 일부입니다. 경로에 명시적으로 이름이 지정되지 않으면 암시적으로 검색됩니다.이전에경로의 스포츠 토토 사이트를 검색 중입니다. 이렇게 하면 내장 이름을 항상 찾을 수 있습니다. 그러나 명시적으로 배치할 수 있습니다.pg_catalog사용자 정의 이름이 기본 제공 이름보다 우선하도록 하려면 검색 경로 끝에.

시스템 테이블 이름이 다음으로 시작하므로pg_, 향후 버전에서 테이블과 동일한 이름의 시스템 테이블을 정의하는 경우 충돌이 발생하지 않도록 이러한 이름을 피하는 것이 가장 좋습니다. (기본 검색 경로를 사용하면 테이블 이름에 대한 규정되지 않은 참조가 대신 시스템 테이블로 확인됩니다.) 시스템 테이블은 이름이 다음으로 시작하는 규칙을 계속 따릅니다.pg_, 사용자가 다음을 피하는 한 정규화되지 않은 사용자 테이블 이름과 충돌하지 않도록 합니다.pg_접두사.

5.9.6. 사용 패턴

스포츠 토토 사이트는 다양한 방법으로 데이터를 구성하는 데 사용될 수 있습니다. 에이보안 스포츠 토토 사이트 사용 패턴신뢰할 수 없는 사용자가 다른 사용자의 쿼리 동작을 변경하는 것을 방지합니다. 데이터베이스가 보안 스포츠 토토 사이트 사용 패턴을 사용하지 않는 경우 해당 데이터베이스를 안전하게 쿼리하려는 사용자는 각 세션이 시작될 때 보호 조치를 취해야 합니다. 구체적으로 다음을 설정하여 각 세션을 시작합니다.검색_경로빈 문자열로 바꾸거나 슈퍼유저가 쓸 수 없는 스포츠 토토 사이트를 제거하는 방법검색_경로. 기본 구성에서 쉽게 지원되는 몇 가지 사용 패턴이 있습니다.

  • 일반 사용자를 사용자 개인 스포츠 토토 사이트로 제한합니다. 이를 구현하려면 발행하십시오.공개에서 공개 스포츠 토토 사이트에 대한 생성 취소, 해당 사용자와 동일한 이름을 가진 각 사용자에 대한 스포츠 토토 사이트를 생성합니다. 기본 검색 경로는로 시작한다는 점을 기억하세요.$user, 이는 사용자 이름으로 확인됩니다. 따라서 각 사용자가 별도의 스포츠 토토 사이트를 가지고 있는 경우 기본적으로 자신의 스포츠 토토 사이트에 액세스합니다. 신뢰할 수 없는 사용자가 이미 로그인한 데이터베이스에서 이 패턴을 채택한 후 스포츠 토토 사이트의 개체와 같은 이름의 개체에 대한 공개 스포츠 토토 사이트 감사를 고려하세요.pg_catalog. 이 패턴은 신뢰할 수 없는 사용자가 데이터베이스 소유자이거나크리에이터롤권한, 이 경우 보안 스포츠 토토 사이트 사용 패턴이 존재하지 않습니다.

  • 수정하여 기본 검색 경로에서 공개 스포츠 토토 사이트를 제거postgresql.conf또는 발행을 통해역할 모두 설정 변경 search_path = "$user". 모든 사람은 공개 스포츠 토토 사이트에서 개체를 생성할 수 있지만 자격을 갖춘 이름만 해당 개체를 선택할 수 있습니다. 정규화된 테이블 참조는 괜찮지만 공개 스포츠 토토 사이트의 함수 호출스포츠 토토 결과 42 |_1 |04. 공개 스포츠 토토 사이트에서 함수나 확장을 생성하는 경우 대신 첫 번째 패턴을 사용하세요. 그렇지 않으면 첫 번째 패턴과 마찬가지로 신뢰할 수 없는 사용자가 데이터베이스 소유자이거나크리에이터롤특권.

  • 기본값을 유지하십시오. 모든 사용자는 공개 스포츠 토토 사이트에 암시적으로 액세스합니다. 이는 스포츠 토토 사이트를 전혀 사용할 수 없는 상황을 시뮬레이션하여 스포츠 토토 사이트를 인식하지 못하는 세계에서 원활하게 전환합니다. 그러나 이는 결코 안전한 패턴이 아닙니다. 데이터베이스에 단일 사용자 또는 상호 신뢰하는 사용자가 몇 명 있는 경우에만 허용됩니다.

어떤 패턴에서든 공유 애플리케이션(모든 사람이 사용할 테이블, 제3자가 제공하는 추가 기능 등)을 설치하려면 이를 별도의 스포츠 토토 사이트에 넣으십시오. 다른 사용자가 액세스할 수 있도록 적절한 권한을 부여하는 것을 잊지 마십시오. 그런 다음 사용자는 스포츠 토토 사이트 이름으로 이름을 한정하여 이러한 추가 개체를 참조하거나 원하는 대로 추가 스포츠 토토 사이트를 검색 경로에 넣을 수 있습니다.

5.9.7. 이식성

SQL 표준에서는 동일한 스포츠 토토 사이트의 개체가 다른 사용자에 의해 소유된다는 개념이 존재하지 않습니다. 또한 일부 구현에서는 소유자와 다른 이름을 가진 스포츠 토토 사이트를 생성하는 것을 허용하지 않습니다. 실제로 표준에 명시된 기본 스포츠 토토 사이트 지원만을 구현하는 데이터베이스 시스템에서는 스포츠 토토 사이트와 사용자의 개념이 거의 동일하다. 따라서 많은 사용자는 정규화된 이름이 실제로 다음으로 구성되어 있다고 생각합니다.사용자_이름.테이블_이름. 이렇습니다포스트그레SQL모든 사용자에 대해 사용자별 스포츠 토토 사이트를 생성하면 효과적으로 작동합니다.

또한 a의 개념이 없습니다공개30478_30573공개스포츠 토토 사이트.

물론 일부 SQL 데이터베이스 시스템은 스포츠 토토 사이트를 전혀 구현하지 않거나 데이터베이스 간 액세스를 (아마도 제한적으로) 허용하여 네임스페이스 지원을 제공할 수 있습니다. 해당 시스템으로 작업해야 하는 경우 스포츠 토토 사이트를 전혀 사용하지 않으면 이식성이 극대화됩니다.