Data Base_Oracle/SQL

SQL Select & 연산자 (2) + 연산자 우선순위

pathas 2019. 12. 31. 21:35

like 연산자

  • % : 찾는 문자열의 길이가 정해져 있지 않은 경우
  • _ : 찾는 문자열의 길이를 한 칸 단위로 지정함

  ※ 문자의 앞 뒤 어디에나 사용할 수 있음

 

▶ 사원명이 A로 시작하는 사원의 이름과 급여를 emp테이블에서 출력
SQL> select ename,sal from emp where ename like 'A%';

ENAME SAL
ALLEN 1600
ADAMS 1100

=> select ename,sal from emp where ename like 'A____';과 같은 결과
but, 이름의 길이가 다른 사람들은 찾지 못함

 

▶ 사원명이 A로 시작하지 않는 사원의 이름과 급여를 emp테이블에서 출력
SQL> select ename,sal from emp where ename not like 'A%';

ENAME SAL
SMITH 800
WARD 1250

in 범위연산자

  • A in (a, b, c) : 괄호 안에 해당하는 값들을 A필드에서 조회, [A = a or A = b or A = c]와 동일
  • A not in (a, b, c) : 괄호 안에 해당하지 않는 값들을 A칼럼에서 조회

▶ 사원번호가 7782, 7788, 7844 인 직원들의 사원번호 급여, 연봉을 emp테이블에서 검색
SQL> select empno,sal 급여, sal * 12 연봉
2 from emp
3 where empno in (7782, 7788, 7844)

empno 급여 연봉
7782 2450 29400
7788 3000 36000
7844 1500 18000

Null

  • null : 값이 들어가 있지 않은 상태, 
  • not null : 반드시 데이터가 들어가 있는 상태
  • ※ null 조건으로 검색을 할 때에는 = 이 아니라 is 를 사용!!
  • '(빈문자열)' : 데이터 저장은 되지만 표시만 되지 않는 값

▶ emp테이블에서 comm 값이 없는 직원들의 sal과 comm을 조회
SQL> select sal, comm from emp where comm is null;

SAL COMM
800 ...
2975 ...
... ...

※ 데이터가 없는 것과 값이 0인 것은 다르기 때문에 값이 0인 경우에는 0을 입력하는 것이 좋음

 

▶ emp테이블에서 comm 값이 있는 직원들의 sal과 comm을 조회
SQL> select sal, comm from emp where comm is not null;

SAL COMM
1600 300
2975 500
1250 1400
1500 0

※ 0이라는 값이 있는 것이기 때문에 조회가 됨

연산자 우선순위

연산자 기호 연산 유형 계산 방향
() L -> R
-, !, ~ 단항 연산자 L <- R
casts 단항 연산자 L <- R
* , /, % 곱셈 L -> R
+, - 가산적 L -> R
<, >, <=, >= 관계형 L -> R
==, != 등호 L -> R
& 비트 AND L -> R
^ 배타적 비트 OR L -> R
| 포괄적 비트 OR L -> R
&& 논리적 AND L -> R
|| 논리적 OR L -> R
?으로 디코딩된 문자입니다. 조건식 L <- R

※ 출처 : https://docs.microsoft.com/ko-kr/sql/integration-services/expressions/operator-precedence-and-associativity?view=sql-server-ver15

 

연산자 우선 순위 및 계산 방향 - SQL Server Integration Services (SSIS)

연산자 우선 순위 및 계산 방향Operator Precedence and Associativity 이 문서의 내용 --> 적용 대상: SQL Server(Linux용 포함) Azure SQL Database Azure Synapse Analytics(SQL DW) 병렬 데이터 웨어하우스APPLIES TO: SQL Server, including on Linux Azure SQL Database Azure Synapse Analytics (SQL DW) P

docs.microsoft.com

▶ emp테이블에서 직책이 PRESIDENT이거나 SALESMAN 이고 급여가 1500이상인
직원들의 사원번호, 이름, 직책, 급여 순으로 조회
SQL> select empno, ename, job, sal
2 from emp
3 where (job='PRESIDENT' or job='SALESMAN') and sal >= 1500;

EMPNO ENAME JOB SAL
7499 ALLEN SALESMAN 1600
7839 KING PRESIDENT 5000
7844 TURNER SALESMAN 1500

※ 위와 같은 문제는 해석에 따라 풀이가 달라질 수 있기 때문에 문제에서 요구사항은 정확해야 함


여기까지 해서 연산자와 select구문에 대해 알아보았습니다.