SQL Operator
종류 |
예 |
+ |
SELECT 칼럼명 + comm FROM 테이블 명 |
- |
SELECT 칼럼명 - 100 FROM 테이블 명 |
* |
SELECT 칼럼명 *12 FROM 테이블 명 |
/ |
SELECT 칼럼명 / 12 FROM 테이블 명 |
계속 사용해오던 아이유와 삼도다의 정보가 들어있는 테이블을 사용한다.
SAL 칼럼에 * 연산자를 사용하였다.
SQL> SELECT 칼러명, 칼럼명, 칼럼명*12 FROM 테이블명;
이렇게 유저의 이름과, 급여, 그리고 급여에 *12를 하여 연봉을 확인 할 수 있다.
NULL도 데이터이다.
오라클에서의 NULL은 매우 중요한 데이터 이다.
오라클에서는 컬럼에 NULL값이 저장 되는 것을 허용 하는데, NULL 값을 제대로 이해하지 못한 채 쿼리문을 사용하면 원하지 않는 결과를 얻을 수 있다.
NULL은
● 0이 아니다.
● 빈 공간도 아니다
● 미확정, 알 수 없는 값을 의미한다
● 어떤 값인지 알 수 없지만, 어떤 값이 존재하고 있다.
● ? 또는 ∞의 의미도 포함하고 있다
● 연산, 할당, 비교가 불가능하다. / 100 + ? = ?
예시
현재 테이블
아이유는 월급 (SAL)으로 5000을 받고, 커미션(COMM)으로 500, 삼도다는 월급으로 100을 받으며 커미션에는 NULL 값이 들어 가있다.
만약, 연봉으로 계산을 한다면 아이유는 5000*12 그리고 커미션으로 받는 500을 더 해주면 되며,
삼도다는 100*12 그리고 커미션이 없다면 +0 을 하면 된다.
삼도다의 커미션(COMM)에 0이 아닌 NULL이 들어가 있기 때문에, 월급*12+커미션을 하게 되면, NULL 나오는 것을 확인 할 수 있다.
이렇듯 0과 NULL은 다른 것을 확인 할 수 있다.
그렇다면 삼도다의 연봉을 제대로 구할 방법은 없을까?
nvl(null value 함수)를 사용하면 된다.
sal*12+comm : 삼도다의 값이 NULL이 나오는 것을 확인 했고
nvl(comm,0) : comm이라는 칼럼이 null 이면 이 값을 0으로 넣어라,
sal*12+nvl(comm,0) : 제대로 된 연봉이 나오는 것을 확인 할 수 있다.
연봉을 계산한 SAL*12+NVL(COMM,0) 칼럼이름 대신 별칭을 부여하여 ( as 별칭명) 기술 할 수 있다.
대소문자를 구분하여 넣고 싶을 때는 ""을 사용하면 된다. (as "AnnSal")
Concatenation 연산자의 정의와 사용
Concatenationd의 사전적인 의미는 연결
여러개의 컬럼을 연결할 때 사용, ||를 사용
이상한 문장이 되었지만 어떤 느낌인지만 이해하면 된다.
DISTINCT 키워드
현재 테이블에서는 아이유와 삼도다가 다른 부서(DEPT)에 속해 있다.
하지만 많은 데이터들이 저장되고, 중복되는 부서들이 생길 것이다.
여기서 부서명만 얻기 위한 목적이라면 중복되어 출력되는 것은 의미가 없다.
중복되는 부서 번호를 한 번씩만 출력하기 위해서 DISTINCT 키워드를 사용한다.
'레알'이 한번만 출력 된 것을 볼 수 있다.
'DATABASE > ORACLE' 카테고리의 다른 글
[Oracle] SQL 논리 연산자 / Between in (0) | 2018.04.19 |
---|---|
[Oracle] SQL where query (SQL 조건연산자) (1) | 2018.04.19 |
[Oracle] 데이터를 조회하기 위한 SELECT 문 (2) | 2018.04.18 |
[Oracle] 오라클의 데이터 형 (1) | 2018.04.18 |
[Oracle] SQL 테이블 생성 (1) | 2018.04.18 |