소개
이 랩에서는 PostgreSQL 을 사용하여 데이터베이스 관리의 기본 사항을 배우게 됩니다. 이 랩은 새로운 데이터베이스 생성, 기존 데이터베이스 목록 및 연결, 더 이상 필요하지 않은 데이터베이스 제거 등 데이터베이스 관리에 필요한 필수 작업을 다룹니다.
먼저 createdb 명령을 사용하여 새로운 데이터베이스를 생성하고 psql 명령을 통해 생성 여부를 확인합니다. 그런 다음, 사용 가능한 모든 데이터베이스를 나열하고 특정 데이터베이스에 연결하는 방법을 배우게 됩니다. 마지막으로, 데이터베이스를 삭제하고 데이터베이스 메타데이터를 보는 방법을 살펴봅니다. 이 랩은 PostgreSQL 에서 기본적인 데이터베이스 관리 작업을 실습 방식으로 소개합니다.
새로운 데이터베이스 생성
이 단계에서는 PostgreSQL 에서 새로운 데이터베이스를 생성하는 방법을 배우게 됩니다. 데이터베이스를 생성하는 것은 데이터를 구성하고 저장하는 첫 번째 단계입니다.
시작하기 전에 데이터베이스가 무엇인지 이해해 봅시다. 데이터베이스는 쉽게 접근, 관리 및 업데이트할 수 있도록 구성된 구조화된 데이터 모음입니다. PostgreSQL 에서 데이터베이스는 테이블, 뷰 및 기타 데이터베이스 객체를 위한 컨테이너입니다.
새로운 데이터베이스를 생성하려면 createdb 명령을 사용합니다. 이 명령은 SQL 명령 CREATE DATABASE의 래퍼입니다.
터미널 열기: 아직 열려 있지 않은 경우 터미널 창을 시작합니다.
새로운 데이터베이스 생성:
createdb명령 다음에 데이터베이스에 지정하려는 이름을 입력합니다. 예를 들어,mydatabase라는 데이터베이스를 생성하려면 다음 명령을 실행합니다.createdb mydatabase이 명령은
mydatabase라는 새로운 데이터베이스를 생성합니다. 명령이 성공하면 아무런 출력도 표시되지 않습니다.데이터베이스 생성 확인: 데이터베이스가 생성되었는지 확인하려면
psql명령을 사용하여 모든 데이터베이스를 나열할 수 있습니다. 먼저, 기본postgres데이터베이스에 연결합니다.psql -d postgrespostgres=#프롬프트가 표시됩니다.데이터베이스 목록:
postgres=#프롬프트에서 다음 SQL 명령을 실행하여 모든 데이터베이스를 나열합니다.\l
이 명령은 방금 생성한 데이터베이스 (
mydatabase) 를 포함한 데이터베이스 목록을 표시합니다. 다음과 유사한 출력을 볼 수 있습니다.List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- mydatabase| labex | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows)mydatabase가 목록에 있는지 확인합니다.psql 종료:
psql프롬프트를 종료하려면 다음을 입력합니다.\q그리고 Enter 키를 누릅니다. 일반 터미널 프롬프트로 돌아갑니다.
이제 PostgreSQL 에서 새로운 데이터베이스를 성공적으로 생성했습니다.
데이터베이스 목록 및 연결
이 단계에서는 psql 명령줄 도구를 사용하여 사용 가능한 데이터베이스를 나열하고 특정 데이터베이스에 연결하는 방법을 배우게 됩니다.
터미널 열기: 아직 열려 있지 않은 경우 터미널 창을 시작합니다.
사용 가능한 데이터베이스 목록: 모든 데이터베이스를 나열하려면
-l옵션 (소문자 'L') 과 함께psql명령을 사용할 수 있습니다. 이 옵션은 서버의 모든 데이터베이스를 나열합니다. 연결할 데이터베이스를 지정하지 않았으므로psql은 현재 사용자 이름을 사용하여 연결을 시도합니다.psql -l이 명령은 데이터베이스 목록과 소유자, 인코딩 및 기타 정보를 표시합니다. 다음과 유사한 출력을 볼 수 있습니다.
List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- mydatabase| labex | UTF8 | en_US.UTF-8 | en_US.UTF-8 | postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (4 rows)이 출력은 데이터베이스 이름, 소유자 및 기타 세부 정보를 보여줍니다. 이전 단계에서 생성한
mydatabase데이터베이스를 볼 수 있습니다.특정 데이터베이스에 연결: 특정 데이터베이스에 연결하려면
-d옵션과 함께psql명령을 사용하고 그 뒤에 데이터베이스 이름을 입력합니다. 예를 들어,mydatabase데이터베이스에 연결하려면 다음 명령을 실행합니다.psql -d mydatabase연결에 성공하면
mydatabase=#프롬프트가 표시됩니다. 이는 현재mydatabase데이터베이스에 연결되어 있음을 나타냅니다.연결 확인: 올바른 데이터베이스에 연결되었는지 확인하려면 다음과 같은 간단한 SQL 명령을 실행할 수 있습니다.
SELECT version();
이 명령은 연결된 PostgreSQL 서버의 버전을 표시합니다. 출력은 다음과 유사합니다.
version ---------------------------------------------------------------------------------------------------------------- PostgreSQL 14.7 (Debian 14.7-1.pgdg110+1) on x86_64-pc-linux-gnu, compiled by gcc (Debian 10.2.1-6) 10.2.1 20210110, 64-bit (1 row)psql 종료:
psql프롬프트를 종료하려면 다음을 입력합니다.\q그리고 Enter 키를 누릅니다. 일반 터미널 프롬프트로 돌아갑니다.
이제 psql을 사용하여 사용 가능한 데이터베이스를 성공적으로 나열하고 특정 데이터베이스에 연결했습니다.
데이터베이스 삭제
이 단계에서는 PostgreSQL 에서 데이터베이스를 삭제하는 방법을 배우게 됩니다. 데이터베이스 삭제는 영구적인 작업이므로 이 명령을 사용할 때 주의하는 것이 중요합니다. 데이터베이스 내의 모든 데이터가 손실됩니다.
터미널 열기: 아직 열려 있지 않은 경우 터미널 창을 시작합니다.
데이터베이스 삭제:
dropdb명령 다음에 삭제하려는 데이터베이스의 이름을 입력합니다. 예를 들어,mydatabase데이터베이스를 삭제하려면 다음 명령을 실행합니다.dropdb mydatabase이 명령은
mydatabase데이터베이스를 삭제합니다. 명령이 성공하면 아무런 출력도 표시되지 않습니다.중요: 데이터베이스를 삭제하기 전에 아무도 해당 데이터베이스에 연결되어 있지 않은지 확인하십시오. 활성 연결이 있는 경우
dropdb명령이 실패할 수 있습니다.데이터베이스 삭제 확인: 데이터베이스가 삭제되었는지 확인하려면
psql명령을 사용하여 모든 데이터베이스를 나열할 수 있습니다. 먼저, 기본postgres데이터베이스에 연결합니다.psql -d postgres
postgres=#프롬프트가 표시됩니다.데이터베이스 목록:
postgres=#프롬프트에서 다음 SQL 명령을 실행하여 모든 데이터베이스를 나열합니다.\l이 명령은 데이터베이스 목록을 표시합니다.
mydatabase가 더 이상 목록에 없는지 확인합니다.List of databases Name | Owner | Encoding | Collate | Ctype | Access privileges -----------+----------+----------+-------------+-------------+----------------------- postgres | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | template0 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres template1 | postgres | UTF8 | en_US.UTF-8 | en_US.UTF-8 | =c/postgres + | | | | | postgres=CTc/postgres (3 rows)mydatabase가 나열되지 않으면 성공적으로 삭제된 것입니다.psql 종료:
psql프롬프트를 종료하려면 다음을 입력합니다.\q그리고 Enter 키를 누릅니다. 일반 터미널 프롬프트로 돌아갑니다.
이제 PostgreSQL 에서 데이터베이스를 성공적으로 삭제했습니다. 이 작업은 되돌릴 수 없으므로 데이터베이스를 삭제할 때 주의하십시오.
데이터베이스 메타데이터 보기
이 단계에서는 PostgreSQL 에서 데이터베이스 메타데이터를 보는 방법을 배우게 됩니다. 메타데이터는 "데이터에 대한 데이터"입니다. 데이터베이스의 맥락에서 메타데이터는 테이블, 열, 데이터 유형 및 제약 조건에 대한 정보를 포함하여 데이터베이스 자체의 구조와 특성을 설명합니다.
터미널 열기: 아직 열려 있지 않은 경우 터미널 창을 시작합니다.
postgres데이터베이스에 연결: 이전 단계에서mydatabase를 삭제했으므로 메타데이터를 탐색하기 위해 기본postgres데이터베이스에 연결합니다.psql -d postgrespostgres=#프롬프트가 표시됩니다.테이블 목록: 현재 연결된 데이터베이스의 모든 테이블을 나열하려면
\dt명령을 사용할 수 있습니다.\dt아직 테이블을 생성하지 않았으므로 출력은 비어 있거나 시스템 테이블을 표시해야 합니다. 다음과 같이 표시될 수 있습니다.
Did not find any relations.또는
List of relations Schema | Name | Type | Owner --------+-----------------------+-------+---------- pg_catalog | pg_aggregate | table | postgres pg_catalog | pg_am | table | postgres pg_catalog | pg_amop | table | postgres ...출력은 각 테이블의 스키마, 이름, 유형 및 소유자를 보여줍니다.
테이블 설명: 특정 테이블에 대한 자세한 정보를 보려면 테이블 이름 다음에
\d명령을 사용할 수 있습니다. 사용자 생성 테이블이 없으므로 시스템 테이블, 예를 들어pg_class를 살펴보겠습니다.\d pg_class
이 명령은 열 이름, 데이터 유형 및 모든 제약 조건을 포함하여
pg_class테이블의 구조를 표시합니다. 출력은 상당히 방대하지만 테이블 정의에 대한 포괄적인 개요를 제공합니다.Table "pg_catalog.pg_class" Column | Type | Collation | Nullable | Default | Storage | Stats target | Description -------------------+-----------+-----------+----------+---------+----------+--------------+------------- oid | oid | | not null | | plain | | relname | name | | not null | | plain | | relnamespace | oid | | not null | | plain | | reltype | oid | | not null | | plain | | reloftype | oid | | not null | | plain | | relowner | oid | | not null | | plain | | relam | oid | | not null | | plain | | relfilenode | oid | | not null | | plain | | reltablespace | oid | | not null | | plain | | relpages | integer | | not null | | plain | | reltuples | real | | not null | | plain | | relallvisible | boolean | | not null | | plain | | reltoastrelid | oid | | not null | | plain | | relhasindex | boolean | | not null | | plain | | relhasrules | boolean | | not null | | plain | | relhastriggers | boolean | | not null | | plain | | relhassubclass | boolean | | not null | | plain | | relrowsecurity | boolean | | not null | | plain | | relforcerowsecurity| boolean | | not null | | plain | | relispopulated | boolean | | not null | | plain | | relreplident | character | | not null | | plain | | relispartition | boolean | | not null | | plain | | relrewrite | oid | | not null | | plain | | relacl | aclitem[] | | | | plain | | reloptions | text[] | | | | plain | | relpartbound | pg_node_tree | | | | extended | | Indexes: "pg_class_oid_index" UNIQUE, btree (oid) "pg_class_relname_nsp_index" UNIQUE, btree (relname, relnamespace) Foreign-key constraints: "pg_class_relam_fkey" FOREIGN KEY (relam) REFERENCES pg_am(oid) "pg_class_relnamespace_fkey" FOREIGN KEY (relnamespace) REFERENCES pg_namespace(oid) "pg_class_relowner_fkey" FOREIGN KEY (relowner) REFERENCES pg_authid(oid) "pg_class_reltoastrelid_fkey" FOREIGN KEY (reltoastrelid) REFERENCES pg_class(oid) Referenced by: TABLE "pg_statistic_ext" CONSTRAINT "pg_statistic_ext_relid_fkey" FOREIGN KEY (relid) REFERENCES pg_class(oid) TABLE "pg_rewrite" CONSTRAINT "pg_rewrite_ev_class_fkey" FOREIGN KEY (ev_class) REFERENCES pg_class(oid) TABLE "pg_trigger" CONSTRAINT "pg_trigger_tgrelid_fkey" FOREIGN KEY (tgrelid) REFERENCES pg_class(oid)psql 종료:
psql프롬프트를 종료하려면 다음을 입력합니다.\q그리고 Enter 키를 누릅니다. 일반 터미널 프롬프트로 돌아갑니다.
이제 psql을 사용하여 PostgreSQL 에서 데이터베이스 메타데이터를 성공적으로 보았습니다. 이를 통해 데이터베이스 및 테이블의 구조와 속성을 이해할 수 있습니다.
요약
이 랩에서는 새로운 데이터베이스 생성을 시작으로 PostgreSQL 에서 데이터베이스 관리에 대한 기본 사항을 배웠습니다. 이 프로세스는 터미널에서 원하는 데이터베이스 이름 다음에 createdb 명령을 사용하는 것을 포함합니다. 성공적인 실행은 아무런 출력 없이 데이터베이스를 생성합니다.
생성을 확인하려면 psql -d postgres를 사용하여 기본 postgres 데이터베이스에 연결한 다음, \l 명령을 사용하여 사용 가능한 모든 데이터베이스를 나열하여 새로 생성된 데이터베이스가 있는지 확인합니다.


