SELECT문에서 조건 검색 WHERE절의 연산자

- 산술연산자, BETWEEN, IN(), LIKE 연산자

- 논리연산자 : AND, OR, NOT

- 비교연산자 : =, <, >, <=, >=, !=, ^=

 

  • EMP테이블에서 이름이 KING이고 부서번호 10인 사원의 사번, 이름, 급여, 직책, 입사일, 부서번호 출력하기
SELECT EMPNO, ENAME, SAL, JOB, HIREDATE, DEPTNO
FROM EMP
WHERE ENAME='KING' AND DEPTNO=10; --'문자'
  • EMP테이블에서 입사일이 81년 12월 1일보다 늦게 입사한 사원의 사번, 이름, 입사일 출력하기
SELECT EMPNO, ENAME, HIREDATE
FROM EMP
WHERE HIREDATE > '81/12/01';
  • EMP테이블에서 SAL가 1000보다 작거나 3000보다 큰 사원의 사번, 이름, 급여, 부서번호 출력하기
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE SAL<=1000 OR SAL>3000;

 

- 컬럼 BEWEEN A AND B : A와 B 사이의 값 출력

  • EMP테이블에서 SAL 1500과 3000사이의 사원의 사번, 이름, 급여, 부서번호 출력하기
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE SAL BETWEEN 1500 AND 3000;

 

- 컬럼 IN(값1, 값2, ..., 값n) : 해당하는 값의 데이터 출력

  • EMP테이블에서 부서번호 10 이거나 20 이거나 30인 사원의 사번, 이름, 급여, 부서번호 출력하기 
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP
WHERE DEPTNO IN(10, 20, 30);

 

- LIKE 연산자 : 문자형 전용, 값이 명시된 패턴과 동일한지 비교

- 와일드카드 문자 %(해당 위치의 0개 이상 문자), _(해당위치의 한글자 대치) 

- ESCAPE문 : ESCAPE 다음에 나오는 글자를 와일드문자가 아닌 일반문자로 인식

  • EMP테이블에서 이름이 'A'로 시작하는 사원을 검색하기
SELECT *
FROM EMP
WHERE ENAME LIKE 'A%';
  • 이름에 3번째 글자가 A인 사원의 정보를 출력하기
SELECT *
FROM EMP
WHERE ENAME LIKE '__A%';
  • AD_% 와일드문자가 아닌 일반문자로 검색 출력하기 (ESCAPE)
SELECT *
FROM TEST01
WHERE J_CODE LIKE 'AD\_\%%' ESCAPE '\';

 

- NULL인 컬럼값 조회 : IS NULL

- NULL이 아닌 컬럼값 조회 : IS NOT NULL

  • EMP테이블에서 COMM이 NULL이 아닌 사원 정보 출력하기
SELECT *
FROM EMP
WHERE COMM IS NOT NULL;

 

- NOT 연산자 : 조건이 거짓이어야 연산이 된다.

--WHERE절에서 연산자에 대한 NOT 연산자의 사용 예
WHERE JOB NOT IN ('CLERK', 'PRESIDENT')
WHERE SAL NOT BETWEEN 800 AND 1500
WHERE ENAME NOT LIKE '%A%'
WHERE COMM IS NOT NULL

 

SELECT문 : 프로그램에서 처리할 데이터를 사용자 프로그램으로 가져오기 위해 사용한다.

                    DB에서 읽어오기만 하니까 DB내용은 변하지 않는다.

 

▶ 기본문법

SELECT 컬럼1, 컬럼2, ..., 컬럼n (와일드문자 * : 전부 선택)

FROM 테이블명

WHERE 조건;

 

- EMP (사원정보)테이블 구조

EMP 테이블 구조
EMP 테이블 데이터

-  DEPT (부서정보) 테이블 구조

DEPT 테이블 구조
DEPT 테이블 데이터

(1) SELECT문 기초

  • EMP 테이블에서 모든 데이터 조회하기
SELECT *
FROM EMP;
  • EMP 테이블에서 사번, 이름, 급여, 부서번호 조회하기
SELECT EMPNO, ENAME, SAL, DEPTNO
FROM EMP;
  • 테이블의 구조를 알 수 있는 명령어
DESCRIBE EMP;
DESC DEPT; --위랑 같음
  • 사용자가 가지고 있는 모든 테이블 조회하기
SELECT *
FROM TAB;

 

 

(2) WHERE 조건절

- 컬럼에서 NUMBER, DATE유형은 산술 연산이 가능하다. 

- NUMBER(+, -, *, /)  DATE(+, -) 연산 가능

  • EMP 테이블에서 부서번호 30인 사원의 사번, 이름, 급여, 입사일 부서번호를 출력하기
SELECT EMPNO, ENAME, SAL, HIREDATE, DEPTNO
FROM EMP
WHERE DEPTNO=30;
  • EMP 테이블에서 부서번호 20번인 사원의 급여에 100을 더해 사번, 이름, 급여, 더한 급여 출력하기
SELECT EMPNO, ENAME, SAL, SAL+100
FROM EMP
WHERE DEPTNO=20;
  • 부서번호 20인 사원의 사번, 이름, 급여, 연봉((급여*12)+커미션), 입사일, 부서번호 출력하기

- 컬럼을 계산할 때 컬럼값이 NULL이면 계산 값은 무조건 NULL이 반환된다.

- NVL(컬럼명, null일 경우 치환할 값) : 컬럼과 치환할 값의 데이터 타입이 같아야 한다.

- NVL2(컬럼명, null이 아닐 경우 치환할 값, null일 경우 치환할 값)

SELECT EMPNO, ENAME, SAL, (SAL*12)+NVL(COMM,0), DEPTNO
FROM EMP
WHERE DEPTNO=20;

 

(3) ALIAS(AS) 컬럼의 별칭 (AS 생략가능)

  • 부서번호 30인 사원의 사번, 이름, 연봉, 부서번호 출력하기
SELECT EMPNO AS 사번, ENAME AS 사원명, (SAL*12)+NVL(COMM,0) 연봉, HIREDATE 입사일, DEPTNO 부서번호
FROM EMP
WHERE DEPTNO=30;

 

(4) DISTINCT 중복값 제거

  • EMP테이블에서 부서번호 출력하기

- SELECT의 옵션 : ALL(default값) / DISTINCT

SELECT DISTINCT DEPTNO
FROM EMP;

 

SQL : Structured Query Language의 약자로 데이터베이스의 언어다.

 

SQL은 5가지 명령어로 정의할 수 있다.

 

1. DQL (DATA QUERY LANGUAGE) : 데이터 질의어 (SELECT문)
   데이터베이스에서 데이터를 검색해서 사용자가 원하는 데이터를 확인 및 사용할 수 있다.


2. DML (DATA MANIPULATION LANGUAGE) : 데이터 조작어
   INSERT, DELETE, UPDATE
   데이터베이스의 테이블에 새로운 행의 삽입, 수정, 삭제하는 명령어


3. DDL (DATA DDEFINITION LANGUAGE) : 데이터 정의어
   CREATE, ALTER, DROP, TRUNCATE
   데이터베이스에 테이블의 생성, 변경, 삭제등을 하는 명령어
   테이블, 뷰, 유저, 시퀀스, 동의어 등도 해당된다.


4. DCL (DATA CONTROL LANGUAGE) : 데이터 제어어
   GRANT(부여), REVOKE(제거)
   데이터베이스에 접속하는 사용자에게 데이터베이스와 그 안에 구조에 대한 엑세스 권한을 부여 또는 제거한다.


5. TCL (TRANSACTION CONTROL LANGUAGE) : 트랜젝션 처리어
   COMMIT, SAVEPOINT, ROLLBACK
   어느시점의 데이터저장, 되돌리기 등을 하는 명령어

 

+ Recent posts