안녕하세요, (6)번까지 따라오시느라 수고 많으셨습니다.
본격적으로 재미가 붙어가는데요, 오늘도 SCOTT 계정의 테이블들에 새로운 명령어들을 적용해보겠습니다.
먼저 IN 연산자입니다
IN 연산자는 말 그대로 어디 안에 있는 이라는 말입니다. WHERE 조건식에서 여러가지 조건들을 OR을 사용해서 적용하는 방법을 배웠는데요, 여러가지 조건식을 하나의 식으로 간략화가 가능해 집니다. 예를 들어보겠습니다.
SELECT *
FROM EMP
WHERE JOB = 'MANAGER'
OR JOB = 'SALESMAN'
OR JOB = 'CLERK'
위와 같이 EMP 테이블 안에서 필드 JOB이 3개의 조건식을 만족하는 경우를 조회할수 있습니다. 하지만 IN을 사용하면 간단해지는데요,
SELECT *
FROM EMP
WHERE JOB IN ( 'MANAGER', 'CLERK', 'SALESMAN' )
이해가 쉽게 되시는지요? 그러면 다음은 NOT을 배워보겠습니다.
NOT은 말그대로 부정입니다. 위의 예제에 적용해보면, NOT IN 과 같은 형태로 사용할 수 있겠죠.
위와 같이 JOB 필드에는 명시한 직업들이 들어 있지 않은 것을 확인할 수 있습니다.
다음은 BEWEEN A AND B 문을 배워보겠습니다. 모두가 들어보았을 표현이죠, A와 B 사이. 명령어로 사용하게 되면 저희의 예시에서는 SAL 값을 2000 과 3000 사이로 설정해 볼 수 있겠네요.
마찬가지로 BETWEEM 대신 WHERE 를 두번 사용하는 논리연산으로도 조회가 가능합니다. 하지만 BETWEEN이 훨씬 가독성이 높고 코드 줄이 짧아짐으로 더 좋은 방법입니다.
염두해 두셔야 하는 사항으로는 BETWEEN은 A 이상 B 이하로 양쪽 기준치를 포함합니다.
또 한발자국 더 나아가보면, 앞서 말씀드린 NOT도 활용해볼 수 있겠죠?
WHERE SAL NOT BETWEEN 2000 AND 3000; 과 같이 말이죠.
다음은 LIKE와 와일드카드라는 것을 배워보겠습니다.
LIKE는 단어의 의미와 마찬가지로, 어떠한 형태를 취하는 것을 조회한다는 것을 의미합니다. 즉, ~~ 모양인 것. 이런 뜻입니다.
와일드카드는 _ 와 % 입니다.
쌩뚱맞은데요, 더 설명드리면 SQL 에 약속되어 있는 의미를 갖고 있는 표현으로 보시면 되겠습니다.
_ 는 어떤 값이든 상관없이 하나의 문자 데이터를 의미합니다.
%는 길이와 상관없이 모든 문자 데이터를 의미합니다.(공백 포함)
아직도 어려우시다고요? 예를 들어보겠습니다.
WHERE ENAME LIKE '_L%';
위의 조건이 무슨 뜻일까요?
ENAME 속성에서 '_L%' 모양인 것 이라는 뜻인데요, 그러면 모양을 저희가 해석만 하면 되겠습니다.
_는 아무 문자입니다. 즉 두번째에 L문자가 오고 처음에는 어떤 문자든 오는 모양이고 뒤에는 어떠한 문자의 길이가 이어지는 것을 의미합니다. 예를 들면 RLUUUUUUUU 의 경우가 해당되겠네요. 실제로 조회흫 해볼까요?
위 예시를 보면 ENAME 필드에 형태가 저희가 설정한 조건을 따르는 것을 알 수 있습니다. 그러면 이어지는 명령어 ESCAPE을 설명하겠습니다. 예를 들면 저희의 데이터 형태가 XXX_20204766 과 같을 수가 있겠죠?
그러면 와일드카드로 약속되어 있는 문자가 들어가 있어 컴퓨터가 해석이 달라지게 됩니다. 이러한 경우에는 _ 값을 문자 그대로로 이해해 주기를 설정해주어야 합나다. 이런 경우 사용되는 명령어가 ESCAPE입니다. 즉, 잠깐 벗어나서 라는 의미죠. 사용법은 아래와 같습니다.
WHERE ENAME LIKE '%\_%' ESCAPE '\';
조금 복잡해 보입니다. 하나씩 풀어서보면 저희가 설정한 모양은 쭉 이어진 문자열 그리고 _ 그리고 다시 문자열입니다. 다만 _ 앞에 \가 붙어있네요. 그리고 뒤에 ESCAPE 문과 다시 \. 즉, \ 라는 접두가 붙어 있게 되면 해당 와일드카드를 문자로 받아들이라는 것입니다. 꼭 \ 형태를 따라야 할 필요는 없습니다. ~ 도 가능하며 그것을 ESCAPE 뒤에 설정해주는거죠.
마지막 IS NULL 입니다. 앞서서 NULL이라는 것은 공백 값임을 말했습니다. 즉 비어있는 레코드 인거죠. 중요한 점으로 이 NULL 값은 우주같은 값입니다. 무엇을 해도 다시 NULL일 뿐이죠. 그렇기에 논리 연산의 조건으로 실행하게 되면 오류가 납니다.
예를 들어 WHERE COMM = NULL; 과 같이 조건을 걸게되면 공란으로 조회가 됩니다. 그렇기에 생성되어 있는 명령어가 IS NULL 입니다. WHERE COMM IS NULL; 이라는 형태로 되는 거죠. 한번 조회를 해 볼까요?
거꾸로 NULL 값을 제외하고 싶은 경우에는 어떻게 해야할까요?
WHERE COMM IS NOT NULL; 으로 표현 됩니다. 이제 조금씩 문법 체계가 보이시나요?
'Programming > 데이터베이스 \ 오라클' 카테고리의 다른 글
[docker] docker run oracle (0) | 2023.04.25 |
---|---|
오라클 데이터베이스 입문 (6) : SCOTT 계정 활용, DISTINCT, ALL, 별칭 AS, ORDER BY, WHERE, AND, OR, 논리연산자 (0) | 2022.08.02 |
오라클 데이터베이스 입문 (5) : SQL Developer 사용 (0) | 2022.07.28 |
오라클 데이터베이스 입문 (4) : DBA 접속, 계정 생성 (0) | 2022.07.25 |
오라클 데이터베이스 입문 (3) : 오라클 설치, 오라클 11g(11.2) 버전 설치, 오라클 과거 버전 다운로드 (1) | 2022.07.24 |
댓글