본문 바로가기

수업내용

[Day26][Oracle] Multi Table JOIN / NON-EQUI JOIN / SELF JOIN / Stored VIEW Ⅰ. Multi Table JOIN(다중 테이블 조인) -- 3개 이상의 테이블(뷰)을 가지고 조인 시켜 주는 것이다. 부서번호, 부서명, 국가명, 부서주소, 사원번호, 사원명, 기본급여를 나타내 보세요. 부서번호 : departments.department_id (P.K), employees.department_id (F.K) 부서명 : departments 국가명 : countries 부서주소 : locations 사원번호, 사원명, 기본급여 : employees HR select * from departments; HR select * from locations; -- departments.location_id (F.K)와 locations.location_id (P.K)를 연결고리로 사용한다. H.. 더보기
[Day25] [Oracle] SET Operator / UNION / UNION ALL / INTERSECT/ MINUS / JOIN Ⅰ. SET Operator(SET 연산자) A = { a, x, b, e, g } B = { c, d, a, b, y, k, m} 1. UNION -- 합집합 -- A ∪ B = { a, b, c, d, e, g, k, m, x, y } 2. UNION ALL -- { a, x, b, e, g, c, d, a, b, y, k, m} -- 속도는 빠르지만 중복이 있고 정렬되지 않는다. 3. INTERSECT -- 교집합 -- A ∩ B = { a, b } 4. MINUS -- 차집합 -- A - B { x, e, g } -- B - A { c, d, y, k, m} ▷ UNION -- UNION은 서로 다른 테이블(뷰)의 행(ROW)과 행(ROW)을 합칠 때 사용하는 연산자이다. HR insert int.. 더보기
[Day24][Oracle] cube / grouping sets / truncate / 누적 / SUB Query / Sub Query 를 사용하여 테이블 복사 / Pairwise Query(쌍 서브쿼리) 1. cube HR select department_id, count(*) from employees group by rollup(department_id); select decode(grouping(department_id), 0, nvl(to_char(department_id), '인턴') , '전체') AS 부서번호 , decode(grouping(GENDER), 0, GENDER , '전체') AS 성별 , count(*) AS 인원수 , round(count(*)/(select count(*) from employees)*100, 1) AS "퍼센티지(%)" from ( select department_id , case when substr(jubun, 7, 1) in ('1', '3') the.. 더보기
[Day23][Oracle] 그룹함수(집계함수) / group by / having 절 / rollup / grouping Ⅰ. 그룹함수(집계함수) 1. sum : 합계 2. avg : 평균 3. max : 최대값 4. min : 최소값 5. count : select 되어서 나온 결과물의 행의 개수 6. variance : 분산 -- 분산의 제곱근이 표준편차이다. (평균에서 떨어진 정도) 7. stddev : 표준편차 -- 표준편차의 제곱승이 분산이다. (평균과의 차액) HR select salary, sum(salary) from employees; -- salary 값은 107개, sum 값은 1개이기 때문에 테이블 모양이 다르므로 오류 발생 HR select sum(salary), avg(salary), max(salary), min(salary), count(salary) from employees; HR selec.. 더보기
[Day22][Oracle] 날짜함수 / 변환함수 / 기타함수 3. 날짜 함수 현재 시각을 알려주는 함수 HR select sysdate, current_date, localtimestamp, current_timestamp, systimestamp from dual; -- 날짜의 기본적인 표현방식은 RR/MM/DD/이다. -- RR은 00~49SMS 2000~2049 이고, 50~99는 1950~1999이다. HR select * from v$timezone_names; -- 날짜 - 날짜 = 숫자(단위가 일수) HR select sysdate+3 - sysdate from dual; 근무일수를 구해 보자. HR select employee_id, first_name || ' ' || last_name, hire_date, sysdate - hire_date fr.. 더보기
[Day21][Oracle] 날짜함수 / 변환함수 3. 날짜함수 HR select sysdate ,extract(year from sysdate) as "현재년도" ,extract(month from sysdate) as "현재월" ,extract(day from sysdate) as "현재일" from dual; -- 오른쪽 정렬 : 숫자 형태로 나타난다. HR select systimestamp ,extract(hour from systimestamp) as "현재시간" ,extract(minute from systimestamp) as "현재분" ,extract(second from systimestamp) as "현재초" from dual; -- 시간, 분, 초를 구하려면 sysdate가 아닌 systimestamp를 사용해야 한다. -- 우리나.. 더보기
[Day20][Oracle] like / wild character / Data Dictionary / 기타 함수 / 문자 함수 / 숫자 함수 Ⅰ. like 1. like -- '='와 같은 말이다. HR select * from employees where department_id = 80; 또는 HR select * from employees where department_id like 80; -- like 연산자와 함께 사용되어지는 %와 _를 wild character 라고 부른다. -- % : 글자가 있든지 없든지 관계없다. -- _ : 반드시 아무 글자 1개만을 뜻한다. 2. wild character ( %, _ ) HR select employee_id, first_name, last_name, salary from employees where first_name like 'J%' -- employees 테이블에서 first_nam.. 더보기
[Day18][Oracle] 제약조건 / 테이블에 대한 주석 달기 Ⅰ. 제약조건 제약조건이 필요한 이유 -- 쇼핑몰 프로그램을 만들 때 아이디는 중복이 없어야 한다. → 고유한 값만 들어오도록 설정 -- 필수 입력과 선택 입력 → 필수 입력일 때 반드시 값을 입력해야 한다(Not Null) -- 사원 테이블을 만들 때 직급 column은 사장, 팀장, 과장 등만 들어와야 한다. → 고정 값 외 들어오면 안 된다. → 이러한 조건들을 만족하며 테이블을 생성하기 위해 제약조건이 필요하다. 제약조건(Constraint)의 종류 1. Primary key(주키) 제약 2. Unique key 제약 -> 중복된 값은 들어올 수 없다. 3. Foreign key(== Reference key, 참조키) 제약 4. Check 제약 5. Not Null 제약 1. Primary ke.. 더보기