Oracle 공부(51)
-
Day34 - JOIN
오늘은 JOIN 에 대해서 알아 봅시다. JOIN 위와 같은 테이블을 만든다면....? job에 있는 값이 중복되어 있는 것을 확인 할 수 있습니다. 이럴 경우에, 만약 홍길동의 직업이 바뀐다면, job에 있는 내용을 전부 수정해야 합니다. 그리고, 이 데이터가 저장된 공간이 1개당 1원이라고 생각해 보죠. 만약, 홍길동의 데이터가 많다면, 그만큼 손해가 커지는 것 입니다. 그래서 위와 같은 테이블은 분해해서 만들어 주어야 합니다. (정규화) - 장점 - 1. 중복을 피할 수 있다. 2. 홍길동의 직업을 변경할 때도 하나만 변경하면 전부 다 바뀐다. 3. 다른 홍길동이 존재한다고 했을 때, 알아보기 편하다. 4. info 테이블에 존재하지 않는 user를 가지고 있을 수 있다. 이렇게 분해한 테이블 들을..
2021.04.02 -
Day33 - 테이블 생성, INNER JOIN
이번에는 테이블을 생성하는 방법과 INNER JOIN 에 대해서 알아 봅시다 여태까지는 이미 만들어져 있는 테이블을 사용했었는데, JOIN을 알아보기 위해서 테이블을 생성해 봅시다. 테이블 생성 ※oracle이 비싼 이유가 나옵니다 ! 사용하고 있는 데이터베이스를 열고, 테이블 폴더에 우클릭을 한 후 새 테이블을 눌러 줍시다. 테이블의 이름은 쓰고 싶은대로 작성 해주세요. 저는 user1 이라고 하겠습니다. 이제 속성(column)을 만들어 봅시다 초록색+를 3번 눌러주세요 이렇게 만든 속성들의 이름, 데이터 유형, 크기를 설정해 줍시다. 그리고, PK(기본키)를 1개만 클릭해 주세요 그 다음, DDL을 눌러보시면 ....? 이렇게, CREATE TABLE 구문이 있죠? 원래는 이렇게 마우스로 테이블을 ..
2021.04.01 -
Day33 - Quiz를 풀어 봅시다.
문제 1. 현재일자를 기준으로 EMPLOYEE테이블의 입사일자(hire_date)를 참조해서 근속년수가 10년 이상인 사원을 다음과 같은 형태의 결과를 출력하도록 쿼리를 작성해 보세요. 조건 1) 근속년수가 높은 사원 순서대로 결과가 나오도록 합니다 문제 2. EMPLOYEE 테이블의 manager_id컬럼을 확인하여 first_name, manager_id, 직급을 출력합니다. 100이라면 ‘사원’, 120이라면 ‘주임’ 121이라면 ‘대리’ 122라면 ‘과장’ 나머지는 ‘임원’ 으로 출력합니다. 조건 1) department_id_id가 50인 사람들을 대상으로만 조회합니다 문제 3. 사원 테이블에서 JOB_ID별 사원 수를 구하세요. 사원 테이블에서 JOB_ID별 월급의 평균을 구하세요. 월급의 평..
2021.04.01 -
Day33 - 그룹함수
이번에는 그룹함수에 대해서 알아 봅시다. 그룹함수 그룹 함수는 속성(column)별로 최대값(MAX), 최소값(MIN), 개수(COUNT) 등을 알고 싶을 때 사용하는 겁니다. SUM (합계) , AVG(평균), MIN(최소값), MAX(최대값), COUNT(개수) ※ 평균은 소수자리가 많이 나오기 때문에, ROUND 함수를 같이 사용했다. - COUNT 는 2가지 형태가 있습니다. (*) -> null 포함, (속성) -> null 비포함 - GROUP BY 절 GROUP BY는 속성을 그룹으로 묶습니다. 그룹함수를 사용하게 되면, 일반 속성(column)은 조회할 수가 없습니다. 일반 속성도 조회하고 싶다면, GROUP BY 로 묶어주어야 합니다. ※ 위는 job_id 별 급여평균 , 아래는 부서별 ..
2021.04.01 -
Day33 - 집합연산자
이번에는 집합연산자에 대해 알아 봅시다 집합연산자는 , 테이블과 테이블을 합치거나, 빼주거나 등등 .... 집합연산자는, 테이블과 테이블의 연산이 일어나기 때문에, 속성(column)이 같아야 합니다. UNION -> 합집합(중복x, 정렬o) UNION은 두 테이블의 합집합 입니다. 중복된 값이 있다면, 1번만 나옵니다. 정렬되어서 나옵니다. UNION ALL -> 합집합 (중복o, 정렬x) 202 Michael 이 두번 나온 것과, 정렬되지 않았음을 확인 할 수 있습니다. INTERSECT -> 교집합 두 테이블의 중복되는 것(둘 다 있는 것)을 반환합니다 MINUS -> 차집합 ※여러개의 테이블에 같이 사용할 수 있다 보통 dual 테이블에 사용함 이렇게 집합 연산자에 대해서 알아 보았습니다. 고생하..
2021.04.01 -
Day32 - 값 변환 함수
이번에는 값을 변환할 수 있는 함수에 대해서 알아 봅시다. 값을 변환 할 수 있는 함수에는 대표적으로 NVL , NVL2 , DECODE , CASE WHEN THEN END 가 있습니다. NVL(컬럼, 값) -> 컬럼의 값이 null 이라면 값 으로 반환 NVL2(컬럼, 값1, 값2) -> 컬럼의 값이 null 아니라면 값1 , null 이라면 값2 반환 DECODE(컬럼, 값, 결과, 값, 결과.. , default) -> 컬럼을 기준으로 값을 비교해서 결과 반환 컬럼이 모든 값과 일치하지 않는경우 default 반환 CASE 컬럼 WHEN 값 THEN 결과 ELSE 값 END -> 컬럼이 값과 같다면 결과, 끝에 END ※DECODE 와 비슷하다고 볼 수 있습니다. 이렇게 값 변환 함수들에 대해서 ..
2021.04.01