Data Base_Oracle/SQL

SQL Select & 연산자 (1)

pathas 2019. 12. 31. 21:25

연산자를 활용한 검색

* 곱셈 연산자

▷ 형식) SQL> select 필드명 연산자 숫자 from 테이블명;
▶ emp테이블에서 sal칼럼에 12를 곱하고,
별칭을 "급 여"로 지정한 후, 이름, 업무, 급여 순으로 검색
SQL> select ename,job,sal as "급 여",sal * 12 연봉 from emp;

ENAME JOB 급 여 연봉
SMITH CLERK 800 9600
ALLEN SALESMAN 1600 19200
... ... ... ...

=> sal 칼럼 각각의 레코드에 12를 곱한 값들이 별칭 '연봉' 칼럼에 계산되서 표출됨

|| 문자열 결합 연산자

▷ 형식) SQL> select 필드명 || 필드명 from 테이블명;
▶ emp테이블에서 ename과 job의 문자열들을 결합한 후 "사원이름 업무" 별칭 필드로 출력
SQL> select ename || job as "사원이름 직원" from emp;

사원이름 직원
SMITHCLERK
ALLENSALESMAN
...

레코드 사이에 공백 만들기

▷ 형식) SQL> select 필드명 || '(공백)' || 필드명 from 테이블명;
▶ emp테이블에서 ename과 job을 한칸 띄워서 결합한 후 "사원이름 업무"별칭으로 출력
SQL> select ename || ' ' || job as "사원이름 직원" from emp;

사원이름 직원
SMITH CLERK
ALLEN SALESMAN
...

관계연산자

  • 대소 : >, >=, <, <=
  • 등 : =
  • 부등 : !=, ^=, < >

where 조건식을 사용한 조회 - 부등

▷ 형식) SQL> select 검색할 필드명(=컬럼명),,,( * )
from 테이블명,,,,
where 조건식(검색할 필드명 연산자 검색할 값);
▶ 연봉이 3000 이상인 직원의 이름, 업무, 연봉을 emp테이블에서 출력
SQL> select ename, job, sal from emp where sal>=3000;

ENAME JOB SAL
SCOTT ANALYST 3000
KING PRESIDENT 5000
FORD ANALYST 3000

where 조건식을 사용한 조회 - 등

▶ 업무가 'Manager'인 직원의 사원번호, 이름, 업무를 emp테이블에서 출력
SQL> select empno, ename, job from emp where job='Manager';
=> "선택된 레코드가 없습니다."
▶▶ 업무가 'MANAGER'인 직원의 사원번호, 이름, 업무를 emp테이블에서 출력
SQL> select empno, ename, job from emp where job='MANAGER';

EMPNO ENAME JOB
7566 JONES MANAGER
7698 BLAKE MANAGER
7782 CLARK MANAGER

※ 대소문자를 구분하기 때문에 정확히 맞춰서 써야함

논리연산자

  • A and B : A 조건과 B조건을 동시에 만족하는 값들을 표출
  • A or B : A조건이나 B조건 중 하나라도 만족하는 값들을 전부 표출
    ※ and 와 or이 같이 나오면 and가 먼저 계산됨
    A or B and C => A or (B and C)

숫자형 범위연산자

  • between A and B : A이상 B이하의 값들을 선택, A - 작은 값, B - 큰 값
  • not between A and B : A미만 B초과의 값들을 선택

▶ 연봉이 1300 이상 1800 이하인 직원의 이름, 업무, 연봉을 emp테이블에서 조회
SQL> select ename, job, sal from emp where sal between 1300 and 1800;
(= SQL> select ename, job, sal from emp where sal>=1300 and sal<=1800;)

ENAME JOB SAL
ALLEN SALESMAN 1600
TURNER SALESMAN 1500
MILLER CLERK 1300

▶ 연봉이 1300 미만 1800 초과인 직원의 이름, 업무, 연봉을 emp테이블에서 조회
SQL> select ename, job, sal from emp where sal not between 1300 and 1800;
( = SQL> select ename, job, sal from emp where sal<1300 or sal>1800;)

ENAME JOB SAL
SMITH CLERK 800
WARD SALESMAN 1250
... ... ...

다양한 연산자들을 select 구문과 함께 다뤄보았습니다.