[학습 DAY - 8]
- 서브쿼리의 일종인 '상관 서브쿼리'를 EXISTS 술어로 조합시켜 사용 가능
- EXSIST는 단지 반환된 행이 있는지 확인해보고 값이 있으면 참, 없으면 거짓을 반환
- 부모 명령과 자식인 서브쿼리가 특정 고나계를 맺는 것을 상관 서브쿼리라고 부름
- 부모 명령과 연관되어 처리되기 때문에 서브쿼리 부분만을 따로 떼어내어 실행시킬 수 없음
EXISTS
-. 서브쿼리를 사용해 검색할 때, 데이터가 존재하는지 아닌지 판별하기 위해 사용
-. 반환된 행이 있는지 확인해보고 값이 있으면 참, 없으면 거짓을 반환
-. 반대로 NOT EXISTS를 사용하면 반환된 행이 존재하지 않으면 참, 존재하면 거짓을 반환
- 사용 예시
IN
-. 집합 안의 값이 존재하는지 조사
-. 열명 IN(집합), 왼쪽에 지정된 값과 같은 값이 집합 안에 존재하면 차을 반환
-. 값을 여러개 지정할 경우 조건식이 깔끔해짐
- SELECT * FROM sample551 WHERE no IN(3,5);
IN과 NULL
-. IN에서는 집합 안에 NULL 값이 있어도 무시하지 않음
-. IN을 사용해도 NULL 값은 비교할 수 없음
-. NULL 비교 시 IS NULL을 사용해야 함
-. NOT IN의 경우, 집합 안에 NULL 값이 있으면 왼쪽 값이 집합 안에 포함되어 있지 않아도 참을 반환하지 않음. 그 별과는 불명(UNKNOWN)이 됨
데이터베이스 객체란?
-. 테이블이나 뷰, 인덱스 등 데이터베이스 내에 정의하는 모든 것을 일컫는 말
-. 임의의 규칙에 맞게 이름을 붙임 (의미없는 이름을 붙이지 않음)
(기존 이름이나 예약어와 중복 X, 숫자로 시작 X, 언더스코어(_)이외의 기호 사용 X, 한글 사용 시 더블쿼트로 둘러쌈, 시스템이 허용하는 길이를 초과 X)
스키마
-. 스키마가 다르면 객체의 이름이 같아도 상관없다.
-. SQL 명령의 DDL을 이용하여 정의
-. 이름이 충돌하지 않도록 기능하는 그릇은 네임스페이스
라고 부르기도 함