Oracle
[Oracle] Join과 View
Join여러 개의 테이블을 하나로 합쳐서 원하는 데이터를 조회할 때 사용하는 SQL 연산inner join두 테이블에서 일치하는 행만 반환`on` 조건을 만족하는 경우만 결과로 출력select A.*, B.*from employees Ainner join departments Bon A.department_id = B.department_id; left outer join왼쪽 테이블의 모든 행을 가져오고, 오른쪽 테이블에서 일치하는 행이 있으면 가져오며, 없으면 `null`을 반환select A.*, B.*from employees Aleft outer join departments Bon A.department_id = B.department_id; right outer join오른쪽 테이블의 모든 행..
Oracle
[Oracle] hierarchy query
hierarchy query계층형 데이터를 조회하기 위한 쿼리부모-자식 관계를 가진 데이터를 처리할 때 사용주로 자기 참조(`Self-Refencing`) 테이블에서 사용트리 구조 정의 가능select * from board connect by prior board_no = board_target start with board_target is nullorder siblings byboard_group desc,board_no asc;connect by prior계층형 쿼리를 작성할 때 부모와 자식 관계 정의`prior` 키워드 바로 뒤에오는 항목은 부모를 의미, 그 뒤 항목은 자식을 의미 start with계층 구조의 시작점을 정의항목이 `null`인 계층에서 시작, 즉 루트 항목부터 시작 order ..
Oracle
[Oracle] rownum과 top n query
rownum쿼리 결과에서 각 행에 대해 고유한 순번을 할당하는 가상 컬럼행들이 선택되는 순서에 따라 할당데이터가 반환되는 순서대로 번호 매김페이지네이션이나 특정 순서대로 데이터를 추출할 때 사용 top n query일반적으로 특정 조건을 만족하는 상위 N개의 행을 선택하는 쿼리서브 쿼리를 사용하여 구문을 처리함select * from ( select rownum rn, TMP.* from ( select * from product order by price asc )TMP) where rn between 6 and 10;서브 쿼리구문을 겹치는 행위 top n query는 왜 한 개의 구문으로 처리되지 않을까?기본적으로 rownum은 정렬보다 먼저 번호가 매겨지기 때문에 정렬을 한 후에 rownum을 적..
Oracle
[Oracle] group query
group query데이터를 집계하고 요약하는 구문특정 컬럼을 기준으로 데이터 그룹화그룹화된 각 그룹에 대해 집계 함수 적용주로 데이터를 요약하거나 통계 정보를 얻을 때 사용 그룹화 방법 중복 제거select distinct pokemon_type from pokemon;distinct중복된 데이터를 제거하고, 고유한 값만 반환하는 키워드  그룹 구성중복 제거 방법보다 확장성 있음select pokemon_type from pokemon group by pokemon_type;group by그룹화할 기준이 되는 컬럼을 지정하는 절그룹으로 묶은 컬럼만 조회 가능`order by`, 즉 정렬 조건 앞에 옴 그룹 별 개체 수 출력`key`와 `value`로 별칭 지정select pokemon_type key,..
Oracle
[Oracle] dual
dualOracle에서 특별한 의미를 가진 단일 행 단일 열의 가상 테이블데이터베이스에서 값을 선택하거나 선택할 때 필요한 임시 테이블 역할자동으로 생성되며, 사용자 데이터베이스에서 수정 불가능실제 데이터를 저장하지 않으므로 쿼리 성능에 영향을 미치지 않음보통 `select` 구문에서 값을 반환할 때 사용됨숫자나 문자열, 집계함수 계산을 할 때, `dual`에서 값을 반환함select board_seq.nextval from dual
Oracle
[Oracle] 외래키
Foreign Key외래키, 즉 두 테이블 간의 관계를 정의하는 제약 조건board_writer references member(member_id) on delete set null컬럼명 references 참조테이블명(참조컬럼명) 제약옵션 references외래 키 제약 조건을 정의할 때 사용 foreign key 명시키워드를 명시하나 생략하나 기능은 같음foreign key (board_writer) references member(member_id) on delete set null 외래키 특징 참조 관계 설정외래키가 설정된 컬럼은 다른 테이블의 기본키나 고유키와 연결됨에를 들어, board 테이블에서 member 테이블을 참조한다면, board 테이블의 member_id 컬럼은 member 테이블..
Oracle
[Oracle] 함수
함수SQL 구문에서 데이터를 조작하거나 변환하는데 사용숫자 함수산술 연산 함수mod()나머지를 반환하는 함수select mod(10, 3) from dual; 문자열 함수문자열 연산 함수instr()문자열에서 특정 부분 문자열의 위치를 반환하는 함수Oracle에서 위치는 1부터 시작select * from book where instr(book_title, '마법사') > 0;select * from book where instr(book_title, '해리포터') = 1; regexp_like()문자열이 특정 정규식과 일치하는지 확인하는 함수check(regexp_like(country_name, '^[가-힣]{1,15}$')) instr(), like, regexp_like() 중 뭐가 더 빠를까?상..
Oracle
[Oracle] 연산자
연산자SQL 구문에서 데이터를 조작하거나 조건을 지정하는 데 사용 (기본적으로 프로그래밍 언어와 똑같은 연산자는 제외)비교 연산자두 값을 비교하는 연산자=같음select * from book where book_title = '어린왕자'; 논리 연산자조건을 조합하는 연산자and둘 다 참일 때 참 or둘 중 하나라도 참일 때 참 not조건이 거짓일 때 참 between범위 내에 있는지 확인check(item_discount_rate between 0 and 1) in값이 목록 내에 있는지 확인check(lecture_type in ('온라인', '오프라인', '혼합')) like문자열 패턴 일치`%`는 글자가 있어도 그만, 없어도 그만임select * from book where book_title lik..
Oracle
[Oracle] sequence
sequence번호 자동 생성 도구옵션을 통해 생성할 번호의 형태를 지정할 수 있음고유번호 생성할 때 사용번호를 중간에 수정할 수 없음sequence 생성보통 테이블명_ + seq로 작성create sequence pokemon_seq;create sequence 시퀀스명; sequence 삭제drop sequence pokemon_seq;drop sequence 시퀀스명;Value현재값 Min Value최소값 Max Value최대값 Increment증가값 Cache값을 뽑아놓는 개수성능 향상에 도움캐시의 크기에 따라 번호가 나옴기본값은 20시퀀스 생성 시 nochache나 chche 캐시크기를 뒤에 붙이면 크기 지정 가능Cycle번호를 다 사용했을 시 앞으로 순환하는지 여부 Ordered시퀀스 우선 순..