본문 바로가기

DB19

[Oracle] 다중 컬럼 PK 설정 방법 PK는 테이블당 하나만 존재 가능하다. 지금까지는 하나의 컬럼에 PK를 걸어줬는데 이전에 개발된 시스템을 뜯어보니 3개의 컬럼이 하나의 PK로 묶여있는 것을 보았다. 여러 컬럼을 하나의 PK로 설정하는 방법은 1. 테이블 생성 시 CREATE TABLE [TABLE 이름] ( [colum 1] varchar(100), [colum 2] number, CONSTRAINT [PK 이름] PRIMARY KEY ([colum 1], [colum 2]) ); 2. 만들어진 테이블 수정 시 ALTER TABLE [TABLE 이름] ( CONSTRAINT [PK 이름] PRIMARY KEY ([colum 1], [colum 2]) ); 2020. 5. 11.
[PostgreSQL] 컬럼명(Alias)을 대문자로 출력하는 방법 (MyBatis) 현재 MyBatis에 Oracle로 개발되어 있는 부분을 PostgreSQL로 변경중이다. 아래와 같은 쿼리가 있었는데 select id as ID, pw as PW from tbl_member 그냥 컬럼을 읽어오거나 AS를 사용해도 컬럼명 결과값이 항상 소문자로 출력되었다. 이미 대문자로 사용중인 로직들을 변경하기에는 너무 일이 커지기에 방법을 찾아보았는데 1. MyBatis의 resultMap을 사용한다. 2. Alias를 쌍따음표로 작성한다. select id as "ID", pw as "PW" from tbl_member 간단히 작성하기에는 쌍따음표가 괜찮아 보인다. 2020. 4. 29.
[PostgreSQL] 트랜잭션 사용하기 PostgreSQL에서 트랜잭션 작업 시 해당 작업 앞뒤로 BEGIN과 COMMIT을 사용하면 된다. ex) BEGIN; SELECT * FROM TBL_MEMBER; DELETE FROM TBL_MEMBER WHERE 1=1; COMMIT; BEGIN과 COMMIT 사이의 영역을 트랜잭션 블록이라 부름. 필요시 ROLLBACK TO [원하는 지점] 으로 ROLLBACK도 가능하다. ex) MEMBER 테이블의 id가 user123인 컬럼을 지우려고한다. 실수로 전부 다 지워서 다시 세이브포인트로 롤백한 후 이후 남은 작업을 진행한다. BEGIN; SELECT * FROM TBL_MEMBER; SAVEPOINT my_savepoint; ----------------------- 3번 DELETE FROM.. 2020. 4. 29.
[MSSQL] 테이블변수와 임시테이블 장단점 1. 임시테이블 임시테이블은 로그아웃 시 삭제되며 현재 DB가 아닌 시스템 DB인 tesmpdb에 저장된다. 만약 크기가 작다면 메모리에만 존재하기도 한다. (29Kbyte 기준) 전역 임시테이블은 모든 곳에서 이 테이블에 대한 참조를 중지하기 전까지 삭제할수 없으며 모든 작업이 참조를 중지 할 때 삭제된다. 장점 - 인덱스 사용 가능 - FK 제외한 모든 제약조건 사용 가능 - ALTER를 이용하여 테이블 변경 가능 - 통계정보 및 Non Cluster Index의 사용으로 대용량 및 조인 쿼리 성능 높이기 가능 단점 - Transaction Overhead, Lock Overhead, Rollback Overhead 존재 - 저장 프로시저에서 사용 시 실행마다 재컴파일, CPU 부하 및 추가적인 확인.. 2020. 4. 27.