DB 이야기

디비 이야기 6. 연산자

김푸른초푸른 2020. 3. 2. 23:14

1. DB의 연산자 종류 (4가지)

= WHERE절을 이용하여 자료를 제한하여 필요한 부분만 가져오게 할 수 있다 

이유 : 데이턱라 너무 방대하다보면 CPU에 기능에 부하가 걸릴 수 있다. 

따라서 쿼리 튜닝에서 제일 첫번째로 검토대상이 된다. 
[WHERE에 오는 대상들]

1) 칼럼명

2) 비교칼럼(JOIN시)

3) 비교연산자

4) 문자, 숫자, 표현식

 

1) 기본연산자 (숫자나 날짜를 더하고, 빼고 , 곱하고, 나눈다)

- || : 두 문자 / 열을 결합한다. 

ex) SELECT 'A'||'B' 

   FROM DUAL; 

-> 결과 : AB

 

2) 대입 연산자 

= 변수에 값을 대입할 때 사용한다

1] '='= 대입기호이지만 사용자의 의도와 다를 수 있다(비교 연산자와 햇갈림)2 ] ':=' = 무조건 대입만 가능한 기호
3) 비교 연산자 = 피연산자들의 크기와 상대적 크기를 판단하여 참(1), 거짓(0)으로 변환한다1] '=' / IS = 양쪽 같으면 참 (같다)EX) SELECT * FROM PERSONS WHERE Address IS NULL -> 주소가 누락된 사람 
2] '!=' / '^=' / '<>' / IS NOT= 양쪽 같이 않으면 참 
3] '<=>'= 양쪽 같으면 참(1), 하나만 다르면 거짓(0)을 반환 ex) SELECT 1<=>1, NULL <=> NULL, 1<=>NULL; // 1,1,0
4] 'IS NULL' <-> IS NOT NULL= 피연산자의 값이 NULL 이면 참 
5] 'BETWEEN A AND B' <-> NOT = A보다 크거나 같고 B보다 작거나 같을 때 참(범위 내 값을 선택하는 연산자)-> 숫자 / 문자EX) SELECT * FROM PRODUECTS WHERE PRICE BETWEEN 10 AND 20=> 문자열, 날짜에는 작은 따옴표는 필수다! 
-> 날짜 EX) SELECT * FROM ORDERS WHERE DATE BETWEEN '20150101' AND '20151230''
6) NOT 칼럼명 = : ~와 같지 않다.7) NOT 칼럼명 > : ~보다 크지 않다.

4] 논리 연산자

= AND(&&) / OR(||) / NOT(!)

1) XOR : 논리식이 서로 다를 경우 참

 

2) LIKE 

목적 1. 컬럼 내용이 특정 패턴에 맞는지 필터링

목적 2. 값의 일부가 일치하는지 알게하는 여부

 

문법 = SELECT * FROM 테이블명 WHERE 컬럼명 = 조건 LIKE 패턴

- 패턴은 %와 같은 와일드 카드와 주로 쓰인다
 
* 와일드 카드
1] % : 0개 이상의 문자열을 대체함
ex) SELECT * FROM USERS WHERE team_id like 'fl%';
2] _ : 딱 1개의 문자만 대체함
EX) SELECT * FROM USERS WHERE team_id like 'taJJ_';

 

 

3) IN 연산자 = 목록에 해당하는게 있으면 참이다- 다양하게 쓰일 수 있다 문법 : SELECT * FROM 테이블명 WHERE 컬럼명 IN(값1, 값2....)

 

4) exists

= 서브쿼리로 컬럼값의 존재 유무만 파악함

- 서브쿼리에만 존재가능

ex) SELECT * FROM A WHERE EXISTS (SELECT * FROM B WHERE A.SUM_ID = B.SUM_ID);

-> 서브쿼리 조건에 만족하는 모든 값을 조회한다

 

5. concat 함수

= ||과 더불어서 sql에서 내용을 합치기가 가능하다.

-> ||은 그냥 합쳐져서 공백제거 등이 불가능하다.

-> concat은 2개의 매개변수를 이용하여 사용한다. 

ex) concat(concat("test", '    '), '0.1'); // test    0.1이 된다.(공백처리가능)

-> 이렇게 중복으로 처리가 가능하다. 

'DB 이야기' 카테고리의 다른 글

디비 이야기 8. 타입변환  (0) 2020.03.03
디비 이야기 7. 제어문  (0) 2020.03.03
디비 이야기 4. DML  (0) 2020.03.01
디비 이야기 3. DBMS와 질의어(DDL)  (0) 2020.02.29
디비 이야기 2. 데이터 베이스   (0) 2020.02.29