PostgreSQL

2.1. psql

술임 2022. 1. 6. 15:21

다양한 작업 수행을 위해 '콘솔'에 코드를 입력해서 DB를 관리하고 조작할 것

* 콘솔 명령어 : PostgreSQL 프로그램을 실행시키기 위한 코드

* SQL 문법 : 프로그램 내부에서 이해가능한 DB 고유의 프로그래밍 언어

 

콘솔

콘솔 : 컴퓨터를 조작하기 위한 도구, 컴퓨터와 대화하는 '채널'

컴퓨터를 조작하는 방법으로도 포괄적으로 사용되며 '쉘(Shell)'이라고도 부름

 

윈도우 계열 - 명령 프롬프트 사용

 

psql -U postgres

 

 

SQL Shell 명령어

명령어 설명 예시코드
\q psql 종료  
\l DB 조회  
\c 입력한 DB로 이동 \c 데이터베이스명
\e 외부편집기(메모장 또는 텍스트편집기)로 SQL 쿼리 입력  
\dt 현재 DB에서 테이블 확인 가능  

 

콘솔에서 쿼리문 작성

한 줄이 길어지면 적당히 끊고 엔터

줄바꿈이 된 상태에서도 쿼리문 계속 작성 가능하고, 모든 코드 입력 완료 후 ; 붙여줌

들여쓰기는 Tab 키 사용

 

테이블 생성

DB 생성

CREATE DATABASE skirt_store;

'skirt_stroe'라는 DB 생성

postgres=# \c skirt_store

 

DB 삭제

DROP DATABASE 데이터베이스명;

 

테이블 생성

CREATE TABLE skirt_index(skirt_in INTEGER, date DATE, name VARCHAR(80));
		테이블명   컬럼명 자료형 컬럼명 자료형 컬럼명 자료형
명령어 설명
CREATE TABLE DB 안에 테이블을 새로 생성하는 명령어
테이블명 새로 생성하는 테이블의 이름 지정
컬럼명 데이터와의 관계 표현하기위해 컬럼이름 지정
자료형 컬럼 자료 데이터 타입 지적

 

테이블 삭제

DROP TABLE 테이블명;

 

데이터 추가

순서 고려 없이 데이터 자료 추가

테이블 컬럼의 순서에 맞춰서 넣어줄 데이터의 순서도 맞춤

INSERT INTO skirt_index VALUES( 1, '2021-01-04', 'stripe skirt');

                      테이블명       skirt_id        date             name

명령어 설명
INSERT INTO 테이블 안에 로우를 생성
테이블명 INSERT INTO의 명령어를 어느 테이블에 할 것인지 지정
VALUES INSERT INTO의 값을 지정

INSERT INTO와 VALUES 사이에 테이블 명을 지정해줘야함

 

순서 고려해서 데이터 자료 추가

컬럼 순서를 미리 지정하고 순서에 맞추어 입력

INSERT INTO skirt_index (컬럼1, 컬럼2, 컬럼3) VALUES
( 컬럼1에 데이터1, '컬럼2에 데이터2', '컬럼3에 데이터3');

순서를 지정하기 위해서는 테이블명과 VALUES 사이에 컬럼의 순서를 적음

VALUES 다음에 나오는 컬럼에 들어갈 값을 소괄호로 감싸줌

 

테이블에 자료 여러 개 추가

순서 고려 X

INSERT INTO skirt_index VALUES
(자료1, '자료1', '자료1'),
(자료2, '자료2', '자료2'),
(자료3, '자료3', '자료3'),
			.
			.
			.
(자료n, '자료n', '자료n');

소괄호 하나가 로우 한 줄을 의미함

 

순서 고려

INSERT INTO skirt_index (skirt_id, date, name) VALUES
(자료1, '자료1', '자료1'),
			.
            .
            .
 (자료n, '자료n', '자료n');

 

데이터 조회

자료 조회

명령어 설명
SELECT 컬럼 지정
* 모든 컬럼
FROM 테이블 지정
SELECT * FROM skirt_index;

* 대신 원하는 컬럼을 쓰면 해당 컬럼만 조회 가능

명령어 설명
LIMIT 반환하는 로우의 개수 지정
OFFSET 반환하는 로우의 시작시점 지정
ORDER BY 반환하는 로우 정렬 시 사용
WHERE 지정한 로우만 조회 되도록 필터 기능

 

LIMIT

테이블로부터 가져오는 로우의 개수 제한

LIMIT 명령어를 사용하면 처음에 존재하는 로우부터 출력됨

OFFSET 명령어를 사용하면 로우의 시작지점 지정 가능

 

ORDER BY

조회할 데이터를 오름차순 또는 내림차순으로 정렬

* 반드시 정렬할 칼럼을 지정해야함

ASC는 반환 데이터를 오름차순으로 정렬, DESC는 내림차순으로 정렬.

순서를 따로 정하지 않으면 기본적으로 오름차순으로 정렬됨

 

WHERE

컬럼 안에 특정한 내용을 필터링하며 조회

WHERE절은 조건을 만족시키면 그 조건에 부합하는 데이터만 출력하도록 필터링함

연산자 설명
= 서로 같다
<> 서로 다르다
> 오른쪽 값보다 왼쪽 값이 더 크다
< 왼쪽 값보다 오른쪽 값이 더 크다
>= 오른쪽 값보다 왼쪽 값이 더 크거나 같다
<= 왼쪽 값보다 오른쪽 값이 더 크거나 같다

 

서브쿼리

쿼리문 안에 쿼리문이 반복되는 구조

첫 번째 쿼리문이 '메인 쿼리문'

바로 따르는 소괄호 안에 쿼리문이 '서브쿼리문'

들여쓰기, 띄어쓰기 조심해야한다^^;

name='green'이고 skirt_index=2인 행은 없기 때문에 아래와 같은 결과화면이 나온다.

 

데이터 수정

선택한 컬럼 데이터 수정

UPDATE 테이블명
	SET 컬럼명 = 바꿀 데이터 내용
    WHERE 수정할 로우의 조건
RETURNING * ; --수정한 내용 바로 조회

UPDATE 으로 테이블을 지정하고

(WHERE 으로 수정 컬럼 범위 지정, -- 선택사항)

SET 으로 데이터 수정

 

SET으로 수정 컬럼 지정하지 않으면 모든 컬럼의 값을 변경하게 됨

4에 있던 name=green을 horizon으로 바꿔보았다

 

테이블 복사

1. AS 명령어

출력 결과의 컬럼명을 원래 이름과 다르게 변경하여 출력

name 컬럼을 AS 명령어를 사용해서 출력 시 pattern으로 바꿈

 

2. 복사와 정렬

기존 테이블 테이터를 정렬해서 복사 후 새로운 테이블에 붙여넣음

CREATE TABLE skirt_class AS
SELECT * FROM skirt_index
ORDER BY skirt_id DESC;

DROP TABLE skirt_index;
기존 테이블 삭제

ALTER TABLE skirt_class RENAME TO skirt_index;
새로운 테이블 이름 변경

 

 

데이터 삭제

선택한 컬럼 데이터 삭제

DELETE FROM 테이블명 WHERE 컬럼명 = 삭제할 데이터;

 

모든 데이터 삭제

DELETE FROM 테이블명;

 

 

cmd로만 작성하니 파이썬을 cmd로 하나하나 치고 있는 느낌이 난다.

다음 게시글에서는 pgAdmin4를 사용하여 cmd에서 했던 작업을 동일하게 해볼 예정이다.

 

 

'PostgreSQL' 카테고리의 다른 글

3.1. 데이터 타입에 맞는 알맞는 테이블  (1) 2022.01.06
2.2. pgAdmin4  (1) 2022.01.06
PostgreSQL  (0) 2022.01.03
1.3. PostgreSQL 구조  (0) 2022.01.03
1.2. PostgreSQL 개발환경 구축  (0) 2022.01.03