본문 바로가기

코딩 공부/DataBase

[DataBase] 04_SQL 연산자

SQL 연산자

#01. SQL 연산자

1) BETWEEN 연산자

  • 조회 조건값의 범위를 설정하는 BETWEEN 연산자.
    • BETWEEN 연산자는 특정 칼럼의 데이터 값이 하한값 A와 상한값 B사이에 포함되는 행을 검색하기 위한 연산자이다.
SELECT * | 컬럼이름 FROM <테이블이름> WHERE 컬럼이름 BETWEEN A AND B;
- BETWEEN 연산자는 두 개의 비교식을 AND 연산자로 묶은 것과 동일한 결과를 얻을 수 있다.
SELECT * | 컬럼이름 FROM <테이블이름> WHERE 컬럼이름 >= A and 컬럼이름 <= B;

ex) BETWEEN 연산자를 사용하여 몸무게가 50kg에서 70kg 사이인 학번, 이름, 몸무게를 출력

mysql> SELECT studno, name, weight
    -> FROM student
    -> WHERE weight >= 50 AND weight <= 70;
+--------+--------+--------+
| studno | name   | weight |
+--------+--------+--------+
|  10102 | 박미경 |     52 |
|  10105 | 임유진 |     54 |
|  10203 | 하나리 |     68 |
|  10204 | 윤진욱 |     70 |
|  20101 | 이동훈 |     64 |
|  20102 | 박동진 |     70 |
|  20103 | 김진경 |     51 |
|  20104 | 조명훈 |     62 |
+--------+--------+--------+

2) IN 연산자

  • 여러 개의 값 중에서 하나라도 일치하면 참이 되는 연산자.
    • IN 연산자는 특정 칼럼의 데이터 값이 A, B, ..., Z값 중 하나라도 일치하면 '참'이 되는 연산자이다.
SELECT * | 컬럼이름 FROM <테이블이름> WHERE 컬럼이름 IN (A, B, ..., Z);
+ IN 연산자는 여러개의 비교식을 OR 연산자로 묶은 것과 동일한 결과를 얻을 수 이싿.
SELECT * | 컬럼이름 FROM <테이블이름> 
WHERE 컬럼이름=A or 컬럼이름=B or ... or 컬럼이름=Z;

ex) IN 연산자를 사용하여 102번 학과와 201번 학과 학생의 이름, 학년, 학과번호 출력

mysql> SELECT name, grade, deptno
    -> FROM student
    -> WHERE deptno IN (102, 201);
+--------+-------+--------+
| name   | grade | deptno |
+--------+-------+--------+
| 김진영 |     2 |    102 |
| 오유석 |     4 |    102 |
| 하나리 |     1 |    102 |
| 윤진욱 |     3 |    102 |
| 이동훈 |     1 |    201 |
| 박동진 |     1 |    201 |
| 김진경 |     2 |    201 |
| 조명훈 |     1 |    201 |
+--------+-------+--------+

ex) 비교 연산자와 OR 연산자를 사용하여 102번 학과와 201번 학과 학생의 이름, 학년, 학과번호 출력

mysql> SELECT name, grade, deptno
    -> FROM student
    -> WHERE deptno = 102 OR deptno = 201;
+--------+-------+--------+
| name   | grade | deptno |
+--------+-------+--------+
| 김진영 |     2 |    102 |
| 오유석 |     4 |    102 |
| 하나리 |     1 |    102 |
| 윤진욱 |     3 |    102 |
| 이동훈 |     1 |    201 |
| 박동진 |     1 |    201 |
| 김진경 |     2 |    201 |
| 조명훈 |     1 |    201 |
+--------+-------+--------+

3) Like 연산자

  • 특정 키워드가 포함된 데이터를 검색하기
    • LIKE 연산자는 컬럼에 저장된 문자열이 LIKE 연산자에서 지정한 문자패턴과 부분적으로 일치하면 참이 되는 연산자이다. 아래와 같은 특수문자를 이용 할 수 있다.
SELECT * | 컬럼이름 FROM <테이블이름> WHERE 컬럼이름 like '%검색어%';
+ '%': 임의의 길이인 문자열(길이가 0인 경우도 포함)에 대한 특수 문자로 윈도우에서의 '*'와 동일한 의미를 갖는다.

'%김' : '김'으로 끝나는 모든 내용.
'김%' : '김'으로 시작하는 모든 내용.
'%김%' : 앞 뒤 구분 없이 '김'을 포함하는 모든 내용.

ex) 학생 테이블에서 성이 '김'씨인 학생의 이름, 학년, 학과번호를 출력

mysql> SELECT name, grade, deptno
    -> FROM student
    -> WHERE name LIKE '김%';
+--------+-------+--------+
| name   | grade | deptno |
+--------+-------+--------+
| 김영균 |     3 |    101 |
| 김진영 |     2 |    102 |
| 김진경 |     2 |    201 |
+--------+-------+--------+

4) IS NULL, IS NOT NULL 연산자

  • NULL은 미확인 값 혹은 아직 결저오디지 않은 값을 의미한다.
  • NULL은 숫자 0이나 공백과는 다른 값이다.
    • Ex)학생 몸무게가 NULL인 경우는 학생 몸무게가 0이 아니라 현재 시점에서 그학생의 몸무게를 모른다는 의미
  • 대부분의 프로그래밍 구현에서 미필수 항목에 대하여 사용자가 입력하지 않은 경우를 NULL로 처리한다.

ex) 교수 테이블(professor)에서 이름, 직급, 보직수당을 출력 -> NULL데이터를 확인 하시오

+--------+----------+------+
| name   | position | comm |
+--------+----------+------+
| 김도훈 | 교수     |   20 |
| 이재우 | 조교수   | NULL |
| 성연희 | 조교수   |   15 |
| 염일웅 | 전임강사 | NULL |
| 권혁일 | 교수     |   25 |
| 이만식 | 부교수   | NULL |
| 전은지 | 전임강사 | NULL |
| 남은혁 | 부교수   |   17 |
+--------+----------+------+
  • 특정 컬럼에 저장된 데이터에 대한 Null 여부 검사하기
SELECT * | 컬럼이름 FROM <테이블이름>
WHERE 컬럼이름 IS [NOT] NULL;

IS NULL : 칼럼 값 중에서 NULL을 포함하는 행을 검색하기 위해 사용
IS NOT NULL : NULL을 포함하지 않는 행을 검색하기 위해 사용

ex)교수테이블에서 보직수당이 없는 교수의 이름, 직급, 보직수당을 출력

mysql> Select name, position, comm FROM professor
    -> Where comm IS NULL;
+--------+----------+------+
| name   | position | comm |
+--------+----------+------+
| 이재우 | 조교수   | NULL |
| 염일웅 | 전임강사 | NULL |
| 이만식 | 부교수   | NULL |
| 전은지 | 전임강사 | NULL |
+--------+----------+------+

ex)교수테이블에서 보직수당을 받고 있는 교수의 이름, 직급, 보직수당을 출력

mysql> Select name, position, comm FROM professor
    -> Where comm is not null;
+--------+----------+------+
| name   | position | comm |
+--------+----------+------+
| 김도훈 | 교수     |   20 |
| 성연희 | 조교수   |   15 |
| 권혁일 | 교수     |   25 |
| 남은혁 | 부교수   |   17 |
+--------+----------+------+

5) 연산자 우선순위

  • WHERE절의 조건을 분석하는 우선 순위
순위 연산자
1 괄호로 묶인 부분
2 비교 연산자( =, !=, <>, >, >=, <, <= )
2 SQL 연산자 (BETWEEN, IN, LIKE, IS NULL)
3 NOT
4 AND
5 OR

ex) 102번 학과의 학생중에서 1학년 또는 4학년 학생의 이름, 학년, 학과 번호를 출력하라

mysql> SELECT name, grade, deptno FROM student
    -> WHERE deptno = 102 AND (grade=4 OR grade=1);
+--------+-------+--------+
| name   | grade | deptno |
+--------+-------+--------+
| 오유석 |     4 |    102 |
| 하나리 |     1 |    102 |
+--------+-------+--------+

'코딩 공부 > DataBase' 카테고리의 다른 글