PostgreSQL
은 ORDBMS
중 하나이며 무료로 제공되고 있습니다.Postgres는 하드 디스크 내부에 개별 데이터베이스에 대한 모든 정보를 폴더와 수많은 파일의 형태로 저장
Postgres는 데이터를 어디에 어떤 형태로 저장할까?
시작하기전에 먼저 알아야할 단어/개념들이 있습니다.
위 다이어그램과 같이, 하나의 Heap File은 여러개의 Block(Page)로 나뉘어져 있고,
각 Block(Page)는 여러개의 Tuple(Item)을 담고 있음
vacuum
이라는 작업을 통해 데이터를 좀 더 효율적으로 관리 할 수 있습니다.vacuum : PostgreSQL에서 제공하는 디스크 조각 모음입니다.변경 또는 삭제된 자료들이 차지하고 있는
디스크 공간을 다시 사용할 수 있게 하며 인덱스 전용 검색 기능을 향상트랜잭션 ID겹침이나 다중 트랜잭션 ID 겹침 상황으로 손실될 가능성을 방지
이 명령은 PostgreSQL 셸 프롬프트에서 데이터베이스를 생성하지만 데이터베이스를 생성하려면 적절한 권한이 있어야 합니다. 기본적으로 새 데이터베이스는 표준 시스템 데이터베이스 템플릿 1을 복제하여 생성됩니다 .
CREATE DATABASE 문의 기본 구문은 다음과 같습니다.
CREATE DATABASE dbname;
여기서 dbname 은 생성할 데이터베이스의 이름입니다.
다음은 PostgreSQL 스키마에 testdb 를 생성하는 간단한 예입니다.
postgres=# CREATE DATABASE testdb;
postgres-#
PostgreSQL 명령줄 실행 파일 createdb 는 SQL 명령 CREATE DATABASE 를 둘러싼 래퍼 입니다. 이 명령과 SQL 명령 CREATE DATABASE 의 유일한 차이점 은 전자는 명령줄에서 직접 실행할 수 있고 하나의 명령으로 데이터베이스에 주석을 추가할 수 있다는 것입니다.
방법 중 하나를 사용하여 데이터베이스를 선택할 수 있습니다.
PostgreSQL 클라이언트를 이미 시작했고 다음 SQL 프롬프트에 도달했다고 가정합니다.
postgres=#
다음과 같이 백슬래시 el 명령인 \l 을 사용하여 사용 가능한 데이터베이스 목록을 확인할 수 있습니다.
postgres-# \l
List of databases
Name | Owner | Encoding | Collate | Ctype | Access privileges
-----------+----------+----------+---------+-------+-----------------------
postgres | postgres | UTF8 | C | C |
template0 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
template1 | postgres | UTF8 | C | C | =c/postgres +
| | | | | postgres=CTc/postgres
testdb | postgres | UTF8 | C | C |
(4 rows)
postgres-#
이제 다음 명령을 입력하여 원하는 데이터베이스를 연결/선택합니다. 여기서는 testdb 데이터베이스에 연결합니다.
postgres=# \c testdb;
psql (9.2.4)
Type "help" for help.
You are now connected to database "testdb" as user "postgres".
testdb=#
데이터베이스에 로그인할 때 명령 프롬프트 자체에서 데이터베이스를 선택할 수 있습니다. 다음은 간단한 예입니다.
psql -h localhost -p 5432 -U postgress testdb
Password for user postgress: ****
psql (9.2.4)
Type "help" for help.
You are now connected to database "testdb" as user "postgres".
testdb=#
이제 PostgreSQL testdb에 로그인되었으며 testdb 내에서 명령을 실행할 준비가 되었습니다. 데이터베이스를 종료하려면 \q 명령을 사용할 수 있습니다.
이 명령은 데이터베이스를 삭제합니다. 데이터베이스에 대한 카탈로그 항목을 제거하고 데이터가 포함된 디렉토리를 삭제합니다. 데이터베이스 소유자만 실행할 수 있습니다. 이 명령은 사용자 또는 다른 사람이 대상 데이터베이스에 연결되어 있는 동안에는 실행할 수 없습니다(이 명령을 실행하려면 postgres 또는 다른 데이터베이스에 연결).
DROP DATABASE의 구문은 다음과 같습니다.
DROP DATABASE [ IF EXISTS ] name
PostgresSQL 명령줄 실행 파일 dropdb 는 SQL 명령 DROP DATABASE 를 둘러싼 명령줄 래퍼 입니다. 이 유틸리티를 통해 데이터베이스를 삭제하는 것과 서버에 액세스하는 다른 방법을 통해 데이터베이스를 삭제하는 것 사이에는 효과적인 차이가 없습니다. dropdb는 기존 PostgreSQL 데이터베이스를 파괴합니다. 이 명령을 실행하는 사용자는 데이터베이스 수퍼유저 또는 데이터베이스 소유자여야 합니다.
dropdb 의 구문 은 다음과 같습니다.
dropdb [option...] dbname
CREATE TABLE 문의 기본 구문은 다음과 같습니다.
CREATE TABLE table_name(
column1 datatype,
column2 datatype,
column3 datatype,
.....
columnN datatype,
PRIMARY KEY( one or more columns )
);
다음은 ID를 기본 키로 사용하여 COMPANY 테이블을 생성하는 예제
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL
);
CREATE TABLE DEPARTMENT(
ID INT PRIMARY KEY NOT NULL,
DEPT CHAR(50) NOT NULL,
EMP_ID INT NOT NULL
);
INSERT INTO 문의 기본 구문은 다음과 같습니다.
INSERT INTO TABLE_NAME (column1, column2, column3,...columnN)
VALUES (value1, value2, value3,...valueN);
테이블의 모든 열에 대한 값을 추가하는 경우 SQL 쿼리에서 열 이름을 지정할 필요가 없습니다. 그러나 값의 순서가 테이블의 열과 같은 순서인지 확인하십시오. SQL INSERT INTO 구문은 다음과 같습니다.
CREATE TABLE COMPANY(
ID INT PRIMARY KEY NOT NULL,
NAME TEXT NOT NULL,
AGE INT NOT NULL,
ADDRESS CHAR(50),
SALARY REAL,
JOIN_DATE DATE
);
INSERT INTO COMPANY (ID,NAME,AGE,ADDRESS,SALARY,JOIN_DATE) VALUES (4, 'Mark', 25, 'Rich-Mond ', 65000.00, '2007-12-13' ), (5, 'David', 27, 'Texas', 85000.00, '2007-12-13');
PostgreSQL SELECT 문은 데이터베이스 테이블에서 데이터를 가져오는 데 사용되며 결과 테이블 형식으로 데이터를 반환합니다. 이러한 결과 테이블을 결과 집합이라고 합니다.
SELECT 문의 기본 구문은 다음과 같습니다.
SELECT column1, column2, columnN FROM table_name;
여기서 column1, column2...는 값을 가져오려는 테이블의 필드입니다. 필드에서 사용 가능한 모든 필드를 가져오려면 다음 구문을 사용할 수 있습니다.
SELECT * FROM table_name;
SELECT ID, NAME, SALARY FROM COMPANY ;