테이블 제약 조건 제약조건은 데이터의 무결성을 지키기 위해 제한하는 조건으로, 테이블에는 기본키,외래키 같은 제약조건을 설정할 수 있다. 제약 조건.. 데이터의 정합성을 위해 필요한 조건이지만 잘 활용하지 못하면 개발자들 기준에서는 귀찮을 수도 있는 조건이다. (데이터 삭제나 수정이 마음대로 안되기 때문에) 그래서 꼭 필요한 부분이 있다. 바로 ON DELETE 절을 추가하는 것이다. DELETE ON 1. 종류 on delete no action -- 기본값 on delete restrict -- 트랜잭션과 연관 on delete cascade on delete set null on delete set default 2. on delete caseade 부모 테이블에서 어떤 외래키를 삭제하면, 그 외래..
프로그래밍/Database
ec2환경에서 PostgreSQL을 세팅하는 방법에 대해 알아보자. ec2환경이면 RDS를 써도 되지 않아? 왜 굳이 세팅해?? 라고 한다면 각각의 장단점이 있는데, RDS - 장점 : AWS에서 거의 모든 기능을 관리해주기 때문에 사용하는 입장에서 편리하다. - 단점 : 비싸다... 과금이 상당히 잘 된다고 한다. DB 직접 세팅 - 장점 : RDS에 비해 훨씬 저렴하다. - 단점 : 데이터베이스 관리에 대한 부담이 있다. 지금 나의 상황은 시작하는 서비스이기 때문에 과금이 부담스럽고, DB 관리하는 과정이 도움이 될 것 같기 때문에 직접 세팅하는 것을 선택했다. 1. PostgreSQL 설치 # 설치 가능한 pg버전 확인하기 apt show postgresql # 14버전 설치하기 sudo apt i..
MySQL에서 auto increment를 통해 자동 증가 인덱스를 사용할 수 있다. PostgreSQL에서는 sequence를 통해 동일한 작용을 할 수 있다. 해당 sequence를 생성하고, 이용해서 id를 포함한 Table을 생성하는 쿼리이다. create sequence extn.keyword_seq; create table extn.keyword_dictionary( id int default nextval('extn.keyword_seq'), keyword varchar(255), created_at date default CURRENT_DATE, primary key (id) ) ; 아래는 Table을 삭제하고 Sequence도 삭제하는 쿼리이다. drop table extn.keyword..
파티셔닝 : 대용량 테이블이나 인덱스를 파티셔닝한다는 것은 Object를 여러 개의 세그먼트로 나눈다는 의미이다. 즉 하나의 테이블이나 인덱스가 동일한 논리적 속성을 가진 여러개의 단위로 나우어져 각각이 별도의 물리적 속성을 갖는 것이다. 특히 관리해야할 데이터가 늘어나면 성능과 스토리지 관점에서 문제가 생길 수 있는데, 이를 해결할 수 있는 효율적인 방법 가운데 하나가 곧 파티셔닝이다. 파티셔닝은 보통 다음과 같은 장점을 갖고 있다. > 데이터 엑세스시(특히 풀스캔시)엑세스의 범위를 줄여 성능을 향상시킨다. > 물리적으로 여러 영역으로 파티셔닝해 전체 데이터의 훼손 가능성이 줄어들고 데이터 가용성이 향상된다. > 각 파티션별로 백업, 복구 작업을 할 수 있다. > 테이블의 파티션 단위로 디스크 I/O를..
PostgreSQL | 데이터 형식(Data type) | 날짜/시간 형식(timestamp, interval, data 등) | devkuma PostgreSQL | 데이터 형식(Data type) | 날짜/시간 형식(timestamp, interval, data 등) 여기에서는 날짜 / 시간 데이터 형식에 대해 설명한다. 날짜/시간 형식 사용 가능한 형식은 다음과 같다. 형식 크기 설명 별칭 timestamp [(p)] [without time zone] 8 바이트 날짜와 시간 모두 timestamp [(p)] [ www.devkuma.com CREATE TABLE my_table ( my_column DATE DEFAULT (CURRENT_DATE - '1 mon'::INTERVAL)::DATE )..
https://ggmouse.tistory.com/504 [MSSQL] DECLARE 변수 선언 변수 변수란 특정 유형의 단일 데이터 값을 보유할 수 있는 개체이다. 변수 선언 DECLARE 문으로 변수를 선언한다. DECLARE @변수명 데이터 형식; -- 지역 변수 선언 DECLARE @Name VARCHAR(50); DECLARE @Age IN.. ggmouse.tistory.com
1. 프로시저와 트리거를 사용해야하는 이유 지금 어플을 만들며 API를 직접 만들어 DB를 관리하도록 만들고 있다. DB수업시간에 열심히 듣지 않은 나는 두가지 이상의 테이블을 건드려야하는 상황이 왔을 때 트랜잭션을 두개이상 보내어 DB를 건드리게 하게 만들었다. 하지만 이처럼 하나의 사용자 반응에 트랜잭션이 많아지면 문제가 생길 수 있기 때문에 프로시저나 트리거를 사용하여 API를 작성해야 한다. (문제라 함은 다중의 트랜잭션이 작동을 하고 있는 와중에 프로그램이 다운을 하게 되면 하나의 트랜잭션은 완료를 했는데 하나의 트랜잭션은 끝 마치지 못하는 등 트랜잭션의 성질을 범할 수가 있다.) 2. 프로시저와 트리거 차이점 프로시저 : 저장 프로시저는 미리 데이터베이스 서버에 일련의 SQL 명령을 해 놓고,..