출처 : http://www.gurubee.net/lecture/1017
SELECT 문법
SELECT [DISTINCT] {*, column [alias], . . .} FROM table_name [WHERE condition] [ORDER BY {column, expression} [ASC | DESC]];
|
SQL 문의 작성 방법
- SQL 문장은 대 소문자를 구별하지 않는다.
- SQL 문장은 한 줄 또는 여러 줄에 입력될 수 있다.
- 일반적으로 키워드는 대문자로 입력한다. 다른 모든 단어, 즉 테이블 이름, 열 이름은 소문자로 입력한다. (권장)
- 가장 최근의 명령어 한 개가 SQL buffer에 저장된다.
- SQL문 마지막 절의 끝에 ";"를 기술하여 명령의 끝을 표시한다.
-- empno와 ename 은 각각 사번과 성명이라는 컬럼 별칭(alias)으로 만들어 출력 -- alias를 사용할 때 as라는 키워드를 사용해도 되고, 생략 할 수도 있다. SQL> SELECT empno 사번, ename 성명 FROM emp WHERE deptno = 10 사번 성명 ---------- --------------- 7782 CLARK 7839 KING 7934 MILLER |
WHERE 절에 사용될 수 있는 SELECT 연산자
연산자 |
설명 |
BETWEEN a AND b |
a와 b사이의 데이터를 출력. (a, b값 포함) |
IN (list) |
list의 값 중 어느 하나와 일치하는 데이터를 출력 |
LIKE |
문자 형태로 일치하는 데이터를 출력 (%, _사용) |
IS NULL |
NULL 값을 가진 데이터를 출력합니다. |
NOT BETWEEN a AND b |
a와 b사이에 있지 않은 데이터를 출력 (a, b값 포함하지 않음) |
NOT IN (list) |
list의 값과 일치하지 않는 데이터를 출력 |
NOT LIKE |
문자 형태와 일치하지 않는 데이터를 출력 |
IS NOT NULL |
NULL 값을 갖지 않는 데이터를 출력 |
IN, NOT IN 연산자
IN 연산자
-- 사번이 7900, 7934번인 사원의 사번과 성명 출력 SQL> SELECT empno, ename FROM emp WHERE empno IN (7900, 7934) ; EMPNO ENAME --------- ------------- 7934 MILLER 7900 JAMES |
NOT IN 연산자
-- 사번이 7900, 7934번이 아닌 사원의 사번과 성명 출력 SQL> SELECT empno, ename FROM emp WHERE empno NOT IN (7900, 7934); EMPNO ENAME -------- -------------- 7369 SMITH 7499 ALLEN 7698 BLAKE .... |
BETWEEN 연산자
AND를 이용해 두 조건을 결합한 검색과 같은 결과 값을 보여준다.
-- 급여가 3000에서 5000사이인 사원만 조회 SQL> SELECT empno, ename FROM emp WHERE sal BETWEEN 3000 AND 5000; EMPNO ENAME ------- ------ 7788 SCOTT 7839 KING 7902 FORD |
LIKE 연산자
- 검색 STRING 값에 대한 와일드 카드 검색을 위해서 LIKE 연산자를 사용.
- % : 여러 개의 문자열을 나타내는 와일드 카드
- _ : 단 하나의 문자를 나타내는 와일드 카드
- ESCAPE : 와일드 카드 문자를 일반문자 처럼 사용하고 싶은 경우에 사용.
ex) WHERE name LIKE '%a\ _y% ' ESCAPE '\'
- LIKE 연산자는 대 소문자를 구분한다.
- UPPER() 함수를 이용해 대 소문자 구분없이 출력 할 수 있다. ( 인덱스 성능 문제 발생, 함수 기반 인덱스 사용..)
구분 |
설명 |
LIKE 'A%' |
'A'로 시작하는 데이터만 검색 |
LIKE '%A' |
'A'로 끝나는 데이터들만 검색 |
LIKE '%KIM%' |
'KIM' 문자가 있는 데이터들만 검색 |
LIKE '%K%I%' |
'K' 문자와 'I' 문자가 있는 데이터들만 검색 |
LIKE '_A%' |
'A' 문자가 두 번째 위치한 데이터들만 검색 |
LIKE 연산자 예제
-- 'K' 문자가 들어있는 사원 정보 조회 -- UPPER() 함수는 k를 대문자로 변환하여 'K'로 인식 SQL> SELECT empno, ename FROM emp WHERE UPPER(ename) LIKE '%K%'; EMPNO ENAME ------- ----------- 7698 BLAKE 7782 CLARK 7839 KING -- '_'를 이용한 LIKE검색 SQL> SELECT empno, ename FROM emp WHERE UPPER(ename) LIKE '_I%' EMPNO ENAME ------- ---------- 7839 KING 7934 MILLER |
ORDER BY
ORDER BY 절은 데이터의 정렬을 위해 사용합니다. (ASC[오름차순], DESC[내림차순])
-- 아래 두 개의 쿼리는 동일한 결과를 반환 한다. -- 이름을 ASC로 정렬 SQL> SELECT empno, ename ROM emp WHERE deptno = 30 ORDER BY ename ASC; -- 두 번째 컬럼을 디폴트(ASC) 순으로 정렬 SQL> SELECT empno, ename FROM emp WHERE deptno = 30 ORDER BY 2
EMPNO ENAME -------- --------- 7499 ALLEN 7698 BLAKE 7900 JAMES ... |
'이전것 > 데이터베이스' 카테고리의 다른 글
4.4.1. Equi Join, Non_Equi Join, Self Join (0) | 2016.11.15 |
---|---|
4.3. 예명 (Alias) (0) | 2016.11.14 |
중복 데이터 삭제 (0) | 2016.11.14 |
ORA-30926: 원본 테이블의 고정 행 집합을 가져올 수 없습니다 (0) | 2016.11.14 |
4.1. 데이터의 삽입, 수정, 삭제 (0) | 2016.11.11 |