프로그래밍/SQL

SQL-3) Query 조건절

LeeSeunghyuk 2020. 10. 20. 17:23
반응형

안녕하세요 이승혁입니다.

 

오늘은 조건절과 연산자에 대한 간단한 실습을 진행하겠습니다.

 

실습 진행 전 cmd 창 조절 명령어 lines, page를 실행하고 진행하겠습니다.

 

set lines : cmd 창 출력 화면 가로 너비 조절

set pages : cmd 창 출력 화면 세로 너비 조절

 

< set lines > 

set lines 설정 전
set lines 설정 후

 

< set pages > 

set pages 설정 전
set pages 설정 후

 

결과가 다양하고 양이 많을수록 한눈에 보기 편해야 한다고 생각합니다.

위 명령어로 간단하게 출력 화면의 너비를 조절하고 실습을 진행합니다!

 

※ SQL 연산자

 

  1. 산술 연산자 : *, /, +, -

  2. 비교 연산자 : > , < , >=, <=, =, !=, <>, ^=

  3. 논리 연산자 : and, or, not

 

실습 1. 이름, 월급, 월급+300*2 출력해보기

select ename,sal,sal+300*2
from emp;

 

실습 2. 덧셈 먼저 계산하여 출력해보기

select ename, sal, (sal+300)*2
from emp;

 

※ 비교연산자와 조건절

 

비교 연산자는 조건절(where절)에 기술하여 작성합니다.

# sal = 3000인 사원의 이름과, 월급을 나타낸다.

select ename,sal    # 컬럼명      
from emp            # 테이블명      
where sal = 3000;   # 검색 조건

실습 3. 이름이 SCOTT인 사원 이름, 월급, 직업 출력해보기

select ename,sal,job
from emp        
where ename = 'SCOTT';

실습 4. 직업이 SALESMAN인 사원의 이름, 직업 출력해보기

select ename,job
from emp
where job ='SALESMAN';

실습 6. 직업이 SALESMAN이 아닌 사원의 이름, 직업 출력해보기

select ename,job
from emp
where job !='SALESMAN';

 

실습 6. 입사일이 81년 11월 17일인 사원의 이름과 입사일을 출력해보기

select ename, hiredate
from emp
where hiredate = '81/11/17'

 

 

※ 풀이 : 1. 데이터는 대소문자를 구분합니다.

               테이블의 데이터가 대문자일 경우 검색 조건도 위와 같이 대문자로 작성해야 합니다.

            2. 숫자와 달리 문자와 날짜는 양쪽에 싱글 쿼테이션( ' ) 마크를 둘러줘야 합니다.

 

- 기타 비교 연산자

1. between A and B :  A 와 B의 값 사이에 해당되는 값들을 선택

2. like  : 영어로 쓰일 때 '~처럼'과 같이 SQL에서도 첫 글자가 '○로 시작할 것 같은'으로 사용된다.

3. in : 해당 리스트 안에 해당하는 조건과 일치하는 행을 찾아낸다.

4. is null : 직관적으로 알 수 있듯 해당 칼럼이 null인 조건이다.

 

※ like 연산자와 함께 쓰이는 옵션

1. % :  이 자리에 문자의 개수, 종류는 관계 없다. 특정 문자 여러 개를 대체할 수 있습니다.

2.  _ :  이 자리에 문자가 1개, 종류는 관계 없다. 특정 문자 1개를 대체합니다.

3. escape : %와 _를 특수문자로 인식하게 하는 키워드.

 

실습 7. 11일에 입사한 사원을 출력해보기

select ename,hiredate
from emp
where hiredate like '%11';

앞에 몇 개의 문자가 오던지 마지막 두 자리의 문자가 11인 행을 출력합니다.

실습 8. 81년도에 입사한 사원을 출력해보기

select ename,hiredate
from emp
where hiredate like '81%';

이전 실습과 반대로 HIREDATE가 81로 시작하는 행을 모두 출력합니다.

실습 9. 이름의 두 번째 철자가 'M'인 사원의 이름을 출력해보기

select ename
from emp
where ename like '_M%';

'_M%' -> 첫 문자는 무엇이든 상관이 없고, 두 번째 문자는 M, 나머지 뒤에는 몇 개의 문자가 오던 상관이 없다는 뜻 

실습 10. 이름의 세 번째 철자가 'L'인 사원의 이름 출력해보기

select ename
from emp
where ename like '__L%';

실습 11. escape 사용해보기 , 이름의 두 번째 문자가 % 인 행 출력해보기

실습에 사용할 데이터를 insert하겠습니다.

Insert into emp(empno,ename,sal)
values(2929,'A%B',3000); 
values(2929,'A%%B',3400);
select ename
from emp
where ename like '_m%%' escape 'm';

조건절 뒤 escape 'm'을 추가로 작성해주어 문자 'm' 뒤의 % 는 특수문자 % 임을 나타냅니다.

 

실습 12. between and 사용해보기, 1981년도에 입사한 사원들의 이름과 입사일을 출력해보기

select ename,hiredate
from emp
where hiredate between '81/01/01' and '81/12/31';

between 명령어를 사용해 HIREDATE의 수치가 81/01/01 , 81/12/31 사이인 조건에 맞는 행들을 출력합니다.

숫자형 역시 between 1000 and 3000과 같은 코드로 작성이 가능하며,

or 연산자를 사용해 1000> sal or sal <3000과 같은 코드로도 같은 결과를 나타냅니다.

 

실습 13. in 사용해보기, 사원번호가 7902,7369,7788인 사원들 출력해보기

select empno,ename
from emp  
where empno in (7788,7902,7369);
# where empno=7788 or empno=7902 or empno=7369;

주석 처리된 코드로도 같은 결과를 확인할 수 있지만 in 연산자를 사용해 훨씬 간단하게 나타낼 수 있습니다.

문자형을 사용할 때는 where job in ('SALESMAN', 'ANALYST')와 같이 나타낼 수 있습니다.

 

실습 14. is null 사용해보기, comm이 null인 사원 출력하기

select ename, comm
from emp
where comm is NULL;

반대로 NULL이 아닌 사원을 확인할 때는 is not NULL 연산자를 사용합니다.

select ename,comm
from emp
where comm is not null;

이번 포스팅에서는 Query문을 사용해 데이터를 검색할 때 조건을 사용해

특정 조건에 해당하는 행들을 출력하는 방법을 공부했습니다.

 

다음 포스팅에는 해당 출력된 결과를 정렬하고, 데이터들을 가공할 수 있는 sql 함수들을 사용해보겠습니다.

읽어주셔서 감사합니다.

반응형

'프로그래밍 > SQL' 카테고리의 다른 글

SQL-9) group by, having , 함수(function) - 5  (0) 2020.10.27
SQL-8) 함수(function) - 4  (2) 2020.10.26
SQL-7) 함수(function) - 3  (0) 2020.10.25
SQL-6) 함수(function) - 2  (0) 2020.10.23
SQL-5) SQL Developer install  (0) 2020.10.23
SQL-4) Order 절, 함수(function)  (0) 2020.10.22
SQL-2) Query  (0) 2020.10.19
SQL-1) Oracle DB install  (9) 2020.10.19