웹프로그래밍/데이터베이스

오라클 SELECT 문 - 데이터 추출

Gamcho 2018. 6. 17. 16:00

--##SELECT 문 - 기본

SELECT * FROM DEPT;

SELECT DEPTNO, DNAME FROM DEPT;


--칼럼 이름에 별칭 지정(공백이나 특수문자, 대소문자 구별하려면 AS를 생략하고" "을 사용

--주로 자바 언어로 데이터를 꺼내올때 쓴다.

SELECT DEPTNO AS DepartmentNo, DNAME AS DepartmentName FROM DEPT;

SELECT DEPTNO "Department No", DNAME "Department Name" FROM DEPT;


--DISTINCT

--중복된 데이터 없이 한번씩 출력

--EMP 테이블의 JOB 칼럼의 데이터를 중복 없이 가져온다.

SELECT DISTINCT JOB FROM EMP;


--##WHERE 조건과 비교 연산자

SELECT EMPNO, ENAME, SAL FROM EMP WHERE SAL>=3000;


--문자 데이터 조회

SELECT EMPNO, ENAME, SAL FROM EMP WHERE ENAME='SCOTT';


--날짜 데이터 조회

SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE >='1985/01/01';


--AND 연산자

SELECT ENAME, DEPTNO, JOB FROM EMP WHERE DEPTNO=10 AND JOB='MANAGER';


--OR 연산자

SELECT ENAME, DEPTNO, JOB FROM EMP WHERE DEPTNO=10 OR JOB='MANAGER';


--NOT 연산자

SELECT ENAME, DEPTNO, JOB FROM EMP WHERE NOT DEPTNO=10;


--BETWEEN AND 연산자

--급여가 1000~3000 사이에 있는 사원

SELECT ENAME, SAL FROM EMP WHERE SAL BETWEEN 1000 AND 3000;


--IN 연산자

--칼럼의 값 중에서 원하는 값을 가져온다.

SELECT ENAME, SAL, EMPNO FROM EMP WHERE EMPNO IN(7844, 7654, 7521);

--아래도 동일한 결과

SELECT ENAME, SAL, EMPNO FROM EMP WHERE EMPNO=7844 OR EMPNO=7654 OR EMPNO=7521;


--LIKE 연산자와 와일드카드

--찾고자하는 값을 정확히 모를 경우, 와일드카드를 함께 사용하여 검색한다.

--ENAME 값이 K로 시작하는 사원

SELECT EMPNO, ENAME FROM EMP WHERE ENAME LIKE 'k%';

--이름 중 K를 포함하는 사원

SELECT EMPNO, ENAME FROM EMP WHERE ENAME LIKE '%K%';

--이름이 K로 끝나는 사원

SELECT EMPNO, ENAME FROM EMP WHERE ENAME LIKE '%K';

--이름에 두 번째 글자가 A인 사원

SELECT EMPNO, ENAME FROM EMP WHERE ENAME LIKE '_A%';

--이름에 A를 포함하지 않은 사원

SELECT EMPNO, ENAME FROM EMP WHERE ENAME NOT LIKE '%A%';


--##NULL은 비교 연산자를 사용할 수 없다.

--NULL은 연산, 할당, 비교가 불가능하다.

--ex) 100 + NULL = NULL

SELECT ENAME, COMM, JOB FROM EMP WHERE COMM=NULL; -->>아무 값도 나오지 않는다.

--IS NULL과 IS NOT NULL

SELECT ENAME, COMM, JOB FROM EMP WHERE COMM IS NULL;

SELECT ENAME, COMM, JOB FROM EMP WHERE COMM IS NOT NULL;


--정렬 ORDER BY 

--행(ROW)을 정렬하는데 사용, 쿼리문 맨 뒤에 기술하며 칼럼이름 또는 SELECT 절에서 명시된 별칭을 사용할 수 있다.

--ASC(오름차순, 기본값), DESC(내림차순)

--사번을 기준으로 오름차순 정렬

SELECT EMPNO, ENAME FROM EMP ORDER BY EMPNO; --또는 ORDER BY EMPNO ASC;