[2023.11.24] 개발자 교육 45일 차 : 강의-오라클 실습 [구디 아카데미]

DaramGee·2023년 11월 24일
0

오늘 정리

조인은? 두 개의 테이블을 서로 묶어서 하나의 결과를 만들어 내는 것을 말한다. 오늘은 그 중 나 자신을 조인하는 self join과 한 테이블에만 데이터가 있을 때 결과를 조회하는 outer join을 학습하였다.

데이터베이스 모델링이란? 주어진 개념으로부터 데이터 모델을 구성하는 작업(테이블 설계, 컬럼, 타입, 관계 정의 등)

복습

[select문]

SELECT 컬럼명 ...함수명(컬럼명)
FROM   집합...(SELECT-인라인뷰)
WHERE  컬럼명 =(상수,SELECT-서브쿼리)->조건검색&조인도 한다.
NOT    컬럼명=AND    컬럼명=(SELECT/교집합->경우의 수, 일 양 감소)
*[OR   컬럼명=(합집합 -> 경우의 수, 일 양 증가->사용 지양)]
GROUP BY    컬럼명(-그룹함수)
[[HAVING]]  
ORDER BY    

*데이터타입에서 고정형 char타입(hello___) 대신 varchar2(hello) 사용을 많이하는 이유와 동일(일의 양)
  • GROUP BY절 : 아래에 여러 개의 조건이 올 수 있음(업무의 복잡도 높을수록 여러 조건을 사용함)
--부서, 직책별 그룹
SELECT deptno AS "부서", JOB, count(JOB) AS "부서|직책 인원", sum(sal) AS "급여 합계"
FROM emp
GROUP BY deptno, JOB
ORDER BY deptno;

강의 내용

[오라클 tip]

sqlplus id/비번@ip:1521/orcl11

[토드 tip]

  • 데이터 내보내기/받기 ****


[프로시저]

  • 프로시저란? 특정 작업을 수행하는 절차를 뜻하며, 그 절차를 기술해 놓은 것.
  • 프로시저 문법
CREATE OR REPLACE PROCEDURE 프로시저 이름
     ( 매개변수명1 [ IN or OUT or INOUT ] 데이터타입,
       매개변수명2 [ IN or OUT or INOUT ] 데이터타입 ... )
IS or AS
       변수, 상수 등 선언 ( 선언부 )
BEGIN
       실행 문장 ( 실행부 )
       EXCEPTION 문장   //필수아님
END ;
  • 프로시저 예시
CREATE OR REPLACE PROCEDURE proc_gugudan(dan IN number)
IS
     n_i number(2);
BEGIN
    n_i :=0;
    dbms_output.put_line(dan||'단을 출력합니다.');
    FOR n_i IN 1..9 LOOP
       dbms_output.put_line(dan||'*'||n_i||'='||(dan*n_i));
    END LOOP; 
END;

//in : 들을 때, out : 내보낼 때, inout : 받고, 보낼 때
//:= 초기화
//좌중괄호 우중괄호 대신 end문을 쓴다. 
  • 프로시저 테스트

    • toad로 테스트

      BEGIN
          proc_gugudan(3);
      END;
      
      --3단을 출력합니다.
      --3*1=3
      --3*2=6
      --3*3=9
      --3*4=12
      --3*5=15
      --3*6=18
      --3*7=21
      --3*8=24
      --3*9=27
    • cmd로 테스트 : 변수 선언, 프로시저 실행 가능

      --프로시저 토드에서 생성 후 
      variable msg varchar2(100); //변수 선언 

💡프로시저랑 함수는 같은가??

프로시저함수
특정 작업을 수행특정 계산을 수행
리턴값 가질수도, 안가질수도 있음리턴값 반드시 가짐
리턴값 여러개 가짐리턴값 하나만 가짐
단독으로 문장 구성 가능(멀티는 cursor사용 필요)단독으로 문장 구성 불가

[JOIN]

  • 2개 이상의 테이블의 결합
  • 집합과 집합은 관계가 있음
    • 1:1

    • 1:n

    • n:n → 업무에 대한 정의가 덜 된 경우로, 조인된 경우 카타시안의 곱이 됨.

       (※ 주의 : ERD를 확인하고 볼 줄 알아야 함. 왜?? 데이터 설계 확인하여 적합한 조인이 가능)

[join의 종류]

  • natural join(=equal join) : 양 쪽에 모두 있는 값
  • non-equal join : ‘같다’로 비교하는 것 외 모든 값
  • self join : 나 자신과 릴레이션이 있고, 관계를 맺어야 할 때
  • outer join : 두 개 이상의 테이블 조인 시 한 쪽 테이블의 행에 대해 다른 쪽 테이블에 일치하는 행이 없더라도 다른 쪽 테이블의 행을 null로 하여 행을 리턴

[join 실습]

  • outer join
--예전에 작성하던 방식

SELECT 
        b.emp_id AS "사번"
        ,b.emp_name AS "성명"
        ,b.salary AS "연봉"
        ,A.from_sal AS "하한"
        ,A.to_sal AS "상한"
        ,b.lev AS "직급"
FROM emp_level A, temp b
WHERE A.lev(+) = b.lev;

outer join

  • self join

self join

Untitled


  • 퀴즈

작업 중 시간이 짧은 순으로 순위를 주어 조회하기(rank 사용 x)


[데이터베이스 모델링]

  • 데이터베이스 모델링이란? 주어진 개념으로부터 데이터 모델을 구성하는 작업(테이블 설계, 컬럼, 타입, 관계 정의 등)
  • 모델링 과정
    • 요구파악 및 개념적 설계 : 데이터 목적 등 고려하여 ERD 작성(빅픽처)
    • 논리적 설계 : 개체(Entity), 속성(Attribute) 등 추가
    • 물리적 설계 : 테이블, 컬럼 & 구체적 타입이 결정
  • 설계 도구 : ERwin → ERD(Entity Relation Diagram) → 관계형태(1:1, 1:n, n:n), 키 확인(PK, FK→관계, 받는 쪽 or 주는 쪽) 등 데이터를 표현
  • 소프트웨어 모델(프로세스)
    • 폭포수 : 일단 Go! 순차적으로 진행하는 기법
    • 애자일모델 : 돌아감!

강의 마무리

  • 조인에 대한 실습, 특정 작업을 수행하는 프로시저에 대한 간단한 실습을 진행하였음.
  • 다른 조인방식에 대한 학습은 다음주 진행 예정

0개의 댓글