클라우드 서버의 PostgreSQL에서 테이블을 생성, 제거 및 관리하는 방법
PostgreSQL이란 무엇입니까?
PostgreSQL은 SQL 쿼리 언어를 사용하는 데이터베이스 관리 시스템입니다. VPS에 다른 애플리케이션의 데이터를 저장하는 데 사용할 수 있는 매우 안정적이고 기능이 풍부한 데이터베이스 시스템입니다.
이 기사에서는 postgreSQL 인터페이스 내에서 테이블을 생성하고 관리하는 방법에 대해 설명합니다. 테이블을 올바르게 구성하고 테이블을 사용하여 정보를 저장하는 방법을 배웁니다.
Ubuntu에서 PostgreSQL을 설치하고 로그인하는 방법
이 가이드에서는 Ubuntu 12.04에 PostgreSQL을 설치하지만 대부분의 다른 배포 기본 리포지토리에서 사용할 수 있습니다.
설치하려면 다음 명령을 입력하십시오.
sudo apt-get update sudo apt-get install postgresql postgresql-contrib
설치 후 데이터베이스를 잘 관리할 새 사용자를 생성합니다.
sudo adduser postgres_user
기본 PostgreSQL 사용자("postgres"라고 함)에 로그인하여 데이터베이스를 만들고 새 사용자에게 할당합니다.
sudo su - postgres psql
PostgreSQL 명령 프롬프트로 이동됩니다.
생성한 시스템 사용자와 일치하는 새 사용자를 생성합니다. 그런 다음 해당 사용자가 관리하는 데이터베이스를 만듭니다.
CREATE USER postgres_user WITH PASSWORD 'password'; CREATE DATABASE my_postgres_db OWNER postgres_user;
다음 명령을 사용하여 인터페이스를 종료합니다.
\q
기본 "postgres" 사용자 계정을 종료하고 다음 명령을 사용하여 생성한 사용자로 로그인합니다.
exit sudo su - postgres_user
다음 명령을 사용하여 생성한 데이터베이스에 로그인합니다.
psql my_postgres_db
이제 테이블 관리에 대해 배울 준비가 되었습니다.
PostgreSQL의 테이블 생성 구문
우리 데이터베이스에는 아직 테이블이 없습니다. 다음 명령으로 사용 가능한 테이블 목록을 제공하도록 PostgreSQL에 요청하여 이를 확인할 수 있습니다.
\d
No relations found.
다음 구문을 준수하여 새 테이블을 만들 수 있습니다.
CREATE TABLE new_table_name ( table_column_title TYPE_OF_DATA column_constraints, next_column_title TYPE_OF_DATA column_constraints, table_constraint table_constraint ) INHERITS existing_table_to_inherit_from;
닫는 괄호 뒤부터 세미콜론까지의 부분은 이전 정의에 나열된 열 외에 기존 테이블의 모든 열을 상속하기 위한 선택적 구성입니다.
괄호 안의 부분은 열 정의와 테이블 제약 조건의 두 부분으로 나뉩니다.
PostgreSQL 열 및 테이블 정의
열 정의는 다음 구문 패턴을 따릅니다.
column_name data_type (optional_data_length_restriction) column_constraints
열 이름은 자명해야 합니다.
PostgreSQL 데이터 유형
데이터 유형은 다음 중 하나일 수 있습니다.
- 부울: "부울" 또는 "부울"을 사용하여 참 또는 거짓 값을 선언합니다.
- 문자 값
- 문자: 단일 문자 보유
- 문자(#): # 문자를 포함합니다. 여분의 공간을 채우기 위해 공백이 삽입됩니다.
- varchar(#): 최대 #개의 문자를 보유합니다. 더 적게 포함할 수 있습니다.
- smallint: -32768에서 32767 사이의 정수
- int: -214783648에서 214783647 사이의 정수
- 직렬: 자동 입력된 정수입니다.
- float(#): 정밀도가 # 포인트 이상인 부동 소수점 수
- 실수: 8바이트 부동 소수점 수
- 숫자(#,after_dec): # 자릿수, 소수점 뒤에 after_dec 자릿수가 포함된 실수
- date: 날짜 값 저장
- 시간: 시간 값 저장
- timestamp: 날짜 및 시간 값 저장
- timestamptz: 시간대 데이터를 포함하는 타임스탬프 저장
- 간격: 두 타임스탬프 값의 차이를 저장합니다.
- point: 점을 정의하는 한 쌍의 좌표 저장
- line: 선을 표시하는 일련의 점을 저장합니다.
- lseg: 선분을 정의하는 데이터 저장
- 상자: 직사각형을 정의하는 데이터 저장
- 폴리곤: 닫힌 공간을 정의하는 데이터 저장
- inet: IP 주소 저장
- macaddr: 장치 MAC 주소 저장
PostreSQL 열 및 테이블 제약
열 정의에는 열에서 찾은 데이터 유형에 대한 규칙을 제공하는 제약 조건이 있을 수도 있습니다. 다음은 데이터 유형 다음에 공백으로 구분된 값으로 사용할 수 있습니다.
- NOT NULL: 열은 null 값을 가질 수 없습니다.
- 고유: 열 값은 모든 레코드에서 동일하지 않아야 합니다. Null은 항상 고유한 값으로 간주됩니다.
- PRIMARY KEY: 위의 두 제약 조건의 조합입니다. 테이블당 한 번만 사용할 수 있습니다.
- 확인: 열의 값에 대해 조건이 참인지 확인
- 참조: 값은 다른 테이블의 열에 있어야 합니다.
열이 정의된 후 테이블 전체 제약 조건을 선언할 수 있습니다. 테이블 전체 제약 조건은 UNIQUE, PRIMARY KEY, CHECK 또는 REFERENCES일 수 있습니다.
PostgreSQL에서 테이블을 만드는 방법
연습할 테스트 테이블을 만들어 봅시다. 다양한 놀이터 장비를 정의하는 "pg_equipment"라는 테이블을 생성합니다. 다음 테이블 정의를 입력합니다.
CREATE TABLE pg_equipment ( equip_id serial PRIMARY KEY, type varchar (50) NOT NULL, color varchar (25) NOT NULL, location varchar(25) check (location in ('north', 'south', 'west', 'east', 'northeast', 'southeast', 'southwest', 'northwest')), install_date date );
NOTICE: CREATE TABLE will create implicit sequence "pg_equipment_equip_id_seq" for serial column "pg_equipment.equip_id" NOTICE: CREATE TABLE / PRIMARY KEY will create implicit index "pg_equipment_pkey" for table "pg_equipment" CREATE TABLE
프롬프트에 "\\d"를 입력하면 새 테이블을 볼 수 있습니다.
\d
List of relations Schema | Name | Type | Owner --------+---------------------------+----------+--------------- public | pg_equipment | table | postgres_user public | pg_equipment_equip_id_seq | sequence | postgres_user (2 rows)
"equip_id" 직렬 데이터 유형 선언에 의해 생성된 시퀀스와 함께 테이블이 나열됩니다.
PostgreSQL에서 테이블 데이터를 변경하는 방법
다음 일반 구문을 사용하여 테이블의 정의를 변경할 수 있습니다.
ALTER TABLE table_name Action_TO_Take;
예를 들어 다음 명령을 입력하여 "pg_equipment" 테이블에 열을 추가할 수 있습니다.
ALTER TABLE pg_equipment ADD COLUMN functioning bool;
ALTER TABLE
다음을 입력하면 추가 열을 볼 수 있습니다.
\d pg_equipment
Column | Type | Modifiers --------------+-----------------------+----------------------------------------------------------------- equip_id | integer | not null default nextval('pg_equipment_equip_id_seq'::regclass) type | character varying(50) | not null color | character varying(25) | not null location | character varying(25) | install_date | date | functioning | boolean | . . .
"달리 언급되지 않는 한 장비가 작동하는 것으로 간주되어야 함"을 지정하는 기본값을 추가하려면 다음 명령을 입력하십시오.
ALTER TABLE pg_equipment ALTER COLUMN functioning SET DEFAULT 'true';
값도 null이 아닌지 확인하려면 다음과 같이 할 수 있습니다.
ALTER TABLE pg_equipment ALTER COLUMN functioning SET NOT NULL;
열 이름을 바꾸려면 다음 구문을 사용합니다.
ALTER TABLE pg_equipment RENAME COLUMN functioning TO working_order;
방금 만든 열을 제거하려면 다음 명령을 입력합니다.
ALTER TABLE pg_equipment DROP COLUMN working_order;
다음 명령으로 전체 테이블의 이름을 바꿀 수 있습니다.
ALTER TABLE pg_equipment RENAME TO playground_equip;
PostgreSQL에서 테이블 삭제
다음을 입력하여 생성한 테이블을 삭제할 수 있습니다.
DROP TABLE playground_equip;
DROP TABLE
존재하지 않는 테이블에 해당 명령을 내리면 다음과 같은 오류가 발생합니다.
ERROR: table "playground_equip" does not exist
이 오류를 피하기 위해 우리는 postgreSQL에 테이블이 있으면 삭제하고 어느 쪽이든 성공적으로 반환하도록 지시할 수 있습니다. 다음 명령을 실행하여 이를 수행합니다.
DROP TABLE IF EXISTS playground_equip;
NOTICE: table "playground_equip" does not exist, skipping DROP TABLE
이번에는 테이블을 찾을 수 없다는 메시지가 표시되지만 오류가 발생하지 않고 계속됩니다.
결론
이제 PostgreSQL에서 간단한 테이블을 만들고 관리할 수 있을 만큼 충분히 알고 있어야 합니다. 이러한 기술은 다른 애플리케이션의 데이터를 관리하거나 명령줄에서 PostgreSQL을 제어하는 방법을 배우는 경우에 유용합니다.