주니어 기초 코딩공부/Database 기초

04장 SELECT로 특정 데이터를 추출하기

jju_developer 2022. 12. 13. 17:18
728x90

안녕하세요 jju_developer 입니다.

 

오늘은 지난시간의 SQL*Plus에 이어서 SELECT로 특정 데이터를 추출하는 방법에 대해 소개하는 시간을 갖겠습니다.

#DATABASE

#Oracle SQL

 

우선 만들어진 표의 이름은 EMP이며, 정보는 다음과 같습니다.

 

✔ WHERE 조건과 비교 연산자

전체를 다 가져오기 보다는 원하는 로우 값을 얻으려면 SELECT문에 WHERE 절만 추가하면 됩니다.

비교 연산자를 통해서 원하는 값만 얻을 수 있습니다.

no 연산자 의미 예제
1 = 같다. SELECT EMPNO, ENAME, SAL FROM EMP
WHERE SAL=3000;
2 > 보다 크다. SELECT EMPNO, ENAME, SAL FROM EMP
WHERE SAL>3000;
3 < 보다 작다. SELECT EMPNO, ENAME, SAL FROM EMP
WHERE SAL<3000;
4 >= 보다 크거나 같다. SELECT EMPNO, ENAME, SAL FROM EMP
WHERE SAL>=3000;
5 <= 보다 작거나 같다. SELECT EMPNO, ENAME, SAL FROM EMP
WHERE SAL<=3000;
6 <>, !=, ^= 다르다. SELECT EMPNO, ENAME, SAL FROM EMP
WHERE SAL<>3000;

예시)

SELECT EMPNO,ENAME, SAL FROM EMP
WHERE SAL != 3000;
--셀러리가 3000이 아닌 값만 가져와라!

 

결과)

 

 

 

 

 

 

 

 

 

 

 

 

✔ 문자 데이터 조회

 SQL에서 문자열이나 날짜는 반드시 작은따옴표('')안에 표시해야 합니다.

※대소문자 필수 구분!

DESC EMP;
SELECT EMPNO, ENAME, SAL
FROM EMP
WHERE ENAME = 'FORD';

이름이 FORD 인 사람을 조회하는 구문입니다.

 

결과)

 

✔ 날짜 데이터 조회

 

✔ 논리 연산자

no 연산자 의미 예제
1 AND 두 가지 조건을 모두 만족해야만 검색할 수 있습니다. SELECT * FROM emp WHERE deptno=10 AND job='MANAGER';
2 OR 두 가지 조건 중에서 한 가지만 만족하더라도 검색할 수 있습니다. SELECT * FROM emp WHERE deptno=10 OR job='MANAGER';
3 NOT 조건에 만족하지 못하는 것만 검색합니다. SELECT * FROM emp WHERE NOT deptno=10;

 

부서 10의 매니저만 추출!
부서 10의 사람들 또는 아무 부서의 모든 매니저 추출

 

 

✔ BETWEEN AND 연산자

셀러리가 2000과 3000사이의 사람 추출

 

✔ IN연산자

동일한 필드가 여러 개의 값 중에 하나인 경우인지를 살펴보기 위해서 비교 연산자와 논리 연산자 OR를 사용하여 복잡하게 쿼리문을 작성하지 않고 IN 연산자를 사용하여 훨씬 간단하게 표현할 수 있습니다.

 

커미션이 300,500,1400인사람 추출

 

커미션이 300,500,1400도 아닌 사람 추출

-> 이거를 WHERE COMM<>300 AND COMM<>500 ABD COMM<>1400 으로도 쓸 수 있습니다.

 

 

✔ LIKE 연산자와 와일드카드

 LIKE 연산자는 검색하고자 하는 값을 정확히 모를 경우에도 검색 가능하도록 하기 위해서 와일드카드와 함께 사용하여 원하는 내용을 검색하도록 합니다.
 LIKE 다음에는 pattern을 기술해야 하는데 pattern에 다음과 같이 두 가지 와일드카드가 사용됩니다.

 

와일드카드의 의미

%  :  문자가 없거나, 하나 이상의 문자가 어떤 값이 와도 상관없다.

_ :  하나의 문자가 어떤 값이 와도 상관없다.

 

SELECT* FROM EMP
WHERE ENAME LIKE 'F%';
--뒤에 무슨 문자가 오던지 간에 이름이 F로 시작하는 애들 찾아

 

 

%A%

-> 앞뒤에 A가 있으면 검색됩니다.

 

언더스코어 A%

-> _뒤에오는 문자가 포함된 이름은 전부 검색 됩니다.

 

 

NULL을 위한 연산자

 어떤 컬럼을 NULL 즉, 모르는 값과 같다(=)라는 것은 의미상으로 말이 되지 않기 때문에 = 대신 IS NULL 연산자를 사용해야 합니다.

커미션이 NULL인 케이스를 쭉 검색

오라클에서 NULL 값을 겁색 하고 싶을때 그냥 WHERE COMM NULL; 이라고 하면 아무것도 검색이 되지 않습니다.

반드시 IS NULL 로 검색하여야 합니다.

 

반대로 NULL 이 아닌 항복만 검색하고 싶을때에는 IS NOT NULL로 변경하시면 됩니다.

 

 

정렬을 위한 ORDER BY절

 정렬이란 크기 순서대로 나열하는 것을 의미한다.
 오름차순(ascending) 정렬 방식
• 작은 것이 위에 출력되고 아래로 갈수록 큰 값이 출력
 내림차순(descending) 정렬 방식
• 큰 값이 위에 출력되고 아래로 갈수록 작은 값이 출력
 로우를 정렬하기 위해서는 SELECT 문에 ORDER BY 절을 추가하고 어떤 컬럼을 기준으로 어떤 정렬을 할 것인지를 결정해야 한다.

SAL가 오름차순으로 정렬됩니다.

 

 

 

 

지금까지 오라클에서 SELECT로 특정 데이터를 추출 하는 방법에 대한 설명이였습니다.

 

궁금하신 점이나 수정사항은 댓글 부탁드립니다.

 

 

감사합니다.

728x90