database(20)
-
Oracle 18 ROWNUM // LISTAGG() 데이터 합치기
[참고링크] https://ribo.dev/28 [참고링크] https://turing0809.tistory.com/48 ROWNUM은 반환되는 쿼리결과의 임시 행번호이다. 그리고 반드시 1부터 시작하여 차례대로 붙여진다. 데이터를 1 ~ 10개 불러오는 경우 (WHERE ROWNUM > 0) 같은 조건이 없어도 WHERE ROWNUM 10 때문에 동작하지 않으므로 ROWNUM에 별칭 rn을 설정한다(11줄). 15줄에 WHERE rn > 10으로 고치면 두 WHERE 조건에 만족하는 쿼리가 출력된다. 만약 15줄을 주석처리하면 1 ~ 12번 데이터가 출력될 것이다. ROWNUM 값을 별칭으로 새로운 컬럼으로 만들어 외부에서 ROWNUM에 부여한 별칭을 통해 페이징 처리한다. 페이징 구현하는 다른 방법 ..
2023.10.12 -
Oracle 17 LEFT JOIN, RIGHT JOIN, SELF JOIN
left outer join (left join) 자기자신 테이블을 출력한다 LEFT OUTER JOIN 할 때 OUTER 생략하고 'LEFT JOIN'으로 사용할 수 있다 두 테이블을 조인하는 조인 조건이 a.c1 = b.c1 이므로 두 테이블의 데이터의 c1 열이 같은 데이터를 출력하되 inner join 이 아니라 LEFT JOIN 이므로 두 테이블의 c1 열이 모두 출력되었다. (3행처럼 비록 두 테이블의 c1 열 데이터가 다르지만 LEFT JOIN 이므로 출력되었다) LEFT JOIN 실습 - 자기자신 데이터만 출력 실습 [테이블 편집]에서 외래키 설정 외래키를 만들 테이블 선택하고 오른쪽 클릭하고 편집 클릭 -> tbl_employees 테이블에 외래키를 만들것이다. 외래키는 DEPARTMEN..
2023.10.11 -
Oracle 16 JOIN 개념, INNER JOIN 실습, 3개 테이블 조인
조인 (JOIN) 외래키 이전 실습에서 USERID가 외래키 https://my-develop-diary.tistory.com/161 위 링크에서 '실습 tbl_buy 테이블 생성' 에서 USERID 외래키 지정 외래키가 지정되지 않아도 ON 조인조건 으로 두 테이블을 조인할 수 있다 outer는 자기 자신을 반환한다 -> inner(공통부분) + left (or right) inner join 공통 실습 NVL() - Null Value Locator 실습 두 테이블의 값이 똑같이 NULL이면 NULL도 출력한다. NVL 함수로 두 테이블의 NULL 출력했다. 실습 ※ 시행착오 부모 테이블(tbl_customers2)에 없는 customerid로 10004를 입력해서 데이터 삽입에 실패했다 실습 3개의..
2023.10.11 -
Oracle 15 GROUP BY ~ HAVING , PARTITION BY ~
실습 tbl_buy 테이블 생성 외래키 : USERID 생성 tbl_user테이블과 tbl_buy 테이블의 관계 tbl_user 테이블은 이전 실습에서 생성했다. group by USERID - USERID 별로 묶었다 SUM(속성명) group by USERID -> USERID 별로 묶어 각 USERID 마다 모든 AMOUNT 속성의 데이터를 더한다 COUNT(속성명) group by USERID -> USERID 별로 묶고 각 USERID 마다 USERID 속성의 갯수를 출력한다 실습 GROUP BY 속성 HAVING 조건 partition by 실습 group by 속성명 - 중복이 제거되고 USERID별로 1개가 출력된다 partition by 는 group by와 달리 모든 USERID 항목을..
2023.10.10 -
Oracle 14 키, 정규화
key - 슈퍼키, 후보키, 대체키, 기본키 기본키는 유일성이 있어야 한다 정규화 1정규화에서 중복된 정보를 제거화여 각 열에 하나의 값만 들어가야 한다. 각 행에 수강정보를 (수학,P001(김교수),A-10) 처럼 (,)로 여러 수강정보를 입력하면 안 된다. -> 1정규화로 각 열에 하나의 값만 들어오게 한다 (원자화 - 더 이상 쪼갤 수 없을 때까지 만든다) 2정규화 - 부분 함수 종속성 제거한다 -> 기본키가 1개만 되게 테이블을 분리한다 학생 테이블 - 학번 , 이름 수강 신청 테이블 - 수강 과목, 담당 교수, 강의실 교수 테이블 - 교수 이름 이 3테이블이 분리되어야 하는데 위 테이블은 3 테이블이 붙어 있다 논리적으로 학번은 교수님 이름과 연관이 없다. 3정규화 이행함수 종속성 제거 학번으로..
2023.10.10 -
Oracle 13 LEAST(), GREATEST(), DECODE(), DUMP(), SYS_CONTEXT()
LEAST - 최솟값을 반환하는 함수 GREATEST - 최댓값을 반환한다 코드분석 - LEAST, GREATEST 모두 (1, NULL)에서 'null'을 반환한다 각 행에서 최솟값, 최댓값 출력하기 LEAST(속성1, 속성2, 속성3) GREATEST(속성1, 속성2, 속성3) switch ~ case와 유사하다 DECODE(1, 1, 'A', 2, 'B', 'C') -> 맨 앞의 요소가 1이면 'A', 맨 앞의 요소가 2이면 'B', 1이나 2가 아니면 'C' 출력한다 DUMP('문자열', 16) -> '문자열'을 16진수로 출력한다 DUMP(문자열, 1016, 2, 2) 1000 + 16 -> CharacterSet이 출력된다 2,2 - start지점, length 길이를 테이블 만들기 실습 - ..
2023.10.10