
COALESCE 문법 SELECT COALESCE(컬럼1, 컬럼2,......., 컬럼N) FROM 테이블 COALESCE함수는 인자로 주어진 컬럼들 중에서 NULL이 아닌 첫 번째 값을 반환하는 함수 COALESCE 함수는 처음으로 NULL이 아닌 컬럼값을 만나면 그 컬럼 값을 리턴. 만약 A, B라는 컬럼을 인자로 COALSESC 함수로 주게 되면 A 컬럼 값이 NULL 값이 아닌 경우 A 값을 리턴하고 A가 NULL이고 B가 NULL이 아닌 경우 B 값을 리턴. 모든 인수가 NULL이면 NULL을 반환 컬럼1이 NULL이 아니면 컬럼1을 리턴 컬럼1이 NULL이고 컬럼2가 NULL이 아니면 컬럼2를 리턴 컬럼1부터 컬럼 N-1까지 데이터가 NULL이면 컬럼N값을 리턴 출처 : https://jhny..

|| (쌍파이프) 문자(데이터)와 문자(데이터) 사이에 || 를 넣어 문자를 합치기 SELECT '문자열1'(컬럼명) || '문자열2'(컬럼명) || '문자열3'(컬럼명) 테이블명; => 결과 : 문자열1문자열2문자열3 CONCAT(문자열1, 문자열2) SELECT CONCAT('문자열1' (컬럼명), '문자열2' (컬럼명)) FROM 테이블명; => 결과 : 문자열1문자열2 ++ 중첩 CONCAT (DBMS에 따라 매개변수를 두 개만 받기도 하고 여러개를 허용해주기도 함.) 오라클은 매개변수를 두 개만 받기 때문에 여러문자를 연결하려면 중첩해서 CONCAT을 사용해줘야 함. SELECT CONCAT(CONCAT('문자열1' (컬럼명), '문자열2' (컬럼명)), '문자열3' (컬럼명)) FROM 테이블..

테이블에 기존 PK가 잡혀있는 상태에서 컬럼 추가(PK, NOT NULL) 하는 경우 1. 컬럼이름 추가 ALTER TABLE [테이블명] ADD [컬럼명] [타입] 2. 테이블에 컬럼 추가 시 자동으로 NULL로 들어가므로 NOT NULL 옵션 추가 불가능 3. 데이터 NULL 아닌것으로 바꾸고 MODIFY로 수정 ALTER TABLE [테이블명] MODIFY [컬럼명] NOT NULL 4. PK 잡으려면 원래 지정되어있던 PRIMARY KEY, UNIQUE KEY 삭제 후 추가 가능 ALTER TABLE [테이블명] DROP PRIMARY KEY 5. PK 지워도 UNIQUE KEY 삭제 안되어 있어서 UNIQUE KEY도 지워줘야함 DROP INDEX [인덱스명] 6. 다 지운 후 PRIMARY K..

# { }는 ''가 씌워진 형태가 반환되고, $ { }는 ''가 씌워지지 않은 형태가 반환 대개 #는 값에 사용한다. $는 컬럼명이나 테이블 명에 사용 # { } 1. # { } 사용시 PreparedStatement 생성 2. PreparedStatement 매개 변수 값 안전하게 설정 3. PreparedStatement 가 제공하는 set 계열의 메소드를 사용하여 물음표(?)를 대체할 값을 지정. 4. 들어오는 데이터 문자열로 인식하기 때문에 자동 따옴표 붙음 사용 이유 안전하고 빠르기 떄문에 선호. Prepared (준비) 여기서 말하는 준비는 컴파일(Parsing) 을 이야기하며, 컴파일이 미리 되어있는 녀석이기에 Statement 에 비해 성능상 이점 $ { } 1. ${ } 사용시 State..

여러행을 하나의 컬럼으로 가져오고 싶을 때 사용 특정 컬럼의 내용들을 1개 셀 안에 나열하고 싶을 때 LISTAGG 함수를 사용 (1) 개별 컬럼에 대하여 : LISTAGG SELECT LISTAGG(컬럼이름B, '구분문자') WITHIN GROUP(ORDER BY 정렬기준컬럼이름Z) FROM 테이블이름; - 컬럼이름B : 데이터가 나열될 컬럼 - '구분문자' : 나열된 데이터 사이를 구분할 문자 (*입력하지 않으면 구분 없이 연속으로 붙어 나열됩니다) - 정렬기준컬럼이름Z : 컬럼B의 데이터가 나열될 때 정렬 기준이 될 또다른 컬럼. 기본적으로 오름차순 정렬되며, 내림차순으로 정렬하려면 컬럼이름Z 뒤에 desc를 뒤에 붙여 줍니다. 이 정렬기준 Z를 설정해 주지 않으면 오류(ORA-30491)가..

MERGE 문을 사용하면 변경할 테이블에 데이터가 존재하는지 체크하고, UPDATE, DELETE, INSERT를 한 번에 작업이 가능 MERGE 문의 경우 단일(한개의) 테이블에 UPDATE 또는 INSERT를 하는 경우 많이 사용하지만, 두개의 테이블을 비교하거나 서브 쿼리의 결과에 따라서 UPDATE, INSERT 작업이 가능 MERGE INTO 변경할 테이블 USING 기준 테이블 | 서브쿼리 ON 조건문 WHEN MATCHED THEN 조건을 만족할 경우 UPDATE SET 컬럼 = '값' DELETE WHEN NOT MATCHED THEN 조건을 만족하지 않을 경우 INSERT (컬럼) VALUES ('값') MERGE 변경될테이블명 AS A USING 기준테이블명 AS B ON A.컬럼명 =..

Char 길이가 고정된 문자열 타입 크기보다 작은 문자열 저장시 뒷부분은 공백으로 채워짐 (데이터를 가져올때는 공백을 제거하고 가져옴) Varchar 가변의 문자열 타입, length + 1만큼 저장됨 데이터 타입 설명 CLOB 문자형 대용량 객체 고정길이와 가변길이 문자집합 지원 NCLOB 유니코드를 지원하는 문자형 대용량 객체 BLOB 이진형 대용량 객체 BFILE 대용량 이진 파일에 대한 위치,이름 저장 LOB이란 Large Object의 약자로 대용량 데이터를 저장할 수 있는 데이터 타입입니다. 일반적으로 그래픽, 이미지, 사운드등 비정형 데이터를 저장할때 L,OB타입을 사용합니다. 문자형 대용량 데이터는 CLOB나 NCLOB, 그래픽, 이미지, 동영상등의 대이터는 BLOB를 주로 사용합니다. C..

하나의 테이블에 데이터가 많을 때, 특정 칼럼을 기준으로 분할하는 것을 말합니다. row을 그룹핑하여 분할하는 것을 수평적 분할(horizontal partitioning) ▶ 파티션을 사용하는 이유 1. 파티션을 각각 다른 디스크에 위치한 파일 그룹에 지정해서 쿼리의 병렬 수행 작업 가능 * 디스크 성능이 낮은 곳에 잘 사용하지 않는 오래 된 데이터가 담긴 파티션을 위치시키면 스토리지를 효율적으로 사용이 가능합니다. 2. 파일 그룹 단위로 백업 및 복구가 가능하기 때문에 효율적인 데이터베이스 운영 및 관리 가능 3. 파티션 단위로 데이터를 처리하거나 인덱스를 리빌드 하는 것이 가능하므로 작업에 소요되는 리소스 줄이기 가능 1) 범위 분할 (range partitioning) 칼럼 1개를 기준으로 범위조..