[SQL] 04. SELECT 명령어
(1) SELECT란?
SELECT란 저장된 데이터를 가져오는 명령어이다.
SELECT [컬럼명 또는 표현식] FROM [테이블 명, 뷰 명]
(2) 모든 컬럼 조회하기
SELECT *
(3) 특정 컬럼 조회하기
SELECT * FROM 테이블명;
(4) 테이블에 어떤 컬럼이 있는지 조회
desc 테이블명;
(5) 원하는 컬럼만 조회하기
SELECT 컬럼이름1, 컬럼이름2...;
(6) DISTINCT 명령어로 중복된 값을 제거하고 출력하기
SELECT DISTINCT 컬럼이름(컬럼 하나에만 적용됨);
① DISTINCT 명령어는 반드시 SELECT 키워드 다음에 와야 함.
② DISTINCT 컬럼이름1, 컬럼이름2; 라고 적는다면 컬럼이름1에만 DISTINCT 명령어가 사용됨.
③ 10g R2버전부터는 DISTINCT 명령은 정렬이 되지 않음.
④ 사용법에 따라 속도가 느려질 수 있음으로 반드시 써야 하는 쿼리에만 사용 권장.
(7) 연결 연산자로 컬럼을 붙여서 출력하기
SELECT 칼럼이름1 || 칼럼이름2 || 칼럼이름3 FROM 테이블이름;
1) 예시
NAME AND JOB이라는 테이블과 ename, job을 사용한 예시이다.
name에 만약 SMITH라는 데이터와 job칼럼에는 CLERK라는 데이터만이 존재한다면 아래와 같이 출력됨.
SELECT ename ||' ''s job is ' || job FROM "NAME AND JOB";
NAME AND JOB
----------------------------------------------------------
SMITH's job is CLERK
(8) 원하는 조건만 골라내기 WHERE절 사용
SELECT [Column or Expression]
FROM [Table or View]
WHERE 원하는 조건 ;
① 숫자 외에는 꼭 ' '를 사용할 것
② 문자는 대소문자 구분을 꼭 해야 함
③ 날짜는 대소문자 구분이 없음.
(9) SQL에서 기본 산술 연산자 사용하기 예시
SELECT ename sal
2 FROM emp
3 WHERE deptno = 10;
ENAME SAL
------------ ----------------------------
CLARK 2450
KING 5000
MILLER 1300
SELECT ename sal, sal + 100
2 FROM emp
3 WHERE deptno = 10;
ENAME SAL SAL+100
-----------------------------------------------
CLARK 2450 2550
KING 5000 5100
MILLER 1300 1400
(10) 다양한 연산자를 활용하는 방법
= | 비교 대상에서 같은 조건을 검색 |
!=,<> | 비교 대상에서 같지 않은 조건을 검색 |
> | 비교 대상에서 큰 조건을 검색 |
>= | 비교 대상에서 크거나 같은 조건을 검색 |
< | 비교대상에서 작은 조건을 검색 |
<= | 비교대상에서 작거나 같은 조건을 검색 |
BETWEEN a AND b | A와 B사이에 있는 범위 값을 모두 검색 |
IN(a,b,c) | A 이거나 B이거나 C인 조건을 검색 |
LIKE | 특정 패턴을 가지고 있는 조건을 검색 ① % : 글자 수에 제한이 없고 어떤 글자가 와도 상관없음 ② _ : 글자수는 한글자만 올 수 있고 어떤 글자가 와도 상관없음 * like 를 사용시, '_' 나 '%'를 먼저 사용시에 속도가 느려질 수 있음 |
IS NULL / IS NOT NULL | 값이 무엇인지 모를 경우 Null 값을 검색 / Null이 아닌 값을 검색 |
A AND B | A조건과 B 조건을 모두 만족하는 값만 검색 |
A OR B | A 조건이나 B조건 중 한가지라도 만족하는 값을 검색 |
NOT A | A가 아닌 모든 조건을 검색 |
① BETWEEN연산자로 특정 구간에 속한 모든 값을 다 출력함
② BETWEEN 연산자를 사용 시에 작은 값을 앞에 큰 값을 뒤에 쓰며, 두 값을 모두 포함하는 결과를 출력함.
③ BETWEEN 보다 AND 연산자를 사용하는 것이 속도 차이에 있어 더 좋음.
+ | 문자열을 연결 | '골프' + '바이블' : '골프 바이블' |
% | 0개 이상의 문자열과 일치 | '%축구' : 축구를 포함하는 문자열 |
[] | 1개의 문자와 일치 | '[0-5]%' : 0-5 사이의 숫자로 시작하는 문자열 |
[^] | 1개의 문자와 불일치 | '[^0-5]%' : 0-5 사이의 숫자로 시작하지 않는 문자열 |
_ | 특정 위치의 1개의 문자와 위치 | '_구' : 두 번째 위치에 구가 들어가는 문자열 |
(11) 정렬하여 출력하기 ORDER BY절 사용하기
① 날짜는 최근 날짜가 더 큼.
② ORDER BY를 사용할수록 수행 속도가 많이 늦어짐.
(12) 값이 무엇인지 모를 경우 IS NULL/ IS NOT VULL
① null : 어떤 값인지 모름
② null 값은 비교연산자로 비교가 불가능함.
③ IS Null : null 값을 찾고 싶을 때
④ IS NOT NULL : null이 아닌 값을 모든 값을 찾고 싶은 경우
⑤ NULL + 숫자의 연산의 결과는 NULL이다.
⑥ 집계함수 계산 시 NULL이 포함된 행은 집계에서 빠진다.
⑦ 해당되는 하나도 없을 경우 SUM, AVG 함수의 결과는 NILL이 되며, COUNT 함수의 결과는 0이다.
(13) 집합 연산자
UNION | 두 집합의 결과를 합쳐서 출력, 중복 값 제거하고 정렬 |
UNION ALL | 두 집합의 결과를 합쳐서 출력, 중복 값 제거 안 하고 정렬 안 하고 정렬 안 함 |
INTERSECT | 두 집합의 교집합 결과를 출력 및 정렬 |
MINUS | 두 집합의 차집합 결과를 출력 및 정렬함. 쿼리의 순서가 중요함. |
① 두 집합의 SELECT절에 오는 컬럼의 개수가 동일해야 함
② 두 집합의 SELECT절에 오는 컬럼의 데이터 형이 동일해야 함
③ 두 집합의 컬럼명은 달라도 상관없음
④ 두 집합의 컬럼명은 달라도 상관없음
