SQL Select & 연산자 (2) + 연산자 우선순위
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 |
연산자 우선 순위 및 계산 방향 - 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구문에 대해 알아보았습니다.