SQL 연산자
#01. SQL 연산자
1) BETWEEN 연산자
- 조회 조건값의 범위를 설정하는 BETWEEN 연산자.
- BETWEEN 연산자는 특정 칼럼의 데이터 값이 하한값
A
와 상한값B
사이에 포함되는 행을 검색하기 위한 연산자이다.
- BETWEEN 연산자는 특정 칼럼의 데이터 값이 하한값
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' 카테고리의 다른 글
[DataBase] 06_함수 (0) | 2020.05.11 |
---|---|
[DataBase] 05_정렬, 부분 조회 (0) | 2020.05.11 |
[DataBase] 03_데이터 조회하기 (0) | 2020.05.10 |
[DataBase] 02_데이터베이스 살펴보기 (0) | 2020.05.10 |
[DataBase] 01_DBMS 설치(MySQL) (0) | 2020.05.10 |