본문 바로가기

SQL/모두를 위한 postgreSQL

[PostgreSQL] 2.psql 쉘에서 쿼리작성하기

728x90

- 콘솔 명령어 : PostgreSQL 프로그램을 실행시키기 위한 코드
- SQL문법 : 프로그램 내부에서 이해할 수 있는 데이터베이스 고유의 프로그래밍 언어

1. psql  알아보기
    1) 콘솔이랑 무엇인가
        -컴퓨터를 조작하기 위해 운영체제를 이용, 이를 '텍스트'로 접근하는 방식을 뜻함
        -컴퓨터를 조작하기 위한 도구, 컴퓨터와 대화하는 채널
        -컴퓨터를 조작하는 방법으로도 포괄적으로 사용되며 쉘(shell)리가도 부르기도 한다

    2) 콘솔은 언제 쓰는가
        -윈도우 계열은 '명령프롬프트'를 사용한다
        -콘솔은 psql을 조작하거나 서버, 데디터베이스 관리 등에 사용된다
        -psql -U postgres(사용자계정) -> 데이터베이스에 접속된다
        -postgres=#  -> 데이터베이스명
        -SQL Shell 명령어
            \q : psql을 종료한다
            \ㅣ: 데이터베이스를 조회한다
            \c : 입력한 데이터베이스로 이동한다
            \e : 외부편집기로 SQL 쿼리를 입력할 수 있다
            \dt : 현재 데이터베이스에서 테이블을 확할 수 있다

    3) 콘솔에서 쿼리문 작성하기
        -콘솔은 세미콜론 이전까지 입력된 코드를 한 줄로 인식하고 커리문이 입력된다
        -줄바꿈과 들여쓰기를 잘 활용해서 보기 쉽게 작성한다
        -\e(외부편집기)를 이용하면 수정이 편하다
            postgres=# CREATE TABLE 테이블명(
            postgres=# book_id INTEGER,
            postgres=# date DATE,
            postgres=# name VARCHAR(80)
            postgres=# );

2. 테이블 생성하기
    1) 데이터베이스 생성하기 (예시)
        -CREATE DATABASE book_store  => 데이터베이스 생성
        -제대로 생성되었는지 확인하려면 \l 명령어를 입력
        -만든 데이터에 접속하려면 \c book_store 을 입력한다
        -데이터베이스명은 대문자로 작성하더라도 소문자로 저장된다
    
    2) 데이터베이스 삭제하기
        -DROP DATABASE 데이터베이스명;

    3) 테이블 생성하기
        -컬럼을 지정하기 위해서 소괄호를 사용해서 감싸주어야 한다
        CREATE TABLE develop_book (      데이터베이스 안에 테이블을 새로 생성하는 명령어 + 테이블명
        book_id INTEGER,                 컬럼명 + 자료형
        date DATE,                       컬럼명 + 자료형
        name VARCHAR(80)                 컬럼명 + 저료형
        );

        -테이블명 : 새로 생성하는 테이블의 이름을 지정
        -컬럼명   : 데이터와의 관계를 표현하기 위한 컬럼이름을 지정
        -자료형   : 컬럼의 자료 데이터 타입을 지정하기

    4) 테이블 삭제하기 
        -DROP TABLE 테이블명;

3. 테이터 추가하기
    1) 순서 지정 없이 데이터 자료 추가하기 
        -'book_id', 'date', 'name'순서임을 알고있다
        -date와 name컬럼에 들어갈 데이터는 문자열 데이터이기 때문에 ''로 감싸주어야 한다

        INSERT INTO develop_book VALUES(1, '2019-12-17', '프레임워크');
        -INSERT INTO : 테이블안에 로우(행)를 생성하는 명령어, 항상함께 작성된다
        -테이블명 : INSERT INTO의 명령어를 어느 테이블에 할 것인지 지정
        -VALUES  : INSERT INTO의 값을 지정한다
        -INSERT 와 VALUES 사이에 테이블명을 지정해줘야 한다
        -컬럼이 3개 있다면 항상 데이터도 3개를 작성해야 한다
        -만약, 대화형 문구를 넣기 위해서 ""를 사용할 때는 ''로 감싸준다 => '" "'
        -작은따옴표를 표시하고 싶을 때는 '' 작은따옴표를 2번 사용해야 한다 => '''자바'''

    2) 순서 지정하고 데이터 자료 추가하기
        -순서를 지정하려면 테이블명과 VALUES사이에 컬럼의 순서를 적엊ㄴ다
        -지정한 컬럼의 순서대로 VALUES 다음 소괄호 안에 데이터 순서도 똑같이 해야한다

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

    3) 테이블에 자료 여러 개 추가하기
        INSERT INTO develop_book VALUES
        (자료1, '자료1', '자료1'),
        (자료2, '자료2', '자료2'),
        (자료3, '자료3', '자료3');
        
        -코드 한줄이 끝났다는 의미로 마지막에 세미콜론을 붙여주면 여러개의 데이터자료가 테이블에 추가된다

    4) 데이터 조회하기
        1) 모든 자료 조회하기

        SELECT : 컬럼을 지정한다
        *      : 모든 컬럼을 의미한다
        FROM   : 테이블을 지정한다

        SELECT * FROM develop_book;

        2) 선택한 자료 조회하기

        SELECT book_id, name FROM develop_book;
        
        -LIMIT      : 반환하는 로우의 개수를 지정한다
        -OFFSET     : 반환하는 로우의 시작시점을 지정한다
        -LIMIT 명령어는 항상 처음에 존재하는 로우부터 출력된다
         OFFSET 명령어를 사용해 시작지점을 정한다
         postgreSQL은 롱의 개수를 제일 위에서 0부터 시작한다

        -ORDER BY   : 반환하는 로우를 정렬할 때 사용한다
        -ORDER BY 정렬할 컬럼지정 ASC;
        -ASC  : 오름차순 정렬 (디폴트)
        -DESC : 내림차순 정렬
        -여러 컬럼을 지정하고 싶다면 ,쉼표로 나열

        -WHERE      : 지정한 로우만 조회가 되도록 필터 기능을 한다
         SELECT * FROM develop_book
         WHERE book_id = 1;
        -어떤 조건을 만족시키면 그 조건에 부합하는 데이터만 출력하도록 필터링 해준다
        -UPDATE와 DELETE절과 함께 쓰이기도 한다

        3) 서브쿼리
            -쿼리문 안에 쿼리문이 반복되는 구조를 서브쿼리 라고 한다
            -첫번째 퀴리문을 '메인 쿼리문' 이라하고, 바로 따르는 소괄호안에 쿼리문을 '서브쿼리문'이라 한다
            -메인쿼리문과 서브쿼리문을 구분하는 것은 소괄호 이다

             SELECT * FROM develop_book
             WHERE '2020-01-03' = (
             SELECT date FROM develop_book
             WHERE book_id = 3
             );

5. 데이터 수정하기
    1) 선택한 컬럼 데이터 수정하기

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

        -UPDATE 키워드로 테이블을 지정한다
        -WHERE 키워드로 수정할 컬럼의 범위를 지정한다
        -SET 키워드로 데이터를 수정한다
        -WHERE 키워드는 선택사항이다
        -SET 명령어에서 수정할 컬럼을 지정하지 않았다면 모든 컬럼의 값을 변경한다

    2) 테이블 복사와 정렬
        -데이터베이스는 최근의 수정된 로우를 가장 마지막에 출력한다
        -이를 원하는 순서대로 정렬하려면 ORDER BY쿼리문을 이용한다

        -AS 명령어 
            -출력결과의 컬럼명를 원래 이름과 다르게 변경하여 출력하는 기능이다 (별칭)
            -AS는 새로운 테이블에 어떤 데이터를 넣을지 매개하는 키워드 역할도한다

        -복사와 정렬
            CREATE TABLE develop_book_2 AS
            SELECT * FROM develop_book
            ORDER BY book_id ASC;

            -새로운 테이블명을 develop_book_2로 지정하면서 기존 develop_book의 내용을 복붙했다

6. 데이터 삭제하기
    1) 선택한 컬럼 데이터 삭제하기
        -컬럼의 데이터를 삭제하는 쿼리문의 키워드는 DELETE 이다

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

    2) 모든 데이터 삭제하기

        DELETE FROM 테이블명;

728x90