[SIST] Oracle_days13_DB모델링
·
TIL/Oracle
오늘은 데이터 베이스 모델링(DB 모델링)에 대해서 배웠다. 쿼리는 없고 이론적인 부분이라 이해하고 암기하는 것을 중심으로 공부를 해보았다. 중간중간 DB 모델링 과정 내용을 정리하는 부분이 들어가는데 배우면서 추가되는 것들을 내용에 넣어서 중간점검을 하는 단계라고 생각하면 될 거 같다! 1. DB 모델링 정의 1) DB ? 관련된 데이터들의 집합 2) DB 모델링 ? 현실 세계의 업무적인 프로세스를 물리적으로 데이터베이스화 시키기 위한 과정 예) 회사 사원 -> 정보(데이터) -> 저장(사원 관리) -> 물리적 저장(데이터베이스화)하는 과정 연락처, 진급, 연봉인상 등등.. 3) 순서 : 요구분석 -> 개념적 DB 모델링 -> 논리적 DB 모델링 -> 물리적 DB 모델링 2. 요구 분석 1) 관련 분야..
[SIST] Oracle_days12_JOIN 관련
·
TIL/Oracle
1. JOIN - 정규화(모델링)로 인해서 테이블이 쪼개져 있는 것을 같거나 서로 다른 두 개 이상의 테이블에서 컬럼을 검색(조회)하기 위해서 사용 - RDBMS = 관계형 데이터 모델을 사용하는 DBMS - 테이블과 테이블 간의 관계가 맺어져 있다. ( PK FK ) - 종류 8가지 > SELF JOIN > EQUI JOIN > NON-EQUI JOIN > INNER JOIN > OUTER JOIN > CROSS JOIN > ANTI JOIN > SEMI JOIN 1) SELF JOIN - 한 개의 테이블을 두 개의 테이블처럼 사용하기 위해 테이블 별칭을 사용하여 한 테이블을 자체적으로 JOIN하여 사용한다. - 테이블이 자신의 특정 컬럼을 참조하는 또 다른 하나의 컬럼을 가지고 있는 경우에 사용한다...
[SIST] Oracle_days11
·
TIL/Oracle
1. 만년달력 그리기 풀이1) IW로 주차를 계산하기 SELECT -- 일요일이라면 날짜(DD)를 찍고 나머지는 NULL로 찍겠다. NVL( MIN( DECODE(TO_CHAR(dates, 'D'), 1, TO_CHAR(dates, 'DD') ) ), ' ') 일 , NVL(MIN( DECODE(TO_CHAR(dates, 'D'), 2, TO_CHAR(dates, 'DD') ) ), ' ') 월 , NVL(MIN( DECODE(TO_CHAR(dates, 'D'), 3, TO_CHAR(dates, 'DD') ) ), ' ') 화 , NVL(MIN( DECODE(TO_CHAR(dates, 'D'), 4, TO_CHAR(dates, 'DD') ) ), ' ') 수 , NVL(MIN( DECODE(TO_CHAR..
[SIST] Oracle_days10
·
TIL/Oracle
1. 복습 문제 1번 문제는 오라클 자료형 문제로 days09에 정리한 것 참고! 2. emp 테이블에서 [년도별] [월별] 입사사원수 출력.( PIVOT() 함수 사용 ) [실행결과] 1982 1 0 0 0 0 0 0 0 0 0 0 0 1980 0 0 0 0 0 0 0 0 0 0 0 1 1981 0 2 0 1 1 1 0 0 2 0 1 2 SELECT * FROM (SELECT TO_CHAR(hiredate, 'YYYY') 입사년도, TO_CHAR(hiredate, 'FMMM') 입사월 FROM emp ) PIVOT(COUNT(*) FOR 입사월 IN(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12)); 2-2. emp 테이블에서 각 JOB별 입사년도별 1월~ 12월 입사인원수 출력...
[SIST] Oracle_days09
·
TIL/Oracle
1. 복습 문제 문제1) emp 테이블의 각 JOB별 사원수 조회하기 SELECT * FROM (SELECT job FROM emp) PIVOT( COUNT(*) FOR job in('CLERK', 'SALESMAN', 'PRESIDENT', 'MANAGER', 'ANALYST' ) ); 문제2) emp 테이블에서 [JOB별로] 각 월별 입사한 사원의 수를 조회 방법1) COUNT, DECODE 사용 SELECT job, COUNT(*) , COUNT( DECODE( EXTRACT(MONTH FROM hiredate), 1, 'o' ) ) "1월" , COUNT( DECODE( EXTRACT(MONTH FROM hiredate), 2, 'o' ) ) "2월" , COUNT( DECODE( EXTRACT(..
[SIST] Oracle_days08
·
TIL/Oracle
오늘도 여러 문제를 풀면서 새로운 개념을 배웠다. 응용되는 문제는 git에 업로드 하였고, 새롭게 배운 내용들만 정리하였다. 1. FIRST_VALUE, LAST_VALUE 분석 함수 FIRST_VALUE는 분석 함수로 정렬된 값중에서 [현재 행까지의 첫 번째 값]을 반환한다. 만약 첫번째가 NULL이라면, IGNORE NULLS를 지정하지 않았다면 NULL을 반환하게 된다. LAST_VALUE 함수도 분석 함수로 정렬된 값중에서 [현재 행까지의 마지막 값]을 반환하는 함수이다. 【형식】 FIRST_VALUE ¦ LAST_VALUE (expr [IGNORE NULLS] ) OVER ( [PARTITION BY expr2] [,...] ORDER BY expr3 [collate_clause] [ASC ¦ ..
[SIST] Oracle_days07
·
TIL/Oracle
오늘도 여러 개의 문제를 풀고 중간 중간 새로운 개념을 배우거나 문제를 다 풀고 다른 문제에 새로운 개념을 적용하는 식으로 수업을 했다. 문제 중에 새로운 개념이 포함되거나 조금 어렵다고 느껴진 문제들을 정리하고 새로운 개념을 정리하려고한다! 1. [문제] 문제1) emp 에서 평균PAY 보다 같거나 큰 사원들만의 급여 합을 출력. 풀이1) 풀이2) 문제2) emp 테이블의 ename, pay, 최대pay값(5000)을 100%로 계산해서 각 사원의 pay를 백분률로 계산해서 10% 당 별하나(*)로 처리해서 출력 ( 소숫점 첫 째 자리에서 반올림해서 출력 ) 문제3) insa 테이블에서 '2022.10.10'을 기준으로 아래와 같이 출력하는 쿼리 작성. 풀이1) CASE 사용 풀이2) DECODE 사용..
[SIST] Oracle_days06
·
TIL/Oracle
1. 집계함수 == 그룹함수 == 복수행 함수 *** 주의할 점) NULL 값을 제외한 *** 1) SUM(n) : NULL 값을 제외한 n의 합계 2) AVG(n) : NULL 값을 제외한 N개 행의 평균값을 리턴한다. 3) COUNT(n) : NULL을 제외한 행의 갯수를 리턴한다. COUNT(*)은 NULL 값을 포함한 행(레코드)갯수. 4) MAX() : 최대값을 리턴한다. 5) MIN() : 최소값을 리턴한다. 6) STDDEV(n) : NULL 값을 제외한표준편차 구하는 함수 7) VARIANCE(n) : NULL 값을 제외한 분산값 구하는 함수 예제1) emp 테이블에서 최고급여액을 받는 사원의 정보를 출력 예제2) emp 테이블에서 최저급여를 받는 사원의 정보를 출력 예제3) emp 테이블..
[SIST] Oracle_days05
·
TIL/Oracle
1. 문제 풀기 아침마다 수업 시작하시기 전에 여러 개의 문제를 내주시는데 새롭게 배운 내용이 있는 것만 정리하였다. 문제1) insa 테이블에서 남자는 'X', 여자는 'O' 로 성별(gender) 출력하는 쿼리 작성 풀이1) 풀이2) NULLIF 함수 사용 - NULLIF( ) 함수 두 개의 값을 비교하여 두 개의 값이 같으면 NULL 값을 반환 같지 않으면 첫번째 값을 반환해주는 함수 문제2) emp 테이블에서 사원명(ename)에 'e'문자를 포함한 사원을 검색해서 아래와 같이 출력. - 주석처리 한 쿼리로도 검색해서 출력할 수 있다. ' :변수명 ' 위의 ':변수명'을 바인드 변수라고 하며, 세션(session)이 유지되는 동안 사용할 수 있는 변수이다. 바인드 변수를 사용하면 아래와 같이 입력..