본문 바로가기
국비학원/수업기록

국비 지원 개발자 과정_Day37

by 루팽 2023. 1. 17.

<시험1-SQL응용문제해결시나리오>

계정만 생성하고 접속 권한은 부여해주지 않았다.

GRANT CREATE SESSION TO EMP;

 

 

GROUP BY는 반드시 집계함수, 그룹함수와 함께 사용해야 하고 기준이 된 컬럼 외에는 다른 일반 컬럼을 조회하기 어려운데 EMPNAME은 단일그룹함수가 아니기에 올바른 결과를 표시할 수 없다.

NULL은 !=이 아니라 IS NOT NULL로 표시해야 한다.

BONUS != 'NULL' -> BONUS IS NOT NULL

GROUP BY JOBCODE -> GROUP BY EMPNAME, JOBCODE

 

 

<시험2-SQL응용서술형(신)>

데이터를 처리하기 위한 객체 중 TRIGGER(트리거)란 무엇인지 서술

트리거는 데이터베이스 시스템에서 데이터의 입력, 갱신, 삭제 등의 이벤트가 발생할 때마다 자동적으로 수행되는 사용자 정의 프로시저이다.

 

외래키 제약 조건의 요소 중 ON DELETE SET NULL에 대해 서술

참조되는 부모 테이블 행에 대한 DELETE를 허용한다.

부모 테이블 값이 삭제되면 참조하는 자식 테이블의 값들은 NULL값으로 설정된다.

 

Set Operator 중 UNION에 대하여 서술

각 쿼리의 결과 합을 반환하는 합집합으로 중복을 제거한다.

 

DB에서 사용하는 용어 중, DML이란 무엇인지 서술

데이터 조희 및 변형을 위한 명령어로 SELECT, INSERT, UPDATE, DELETE가 있다.

 

DB에서 사용하는 용어 중, DCL이란 무엇인지 서술

사용자에게 권한 생성 혹은 삭제하는 명령어로 GRANT, REVOKE, COMMIT, ROLLBACK이 있다.

 

제약조건 중 NOT NULL 제약조건에 대해 서술

해당 컬럼에는 반드시 데이터를 입력해야 한다.

 

오라클 DB의 집합 연산자(set operator)의 종류와 특징을 설명

UNION

두 집합을 더해서 결과를 출력하며, 중복 값을 제거하고 정렬한다.

 

UNION ALL

두 집합을 더해서 결과를 출력하며, 중복 값을 제거하지 않고 정렬도 하지 않는다.

 

INTERSECT

두 집합의 교집합 결과를 출력한다.

 

MINUS

두 집합의 차집합 결과를 출력한다.

 

트렌젝션과 commit, rollback에 대해 서술

commit은 모든 작업을 정상적으로 처리하겠다고 확정하는 명령어로, 트랜젝션의 처리과정을 데이터베이스에 반영하기 위해 변경된 내용을 모두 영구 저장한다.

rollback은 트랜젝션의 처리 과정에서 발생한 변경사항을 취소시켜, 트랜젝션으로 인한 하나의 묶음 처리가 시작되기 이전의 상태로 되돌린다.

 


 

모니터의 화면 사이즈(window.screen)

window.screen.width window.screen.height

 

브라우저의 사이즈(window.innerXXX)

스크롤바 등 ui 모두 포함

window.innerWidth window.innerHeight

 

내장객체

내장되어 있다 → 인스턴스화 없이 바로 사용 가능하다

 

<!DOCTYPE html>
<!-- 선언문 html -->
<html lang="ko">
  <head>
    <meta charset="UTF-8" />
    <!-- UTF-8 전세계 표준 포맷 -->
    <!-- explorer에 여러 버전, 낮은 버전이 동작될 때 최신 익스플로러로 랜더링해줌 -->
    <!-- edge버전부터 크롬 V8엔진 사용 -->
    <meta http-equiv="X-UA-Compatible" content="IE=edge" />
    <!-- viewport가 있어야 모바일 디바이스가 모바일 페이지를 제대로 출력 -->
    <!-- 하이브리드앱 = 네이티브앱 + 웹앱 -->
    <!-- 요소 = 태그, 노드, 엘리먼트 -->
    <!-- 1) 인라인 요소: 크기 없음, 자동줄바꿈 없음(줄바꿈하려면 <br /> -> <br>쓰면 리액트에서 안됨) -->
    <!-- 2) 블록 요소: 자체 크기를 가짐, 자동으로 줄바꿈 -->
    <meta name="viewport" content="width=device-width, initial-scale=1.0" />
    <title>윈도우 사이즈</title>
    <style>
      .tag {
        display: inline-block; /* 컨텐츠를 감싸준다 */
        background-color: aquamarine;
        font-size: 48px;
        padding: 16px; /* 상하좌우 패딩이 16px */
        margin-top: 16px;
        margin-bottom: 30px;
      }
      div {
        width: 200px;
        height: 200px;
        background-color: blueviolet;
        border: 2px solid black;
      }
    </style>
  </head>
  <body>
    <div class="tag">윈도우 사이즈</div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <div></div>
    <script>
      // arrow function
      // window.addEventListener("resize", () => {
      // arrow 안쓴 옛날방식
      window.addEventListener("resize", function () {
        // screen은 모니터의 화면 크기이다
        console.log(
          `window.screen : ${window.screen.width}, ${window.screen.height}`
        );
        // url(주소창)과 탭(세션아이디를 쿠기에 저장)이 포함된 전체적인 브라우저 크기
        console.log(
          `window.outer : ${window.outerWidth}, ${window.outerHeight}`
        );
        // 웹페이지+스크롤바의 크기
        console.log(
          `window.inner : ${window.innerWidth}, ${window.innerHeight}`
        );
        // 스크롤바를 제외한 문서만의 크기
        console.log(
          `document : ${document.documentElement.clientWidth}, ${document.documentElement.clientHeight}`
        );
      }); /* 자바 람다식이 이런 형식 지원 */
    </script>
  </body>
</html>

 

댓글