PostgreSQL - 스키마: 초보자 가이드
안녕하세요, 미래의 데이터베이스 마법사 여러분! 오늘 우리는 PostgreSQL 스키마의 세계로 흥미로운 여정을 떠납니다. 초보자라고 걱정하지 마세요 - 저는 당신의 친절한 가이드로, 단계별로 안내해 드릴게요. 이 튜토리얼의 끝을 맺을 때, 당신은 프로처럼 스키마를 생성하고 관리할 수 있을 거예요!
스키마는 무엇인가요?
들어가기 전에 스키마가 무엇인지 이해해 보겠습니다. 스키마를 데이터베이스의 컨테이너나 폴더로 생각해 보세요. 책상의 여러 칸을 가지고 있는 것처럼 - 각 칸(스키마)은 여러 항목(테이블, 뷰, 함수 등)을 포함할 수 있습니다. 이러한 조직화는 데이터베이스를 체계적으로 유지하고 대규모 프로젝트를 관리하는 데 도움이 됩니다.
스키마를 사용하는 이유는 무엇인가요?
- 조직화: 스키마는 관련 데이터베이스 오브젝트를 함께 그룹화하는 데 도움을 줍니다.
- 보안: 스키마 수준에서 권한을 설정할 수 있습니다.
- 네임스페이스: 스키마는 다른 문맥에서 동일한 오브젝트 이름을 사용할 수 있게 합니다.
이제 PostgreSQL 스키마에 손을 대고 실제로 경험해 보겠습니다!
스키마 생성
스키마 생성은 "Hello, World!"라고 말하는 것만큼 간단합니다. 다음과 같이 합니다:
CREATE SCHEMA my_first_schema;
축하합니다! 지금 당신은 첫 번째 스키마를 생성했습니다. 쉬운 줄 알죠? 그런데 특정 사용자에게 스키마를 생성하고 싶다면 어떻게 할까요?
CREATE SCHEMA IF NOT EXISTS user_schema AUTHORIZATION your_username;
이 명령은 user_schema
라는 스키마를 생성하고 소유자를 your_username
으로 설정합니다. IF NOT EXISTS
조건은 안전망과 같아 - 스키마가 이미 존재하면 오류를 방지합니다.
스키마에서 테이블 작업
이제 우리의 스키마에 테이블을 채우겠습니다!
스키마에서 테이블 생성
다음은 특정 스키마에서 테이블을 생성하는 문법입니다:
CREATE TABLE my_first_schema.employees (
id SERIAL PRIMARY KEY,
name VARCHAR(100),
position VARCHAR(100),
hire_date DATE
);
이를 간단히 설명하자면:
-
my_first_schema.employees
: 이는 우리가my_first_schema
에employees
테이블을 생성하고 있음을 나타냅니다. - 나머지는 id, name, position, hire_date 열의 테이블 구조를 정의합니다.
테이블에 데이터 삽입
이제 새 테이블에 데이터를 추가해 보겠습니다:
INSERT INTO my_first_schema.employees (name, position, hire_date)
VALUES ('John Doe', 'Software Engineer', '2023-01-15'),
('Jane Smith', 'Project Manager', '2022-11-01');
이 명령은 테이블에 두 명의 직원을 추가합니다. 스키마 이름이 테이블 이름 앞에 오는 것에 주목하세요.
스키마에서 테이블 질의
테이블에서 데이터를检索하려면 SELECT 문을 사용합니다:
SELECT * FROM my_first_schema.employees;
이렇게 하면 추가한 모든 직원을 표시합니다.
스키마 검색 경로 관리
PostgreSQL은 비 qualifed 오브젝트 이름을 사용할 때 어떤 스키마를 검색할지 결정하는 검색 경로를 사용합니다. 현재 검색 경로를 보려면 다음과 같이 합니다:
SHOW search_path;
새 스키마를 검색 경로에 추가하려면 다음과 같이 합니다:
SET search_path TO my_first_schema, public;
이제 스키마 접두사 없이 employees
테이블을 참조할 수 있습니다:
SELECT * FROM employees;
스키마 제거
스키마가 더 이상 필요하지 않을 때 제거할 수 있습니다. 하지만 조심하세요 - 이 작업은 한 번에 전체 칸을 비우는 것과 같습니다!
DROP SCHEMA my_first_schema;
오호! 스키마가 비어 있지 않으면 PostgreSQL은 불만을 제기합니다. 스키마와 모든 내용을 강제로 삭제하려면 다음과 같이 합니다:
DROP SCHEMA my_first_schema CASCADE;
CASCADE
옵션은 "전부 지우기" 버튼과 같아 - 신중하게 사용하세요!
스키마 최선 실천
- 의미 있는 이름 사용: 스키마 이름은 그 목적을 반영하도록 선택하세요.
- 정리 유지: 관련 오브젝트를 동일한 스키마에 그룹화하세요.
- 버전 관리에 사용: 애플리케이션의 다른 버전에 대해 별도의 스키마를 생성하세요.
- 적절한 권한 설정: 스키마를 통해 고급 보안을 구현하세요.
일반 스키마 관련 함수
다음은 PostgreSQL에서 유용한 몇 가지 스키마 관련 함수입니다:
함수 | 설명 |
---|---|
current_schema() |
현재 스키마 반환 |
schema_name(integer) |
주어진 OID의 스키마 이름 반환 |
to_regnamespace(text) |
스키마 이름을 OID로 변환 |
결론
그렇습니다, 친구들이여! 우리는 PostgreSQL 스키마의 세계를 여행하며, 생성에서 삭제에 이르기까지, 테이블과 검색 경로를 중간에 멈춰서서 경험했습니다. 스키마는 데이터베이스를 체계적으로 유지하고 보안을 강화하는 데 큰 도움이 됩니다.
PostgreSQL 여정을 계속하면서, 스키마는 당신의 데이터베이스 도구 키트에서 필수적인 도구가 될 것입니다. 스키마는 데이터베이스 세계의 마리 콘도와 같아 - 모든 것을 정리하고 데이터 관리에 기쁨을 주는 존재입니다.
계속 연습하고, 호기심을 유지하면, 당신은 곧 프로처럼 데이터베이스 설계를 짜는 것을 발견할 것입니다. 행복하게 코딩하시고, 질의가 항상 빠르게 실행되고 데이터가 정리되기를 바랍니다!
Credits: Image by storyset