SELECT : 데이터 조회 시 사용되는 구문
RESULT SET : SELECT 문에 의해 조회된 결과물( 즉, 조회된 행들의 집합을 의미)
[표현법]
SELECT 조회하고자하는 컬럼, 컬럼, ...
FROM 테이블명 ;
SELECT EMP_NAME,EMAIL,PHONE,HIRE_DATE,SALARY
FROM EMPLOYEE;
1. 컬럼값을 통한 산술연산
: SELECT절 컬럼명 작성부분에 산술연산식 기술 가능 ( => 해당컬럼값이 산술연산된 결과로 조회)
예시) EMPLOYEE의 사원명, 급여, 보너스, 연봉(급여*12), 보너스포함된 연봉((급여+ (보너스*급여))*12)
SELECT EMP_NAME,SALARY,BONUS,SALARY*12, (SALARY+SALARY*BONUS)*12
FROM EMPLOYEE;
** DATE 형식끼리도 연산가능
예시 ) EMPLOYEE 의 사원명, 입사일, 근무일수(오늘날짜 - 입사일))
SYSDATE : 오늘날짜(현재 시스템 날짜)
SELECT SYSDATE FROM DUAL; -- 오라클에서 제공하는는 가상테이블(더비테이블)
SELECT EMP_NAME,HIRE_DATE,SYSDATE - HIRE_DATE
FROM EMPLOYEE;
2. 컬럼명에 별칭 정하기
: 조회시 컬럼명 또는 산술식 뒤에 별칭을 부여해서 깔끔하게 조회가능
[표현법] 4가지
컬럼명 별칭 / 컬럼명 AS 별칭 / 컬럼명 "별칭" / 컬럼명 AS "별칭"
**유의사항 : AS가 있던 없던간에 별칭에 띄워쓰기, 특수문자가 포함된 경우 반드시 쌍따옴표로 묶어서 표기
SELECT EMP_NAME 사원명, SALARY AS 급여, SALARY * 12 "연봉(원)" , (SALARY+SALARY*BONUS)*12 AS "총 소득"
FROM EMPLOYEE;
3. 리터럴
임의로 지정한 문자열값(' ')
SELECT 절에 리터럴을 제시하면 마치 테이블상에 존재하는 데이터처럼 조회가능
조회된 RESULT SET의 모든 행에 반복적으로 같이 출력
SELECT EMP_ID, EMP_NAME, SALARY,'원' AS 단위
FROM EMPLOYEE;
4. 연결 연산자( || )
여러 컬럼값들을 마치 하나의 컬럼인 것처럼 연결하거나, 컬럼값과 리터럴을 연결할 수 있음
-> 자바에서의 +와 값은 느낌( System.out.println("num : " + num);
예시)XXX의 월급은 XXXXX원 입니다. 의 형식으로 조회
SELECT EMP_NAME ||'의 월급은 '|| SALARY ||'원 입니다.' AS "급여 정보"
FROM EMPLOYEE;
5. DISTINCT
컬럼에 중복된 값들을 한번식만 조회하고자 할 때 사용
-- 부서코드 조회
SELECT DEPT_CODE
FROM EMPLOYEE; --23개 행 조회
-- 중복제거 조회
SELECT DISTINCT DEPT_CODE
FROM EMPLOYEE; --7개 행 조회
**유의사항 : SELECT 절에 DISTINCT 구문은 딱 한번만 기술 가능
6. WHERE절
: 조회하고자 하는 테이블로 부터 특정 조건에 만족하는 데이터만을 조회하고자 할 때 WHERE절에 조건식을 제시
[표현법]
SELECT 조회하고자하는 컬럼명, 컬럼, 산술연산, AS "별칭", ...
FROM 테이블명
WHERE 조건식;
<비교연산자>
> , < , >= , < = 대소비교
= 같은지 비교
!=, ^=, <> 같지않은지 비교
예시) 부서코드가 'D9'가 아닌 사원들의 사번, 사원명, 부서코드 조회
SELECT EMP_ID,EMP_NAME,DEPT_CODE
FROM EMPLOYEE
--WHERE DEPT_CODE != 'D9';
--WHERE DEPT_CODE ^= 'D9';
WHERE DEPT_CODE <> 'D9'; -- 18명 조회 --> NULL값은 조회안됨
7. 논리연산자
여러개의 조건을 엮어서 제시하고자 할 때 사용
AND ( ~이면서, 그리고)
OR (~이거나, 또는)
예시) 급여가 350만원 이상 600만원 이하를 받는 사원들의 사원명, 급여 조회
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SALARY >= 3500000 AND SALARY<=6000000;
8. BETWEEN AND
몇 이상, 몇이하인 범위에 대한 조건을 제시할 때 사용되는 연산자
[표현법]
비교대상컬럼 BETWEEN 하한값 AND 상한값
예시 1) 급여가 350만원 이상 600만원 이하를 받는 사원들의 사원명, 급여 조회
SELECT EMP_NAME, SALARY
FROM EMPLOYEE
WHERE SALARY BETWEEN 3500000 AND 6000000; --6명 조회
예시2) 급여가 350만원 미만, 600만원 초과를 받는 사원들의 사원명, 급여 조회 (위의 경우와 반대일경우)
SELECT EMP_NAME,SALARY
FROM EMPLOYEE
WHERE NOT SALARY BETWEEN 3500000 AND 6000000;
--WHERE SALARY NOT BETWEEN 3500000 AND 6000000;
** NOT : 논리부정 연산자 (자바에서 !와 같은존재)
컬럼명 앞 또는 BETWEEN 앞에 기입
- DATE 타입끼리도 대소비교 가능
예시) 입사일이 '90/01/01' 이상 '01/01/01' 이하인 사원들 조회
SELECT *
FROM EMPLOYEE
--WHERE HIRE_DATE >= '90/01/01' AND HIRE_DATE <= '01/01/01'; --DATE타입 끼리도 대소비교 연산 가능
WHERE HIRE_DATE BETWEEN '90/01/01' AND '01/01/01';
'ORACLE' 카테고리의 다른 글
ORACLE 02. SELECT(함수) _ 단일행 함수_ 형변환 함수 (0) | 2022.11.16 |
---|---|
ORACLE 02. SELECT(함수) _ 단일행 함수_날짜처리함수 (0) | 2022.11.15 |
ORACLE 02. SELECT(함수) _ 단일행 함수_숫자처리함수 (0) | 2022.11.15 |
ORACLE 02. SELECT(함수) _ 단일행 함수_문자처리함수 (0) | 2022.11.15 |
ORACLE_01. SELECT문(기본문법 2) (0) | 2022.11.15 |