[실무에서 바로 쓰는 SQL 기본과 SQL 튜닝][ORACLE] SELECT - WHERE

MinHee·2023년 5월 20일
0
post-thumbnail
SELECT ename, sql, job, hiredate,deptno
FROM emp
WHERE ename = 'SCOTT'

문자 및 날짜 : 양쪽에 싱글 쿼테이션 마크 / 숫자는 필요없음
SQL문은 대소문자 구분하지 않지만, 데이터는 대소문자를 구분하므로 대소문자를 구분하여 작성

SELECT empno as 사원번호, ename as 사원이름, sal as "Salary"
FROM emp;

as절에서 표기하고 싶은 문자열을 그대로 나타내려면 더블 쿼테이션 마크
EX) '_', ' ' 등의 문자 포함 및 대소문자 구분 출력

예제. 사원 테이블에서 이름과 월급을 서로 붙여서 출력해보세요.

SELECT ename || sal
FROM emp;
SELECT ename || '의 직업은' || job || '입니다.'
FROM emp;

|| 연산자 : 문자 및 칼럼을 합쳐서 출력
특정 문자 열을 출력할 시, 싱글 쿼테이션 마크를 포함하여 입력함

distinct : 중복 데이터를 제거하여 출력

SELECT DISTINCT deptno
FROM emp;

데이터 정렬 출력

SELECT ename,sal
FROM emp
ORDER BY sal [asc/desc]
SELECT ename,sal
FROM emp
ORDER BY 2 [asc/desc]

default : desc(내림차순 정렬)

--------------------------------------------- 1차시 마무리

쿼리의 실행순서 : from -> where -> select

코딩순서 : select -> from -> where

위와 같이 실행순서에서 WHERE 절이 SELECT 보다 앞서기 때문에, 아래 쿼리문 실행 시 에러 발생

SELECT ename,sal * 12 as 연봉
FROM emp
WHERE 연봉 >= 36000; -- 에러 발생

아래와 같이 수정이 필요함

SELECT ename,sal * 12 as 연봉
FROM emp
WHERE sal * 12 >= 36000; -- 에러 발생

예제. 직업이 SALESMAN이 아닌 사원들의 이름과 직업을 출력하시오

SELECT ename, job
FROM emp
WHERE job != 'SALESMAN';

'!=' <-> '^=', '<>'

기타 비교연산자

BETWEEN 구문 : 범위 이상 - 이하 포함 구문

예제. 월급이 1000이상 3000 이하인 사원들의 이름과 월급을 출력하시오

SELECT ename, sal
FROM emp
WHERE sal BETWEEN 1000 AND 3000;

SELECT ename, sal
FROM emp
WHERE sal >= 1000 AND sal <= 3000;

예제. 월급이 1000이상 3000 이하가 아닌 사원들의 이름과 월급을 출력하시오

SELECT ename, sal
FROM emp
WHERE sal NOT BETWEEN 1000 AND 3000;

SELECT ename, sal
FROM emp
WHERE sal < 1000 AND sal > 3000;

비교 연산자(LIKE)

WHERE ename like 'S%';

WHERE ename like '%M';

WHERE ename like '_T%'

% : 개수 상관없다
_ : 하나만 대체

IS NULL

NULL : 데이터가 없는 상태/ 알 수 없는 값(ORACLE)

WHERE comm = NULL; -- 오류 발생

함수의 종류

WHERE 절의 칼럼 결과에서도 단일 함수 적용이 가능하다

예제. 대문자인 데이터에 대해서 소문자로 검색이 가능하도록 하세요.

SELECT ename, sal
FROM emp
WHERE LOWER(ename) = 'scott';
profile
성장하는 개발자

0개의 댓글