Home SQL 기본 정리(PostgreSQL)
Post
Cancel

SQL 기본 정리(PostgreSQL)

DDL(Data Definition Language)

CREATE

1
CREATE TABLE table_name();

ALTER

1
2
3
4
5
6
7
8
9
10
-- 테이블 이름 변경
ALTER TABLE table_name RENAME TO new_table_name ;
-- 컬럼 추가
ALTER TABLE table_name ADD COLUMN column_name type;
-- 컬럼명 변경 
ALTER TABLE table_name RENAME COLUMN column_name TO new_column_name;
-- 컬럼 타입 변경
ALTER TABLE table_name ALTER COLUMN column_name TYPE type;
-- 컬럼 제거 
ALTER TABLE table_name DROP COLUMN column_name;

DROP

1
DROP TABLE table_name; 


DML(Data Manipulation Language)

INSERT

1
INSERT INTO table_name(column1, column2) VALUES(value1, value2);

UPDATE

1
2
-- 특정 컬럼을 변경할 때
UPDATE table_name SET column='변경내용' WHERE '조건'; 
➕ 특정 문자만 변경
1
UPDATE table SET column=replace(column, "변경할 문자", "변경") WHERE column like '%변경할문자%'

※ 데이터를 넣을때 작은따움표를 넣으려면 작은따움표 두개를 한번에 넣어주면된다
ex) mini’s -> mini’’s

DELETE & TRUNCATE

DELETE는 데이터만 지워지고 테이블의 용량은 지워지지 않는다. 삭제 후 되돌릴수있다. TRUNCATE는 데이터가 삭제되면 테이블 용량이 초기화된다. ROLLBACK할 수 없다.

  • 테이블에서 자동적으로 시퀀스를 재시작
    1
    
     truncate table table_name restrat identity
    
  • 테이블 데이터만 삭제(시퀀스 값은 그대로)
    1
    
     truncate table table_name continue identity
    
  • 테이블의 데이터를 모두 삭제시 테이블에 연결된 다른 테이블의 데이터까지 모두 사제
    1
    
     truncate table table_name cascade
    
  • 테이블에 연결된 데이터가 하나라도 있으면 데이터를 삭제하지 않음
    1
    
     truncate table table_name restrict
    


DCL(Data Control Language)

GRANT

1
GRANT ALL PRIVILEGES ON DATABASE dbname TO newuser;

REVOKE

1
REVOKE 권한 ON 대상 FROM user


DB 생성 & User 생성

1
2
CREATE DATABASE dbname;
CREATE USER newuser WITH ENCRYPTED PASSWORD 'pass';


기타

Sequence 설정

  • Sequence 생성
    1
    
    CREATE SEQUENCE seq_name;
    
  • Sequence 시작값 변경
    1
    
    ALTER SEQUENCE seq_name RESTRAT WITH start_number;
    
  • 컬럼 sequence 연결 끊기
    1
    
    ALTER TABLE table_name ALTER COLUMN column_name DROP default;
    
  • 기존에 있던 컬럼에 sequence 적용하기
    1
    
    ALTER table table_name ALTER COLUMN column_name SET default nextval('seq_name')
    
  • sequence 재설정
    1
    2
    
    SELECT MAX(id) FROM table;
    SELECT pg_catalog.setval(pg_get_serial_sequence('table_name', 'id'), (SELECT MAX(id) FROM table_name)+1);
    

제약조건 설정

  • 외래키 추가
    1
    
    ALTER TABLE table ADD FOREIGN KEY(id) REFERENCE table(id);
    
  • 제약조건 삭제
    1
    
    ALTER TABLE table DROP CONSTRAINT constraint_name;
    
This post is licensed under CC BY 4.0 by the author.