프로그래밍/DBMS

SELECT 문 기초

Heidong 2021. 8. 5. 01:12
반응형

SELECT * FROM emp; = 모든 컬럼을 출력

 

컬럼명에 별칭 AS는 생략 가능

 

SELECT name, sal, sal + bonus AS zzz FROM emp;

sal + bonus 를 합친 행을 zzz이름을 가진 새로운 행으로 만듬

 

번호 있는 행 만들기

SELECT ROWNUM ,name, sal FROM emp;

 

오라클에서의 논리 연산자는 AND, OR , NOT으로 표현

□ emp 테이블 : 성씨가 ㄱ 씨인 empNo, name, sal 컬럼 출력하기

SELECT empNo,name,sal FROM emp
WHERE name > '가' AND name < '나';

 

그룹 비교 연산자 ANY

SELECT name, city FROM emp
WHERE city = ANY('서울', '경기', '인천');

OR랑 비슷한 개념 city가 서울,경기,인천인 자료중 name,city 컬럼 출력

 

 

 

BETWEEN 조건식

말 그대로 뭐뭐~의 사이에 있는걸 출력할 때

SELECT name, sal
FROM emp
WHERE sal >= 2000000 AND sal <= 3000000;

 

 

IN 조건식

안에 있는지 확인하는 용도

 

□ city와 pos가 서울이면서 부장인 자료(city, pos) 출력

SELECT name, city, pos
FROM emp
WHERE (city, pos) IN ( ('서울', '부장') );

 

 

LIKE 조건식

주어진 문자열이 패턴에 일치하는지 여부 확인

LIKE 보다는 INSTR() 함수가 속도가 빠름

 

□ name이 '김'씨인  자료 중 empNo, name 컬럼 출력

SELECT empNo, name 
FROM emp
WHERE name LIKE '김%';

 

□ 3이 존재하는지 확인하기

SELECT empNo, name, tel
FROM emp
WHERE tel LIKE '%3%';

%가 앞뒤로 들어간당

 

 

SELECT empNo, name, rrn
FROM emp
WHERE rrn LIKE '_0%';

앞에 _ 언더바가 붙으면 언더바 갯수 만큼의 글자수를 의미한다.

 

INSTR

문자열의 검색하여 위치를 반환
문자열이 존재하지 않으면 0을 반환
검색에서 LIKE 보다 속도가 빠름

 

SELECT INSTR('korea seoul', 'e', 1, 2) FROM dual;

korea seoul 문장 중에서 e를 찾을건데

찾을 시작 위치는 1의 위치부터 시작해서 2번째가 검색된 위치를 반환

SELECT INSTR('korea seoul', 'e') FROM dual;

e의 위치가 어딘지 알려준다.

SELECT INSTR('korea seoul', 'e', 7) FROM dual;

e의 위치를 찾는데 7번째 인덱스부터 찾는다.

 

 

ESCAPE

'%',  '_' 를 검색하기 위해 사용(패턴이 아닌 문자로 처리)

 

 

 

 

WITH 문

반복적으로 사용되는 쿼리를 블럭화 할 경우 사용

서브 쿼리를 만들어서 결과 값을 저장해주고 저장한 값을 써먹는다.

 

WITH emp_pay AS (
    SELECT name, sal, bonus, sal+bonus pay FROM emp
)
SELECT name, sal, bonus, pay FROM emp_pay WHERE pay >= 3000000;

emp_pay라는 이름을 가진 (SELECT name, sal, bonus, sal+bonus pay FROM emp) 쿼리를 만들어 주고

그 결과값을 emp_pay에 저장

그리고 새로운 쿼리를 만들어서 만들어 놨던 emp_pay를 활용한다.

그러면 pay라는 새로운 항목을 만들어뒀던걸 사용할 수 있게 된다.

 

 

NULL

행의 열(컬럼)에 값이 없는 경우
길이가 0인 문자 값도 NULL

 

주의 사항
SELECT 10 + 5 FROM dual;   // 15
SELECT 10 + NULL FROM dual;  // NULL 숫자 더하기 NULL은 NULL이다.

 

자료에서 NULL인지 확인하고 싶다면 IS를 써야한다.

SELECT name, tel
FROM emp
WHERE tel IS NULL;    -- IS는 NULL인지를 확인하는 유일한 방법

 

 

 

반응형