/* SELECT 컬럼, 컬럼 ...
FROM 테이블명
WHRER 조건 // 조건, AND, OR로 연결
ORDER BY 컬럼; //정렬
- 데이터를 조회할 때 사용하는 구문
- SELECT 구문을 통해 조회된 결과물을 RESULT SET이라고 함(조회된 행들의 집합)
- 조회하고자 하는 컬럼은 반드시 테이블에 존재하는 컬럼이어야 함
*/
-- 테이블의 전체 컬럼, 전체 레코드를 조회
SELECT *
FROM employees;
-- EMPLOYEES 테이블에서 전체 사원의 사번, 이름, 월급을 조회
SELECT employee_id, emp_name, salary
FROM employees;
/*
<컬럼값을 통한 산술 연산>
SELECT절에 컬럼명 입력부분에서 산술 연산을 이요한 결과를 조회할 수 있다.
*/
--직원의 연봉 구하기
SELECT emp_name,salary 월급여,salary*12 연봉
FROM employees;
/*
<컬럼에 별칭 지정하기>
컬럼명 AS 별칭 or 컬럼명 별칭 or 컬럼명 "별칭" or 컬럼명 AS "별칭"
- 산술 연산시 컬럼명이 질어지고 지저분해지므로 컬럼명에 별칭을 붙여서 깔끔하게 처리
- 별칭 붙일때 띄어쓰기 또는 특수문자가 포함될경우 쌍따옴표로("") 묶어줌
*/
-- 산술연산중 null값이 존재할 경우 산술연산의 결과는 null
-- 연봉(급여+(급여*보너스))*12
SELECT emp_name,salary 월급여,salary*12 연봉,(salary*commission_pct) AS"보너스"
FROM employees;
-- EMPLOYEE 테이블에서 직원명, 입사일, 근무일수(오늘 날짜-입사일)
-- DATE형식끼리도 연산이 가능, SYSDATE는 현재 날짜를 출력
SELECT sysdate
FROM dual;
SELECT emp_name, hire_date, FLOOR(sysdate-hire_date)
FROM employees;
/*
<DISTINCT>
컬럼에 포함된 값 중 중복된 값을 제거함
SELECT절에 한번만 기술 가능
*/
SELECT DISTINCT job_id
FROM employees;
/*
<연결 연산자> ||
여러 컬럼값을 하나의 컬럼인것처럼 연결하건 컬럼과 리터럴을 연결할수있음
*/
-- 사원이름의 월급은 월급여 입니다.
SELECT emp_name || '의 월급여는 ' || salary ||'입니다.'
FROM employees;
/*
<WHERE 절> 조건절
SELECT 컬럼, 컬럼 ...
FROM 테이블명
WHERE 조건;
- 조회하고자 하는 테이블에서 해당 조건에 만조갛느 결과만 조회하고자 할 때 사용
- 조건식에 다양한 연산자들을 이용 할 수 있음
>, <, >=, <= 크기비교
= 동등비교
!=, ^=, <> 같지않다
*/
-- employees 테이블에서 부서 코드가 D9와 일치하는 사원들의 모든 컬럼 정보 조회
SELECT *
FROM employees
WHERE DEPARTMENT_ID=100;
-- 100번이 아닌 사원들의 사번, 사원명, 부서코드를 조회
SELECT employee_id, emp_name, department_id
FROM emp
WHERE DEPARTMENT_ID^=100;
-- 급여가 7000이상인 사원들의 사원명, 부서코드, 급여를 조회
SELECT emp_name, department_id, salary
FROM emp
WHERE salary>=7000;
-- emp 테이블에서 연봉이 80000이상인 사원의 이름, 급여, 연봉, 입사일 조회
SELECT emp_name AS 이름, salary AS 급여, salary*12 AS 연봉, hire_date AS 입사일
FROM emp
WHERE (salary*12)>=80000;
/*
<논리연산자>
여러개의 조건을 엮을때 사용
AND 그리고
OR 또는
*/
-- 부서코드가 100번이고 급여가 8000이상인 사원
SELECT emp_name AS 이름, department_id 부서코드 , TO_CHAR(salary, '99,999,999') AS "월 급여", TO_CHAR(salary*12, '99,999,999') AS 연봉
FROM emp
WHERE department_id=100 AND salary>=8000;
-- 급여가 8000이상 10000이하인 사원의 사번, 이름, 급여 조회
SELECT employee_id, emp_name, salary
FROM emp
WHERE salary>=8000 AND salary<=10000;
-- WHERE salary BETWEEN 8000 AND 10000;
-- WHERE NOT salary BETWEEN 8000 AND 10000;
/*
<BETWEEN AND>
WHERE 비교대상컬럼 BETWEEN 하한값 AND 상한값
- WHERE 절에서 사용되는 구문으로 범위에 대한 조건을 제시할 때 사용
- 비교대상 컬럼값이 하한값 이상이고 상한값 이상인경우 조회
<NOT>
- 조건과 맞지 않는 값 조회
*/
-- 입사일
SELECT *
FROM emp
WHERE hire_date BETWEEN '98/01/01' AND '99/12/31'
ORDER BY hire_date; -- ASC 오름차순(기본값) DESC 내림차순
/*
<LIKE>
WHERE 비교대상컬럼 LIKE '특정패턴';
- 비교하려는 컬럼 값이 지정된 특정패턴을 만족하는 경우
- 패턴 문자 : 컬럼명 LIKE '%문자'(0글자 이상, 특정 문자열로 시작하거나 특정 문자열로 끝나는 경우) -ex) '%ON' ON으로 끝나는 문자
컬럼명 LIKE '_문자' (1글자) __(2글자)
*/
SELECT salary, hire_date, emp_name
FROM emp
--WHERE emp_name LIKE 'D%';
WHERE emp_name LIKE '%ra%';
SELECT employee_id, emp_name, phone_number
FROM emp
WHERE phone_number LIKE '____4%';
-- 이메일을 조회하는데 @jungang.com 문자를 추가하여 출력
SELECT emp_name, email || '@jungang.com'
FROM emp;
SELECT emp_name, phone_number
FROM emp
WHERE phone_number NOT LIKE '515%';
SELECT department_name
FROM dept
WHERE department_name LIKE '건설%';
/*
<IS NULL / IS NOT NULL>
WHERE 비교대상컬럼 IS [NOT] NULL;
- 컬럼값에 NULL이 있는경우 NULL값 비교에 사용된다.
IS NULL 컬럼이 널인경우
IS NOT NULL 컬럼이 널이 아닌경우
오라클에서 널은 비교연산자 사용 불가
*/
SELECT emp_name, commission_pct
FROM emp
WHERE commission_pct IS NOT NULL;
SELECT department_id, emp_name, manager_id
FROM emp
WHERE manager_id IS NULL;
SELECT emp_name, department_id, commission_pct
FROM emp
WHERE department_id IS NULL AND commission_pct IS NOT NULL;
/*
<IN>
WHERE 비교대상컬럼 IN ('값', '값', ...);
값 목록 중 일치하는 값이 있을경우 조회
*/
SELECT emp_name, department_id
FROM emp
--WHERE department_id IN(30,40,50);
WHERE department_id=30 OR department_id=40 OR department_id=50;
/*
SELECT 컬럼, 컬럼 ...
FROM 테이블명
WHERE 조건
ORDER BY 정렬시키고자 하는 컬럼명, 별칭, 컬럼 순번 [ASC|DESC] [NULLS FIRST|NULLS LAST]
*/
SELECT emp_name, commission_pct, salary
FROM emp
WHERE commission_pct IS NOT NULL
--ORDER BY commission_pct, salary DESC;
ORDER BY 2,3;
Study/SQL
댓글