DB

[SQL] 04. SELECT 명령어

NOHCODING 2021. 11. 9. 21:51
반응형

 

 

(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절에 오는 컬럼의 데이터 형이 동일해야 함

  ③  두 집합의 컬럼명은 달라도 상관없음

  ④  두 집합의 컬럼명은 달라도 상관없음  

 

 

반응형