공부했던 자료 정리하는 용도입니다.

재배포, 수정하지 마세요.

 

예제는 Oracle Database에서 기본으로 제공되는 SCOTT계정 데이터로 진행됩니다.

 

 

 

 

WHERE절

SELECT *
FROM EMP
WHERE DEPNO = 30;	-- WHERE절에 조회할 행을 선별하기 위한 조건식을 넣는다.

  WHERE 절은 어떤 조건에 일치하는 행만을 골라내어 조회하는 데 사용한다.  WHERE 절이 포함된  SELECT 문을 실행하면 조회할 테이블의 각 행에  WHERE 절의 조건식을 대입하여 결과가  true 인 경우에만 출력된다.

 

 

 

 

AND, OR

SELECT *
FROM EMP
WHERE DEPTNO = 30
	AND JOB = 'SALESMAN';
        OR JOB = 'CLERK';

조건식을 지정할때  AND  OR 연산자를 사용한다.  WHERE 절에 사용할 수 있는 조건식의 개수는 사실상 제한이 없다고 봐도 무방하다. (SQL문은 대 · 소문자를 구별하지 않지만 테이블 안에 들어있는 문자 or 문자열 데이터는 대 · 소문자를 구별하므로 주의한다.)

 

 

 

 

연산자의 종류

  ■ 산술연산자

  수치 연산에 사용하는 연산자이다.

  ex)  + ,  - ,  * ,  /  

 

 

  ■ 비교 연산자

  연산자 앞뒤에 있는 데이터 값을 비교하는 데 사용한다. 문자열은 알파벳 순서로 문자열의 대소를 비교한다.

  ex)  > ,  >= ,  < ,  <= 

 

  + 등가 비교 연산자 : 연산자 양쪽 항목이 같은 값인지 검사하는 연산자

     ex)  = ,  != ,  <> ,  ^=  :  = 를 제외한 3개는 모두 같은 의미

 

 

  ■ 논리 부정 연산자

  반대의 결과를 얻고자 할 때 사용할 수 있다. 

  ex)  NOT 

 

 

  ■ IN 연산자

SELECT [조회할 열1 이름], [열2 이름], ..., [열N 이름]
FROM [조회할 테이블 이름]
WHERE 열 이름 IN(데이터1, 데이터2, ... 데이터N);

-- ex
SELECT *
FROM EMP
WHERE JOB IN( 'MANAGER', 'SALESMAN', 'CLERK');

특정 열에 해당하는 조건을 여러 개 지정할 때  IN 을 사용한다.  NOT IN 은 반대의 결과를 출력한다.

 

 

  ■ BETWEEN A AND B 연산자

SELECT [조회할 열1 이름], [열2 이름], ..., [열N 이름]
FROM [조회할 테이블 이름]
WHERE 열 이름 BETWEEN 최소값 AND 최대값;

-- ex
SELECT *
FROM EMP
WHERE SAL BETWEEN 2000 AND 3000;

특정 열 값의 최소 · 최고 범위를 지정하여 해당 범위 내의 데이터만 조회할 경우에  BETWEEN A AND B 를 사용한다.

 

 

  ■ LIKE 연산자와 와일드카드

SELECT *
FROM EMP
WHERE ENAME LIKE 'S%';

 일부 문자열이 포함된 데이터를 조회할 때  LIKE 를 사용한다. 같이 사용하는 와일드카드로는  _  % 가 있다.  NOT LIKE 를 하면 반대의 결과가 출력된다.

 

  •  _  : 어떤 값이든 상관없이 한 개의 문자 데이터를 의미
  •  %  : 길이와 상관없이(문자가 없는 경우도 포함)모든 문자 데이터를 의미

 

 

  + 와일드카드 문자가 데이터의 일부일 경우

SELECT *
FROM SOME_TABLE
WHERE SOME_COLUMN LIKE 'A\_A%' ESCAPE '\';	-- ESCAPE절에서 ESCAPE문자를 지정할 수 있다.(\외 다른 문자도 지정가능)

데이터에 와일드 카드 기호로 사용되는  _  % 가 문자 데이터로 포함된 경우엔  ESCAPE 절에서 ESCAPE 문자를 지정해서 사용하면 된다. 위의 예제에서 나온  \ 외 다른 문자도 지정하여 사용할 수 있다.

 

 

  ■ IS NULL 연산자

   NULL 인 데이터를 찾을 때  IS NULL 을 사용한다.  IS NOT NULL 하면 반대의 의미로  NULL 값이 아닌 데이터를 찾는다.( NULL 은 값이 없는 상태로  0 과는 다르다. 또한  NULL 은 산술 연산자와 비교 연산자로 비교해도 결과 값이  NULL 이 되므로 조건식을 사용할 때 주의해야 한다.(조건식의 결과값이 truefalse도 아니어서 출력 대상에서 제외됨))

 

AND 연산
OR 연산

 

 

  ■ 집합 연산자

 

  집합 연산자의 종류

종  류 설  명
UNION 연결된  SELECT 문의 결과값을 합집합으로 묶어준다. (결과값의 중복은 제거)
UNION ALL 연결된  SELECT 문의 결과 값을 합집합으로 묶어준다. (결과 값도 제거 없이 모두 출력)
MINUS 먼저 작성한  SELECT 문의 결과값에서 다음  SELECT 문의 결과 값을 차집합 처리한다. 먼저 작성한  SELECT 문의 결과 값 중 다음  SELECT 문에 존재하지 않는 데이터만 출력된다.
INTERSECT 먼저 작성한  SELECT 문과 다음  SELECT 문의 결과 값이 같은 데이터만 출력된다. (교집합과 같은 의미)

   UNION 두 개의  SELECT 문의 결과값을 연결할 때 각  SELECT 문이 출력하려는 열 개수와 각 열의 자료형이 순서별로 일치해야 한다! (자료형만 같으면 조회하는 열 이름이 달라도 문제없다. 값만 이상하게 나올 뿐.. 또한 최종 출력되는 열 이름은 먼저 작성한  SELECT 문의 열 이름으로 표기된다.)

 

 

 

연산자의 우선순위

 

연산자의 우선순위

 ( )  로 묶어주면 우선순위와는 별개로 괄호 안의 연산식을 먼저 수행한다.

 

 

 

+ Recent posts