sqld 준비 (8)

Spirit Lab·2025년 5월 30일


GRANT : 권한 부여

REVOKE : 권한 회수

난 처음에 update만 권한 주면 되는건데 1번은 어느 DB읽어올 권한 주는지가 없고
4번은 select가 껴있어서 고민했음
근데 답은 4고 이유는 where절을 읽어올 때 select가 필요하기 때문에 답이었음

UNION과 UNION ALL 구를 사용할 때 합치는 칼럼의 갯수와 타입이 일치해야함.

해설 : TEST38 테이블은 기본키(Primary Key) 가 KEY1번과 KEY2번으로 이루어져 있다. 따라서 UNIQUE INDEX SCAN을 하려면 KEY1번과 KEY2번 모두 사용되어야 한다. 따라서 4번의 경우 KEY1번만 사용되었기 때문에 UNIQUE SCAN이 되지 않는다.

일단 3번에 IN조건부에 괄호가 두개인 이유는 IN을 받는 괄호하나 그리고 안에 쌍으로 된 튜플을 넣어야해서 임
UNIQUE INDEX SCAN이란 KEY의 값을 모두 할당해주어야하는것이다.
UNIQUE INDEX란 절대 겹치지 않는 기준 (학번, 주민등록번호)
UNIQUE INDEX SCAN이란 그 하나의 값을 정확히 빠르게 찾는 방법


  • FIRST_VALUE - 파티션에서 가장 처음에 나오는 값을 구한다.
  • MIN 함수를 사용해서 같은 결과를 구할 수 있다.
    LASt_VALUE - 파티션에서 가장 나중에 나오는 값을 구한다.
  • MAX 함수를 사용해서 같은 결과를 구할 수 있다.
    LAG - 이전에 행을 가지고 온다.
    LEAD - 윈도우에서 특정 위치의 행을 가지고 온다, 기본 값은 1이다.

ORDER BY 3 의 경우 SELECT절 칼럼이 2개이기 때문에 안됨

원자성 (Atomicity) 트랜잭션이 DB에 모두 반영되거나, 혹은 전혀 반영되지 않아야 한다. (All or Nothing)

일관성 (Consistency) 트랜잭션의 작업 처리 결과는 항상 일관성이 있어야 한다.

고립성 (Isolation) 둘 이상의 트랜잭션이 동시에 병행 실행되고 있을 때, 어떤 트랜잭션도 다른 트랜잭션 연산에 끼어들 수 없다.

지속성 (Durability) 트랜잭션이 성공적으로 완료되었으면, 결과는 영구적으로 반영되어야 한다.

해설 : NATURAL JOIN의 경우 WHERE절에서 JOIN조건을 추가할 수 없지만 CROSS JOIN의 경우 WHERE절에 JOIN조건을 추가할 수 있다. 그러나 이 경우는 CROSS JOIN이 아니라 INNER JOIN과 같은 결과를 얻기 때문에 CROSS JOIN을 사용하는 의미가 없어지므로 권고하지 않는다.

CROSS JOIN

  • 상호 조인이라고도 불리며, 한 쪽 테이블의 모든 행들과 다른 테이블의 모든 행을 조인시키는 기능을 한다.
  • 이러한 CROSS JOIN을 카테시안 곱 (Cartesian Product)라고도 한다.

NATURAL JOIN

  • 동일한 타입과 이름을 가진 컬럼을 조인 조건으로 이용하는 조인을 간단히 표현하는 방법이다.
  • NATURAL JOIN은 두 테이블의 동일한 이름을 가지는 칼럼이 모두 조인된다.
  • 동일한 칼럼을 내부적으로 찾게 되므로 테이블 별칭(Alias)을 주면 오류가 발생한다.

*NATURAL JOIN 에 테이블 별칭을 쓰면 오류나는 이유? : alias는 서로 다른 relation 간에 같은 column이 있을 때 서로를 구분하기 위한 목적으로 사용되는데, natural join은 두 테이블의 동일한 이름의 column을 모두 합쳐버리므로 join 후의 relation에는 같은 이름의 column이 있을 수 없기 때문이다.
A칼럼을 foo 라고 놓고
또다른 A칼럼을 boo라고 놨을때 NATURAL JOIN으로 A칼럼 두개를 합쳐서 하나의 A칼럼으로 만들었다고 하면 이건 foo라고 불러야할까 boo라고 불러야할까 오류가 발생하는 이유는 바로 이것이다.

profile
For the champagne

0개의 댓글