WHERE 뒤에 조건으로 사용할때 쓰는 연산자들이다
데이터를 다양하게 가공하기 위해 필요한 기능들이다
A = B -> 오라클에서는 A값과 B값이 같을경우 true를 반환한다(다르면 false)
A != B
A <> B -> A값과 B값이 다를경우 true 다르면 false
A ^= B 결과값은 3개가 전부동일하다
A <> B 를 부정의 의미로 보편적으로 쓰는것 같다
< > <= >= -> 자바와 같다
AND, OR -> 자바의 &&, || 과 동일한 기능
PRCIE (BANANA > 3000) AND (COLOR = 'YELLOW')
NOT A = B -> A 값과 B 값이 같은 데이터를 먼저 가져오고
그다음 NOT의 기능때문에 true는 false로 false 는 true 로 바꾼다
<> 연산자와는 다르게 더 다양하게 활용 가능하다
IN -> IN 을 단지 하나의 연산자로만 생각하지 말고 여러 개의 '='이라는 생각으로 접근
ENG IN('A','B','C')
=A , =B, =C 처럼 ENG의 A,B,C가 같으면 가져오는 것이다
IS NULL, IS NOT NULL -> 데이터가 NULL값일때 사용하는 기능
A IS NULL
BETWEEN A AND B, NOT BETWEEN A AND B
-> A와 B 사이의 범위의 값을 조회할때 사용하는 기능
항상 A에는 최소값 B에는 최대값이 들어와야한다
PRICE BETWEEN 5000 AND 10000
LIKE, NOT LIKE
-> 특정 문자나 문자열이 패턴이 있을경우 IN으로는 검색이 불편하지만
LIKE로는 검색이 편해지는 경우가 있다 예를들어
은행 -> 국민카드 우리카드 국민은행 우리은행...
수많은 데이터중 카드데이터만 가져오려고 할때
IN으로 명시해주려면 카드사명과 카드를 전부 써주어야 하지만
LIKE 기능을 쓰면 '카드' 라는 패턴을 가지고 검색이 가능하다
추가로 와일드카드 문자를 같이 활용해야 하는데
와일드카드 -> 문자열 내에서 임의의 문자나 문자열을 대체하기 위해 사용되는 기호
% --> 0개 이상의 문자를 대체함
_ ---> 1개의 문자를 대체함
은행 LIKE '%카드' // 카드로 끝나는 패턴의 문자열을 찾는다
// % 가 문자를 대체해주고 있는것이다
은행 LIKE '국민%' // 국민으로 시작하는 패턴의 문자열을 찾는다
음식컬럼의 레코드가 구운고기 삶은고기 고기국수 삶은고기와국수 비빔밥...
음식 LIKE '%고기%' // 문자열에 고기가 들어가면 전부 찾는다
REGEXP 연산자
-> 더욱 복잡한 문자열 패턴을 검색할때 사용
하지만 보통 검색을 하는경우엔 그렇게 복잡한 패턴으로 검색하는 경우가 드물다
이런 연산자도 있다고 기억만해두고 필요할때 찾아서 사용하자
집합 연산자
두개이상의 테이블에서 연관된 데이터를 조회하는 방법
UNION -> 두개의 테이블을 하나로 만드는 연산자 중복데이터는 지움
SELECT * FROM AT
UNION
SELECT * FROM BT
UNION ALL -> UNION 과 유사하지만 데이터의 중복제거를 하지않고 정렬도 하지않는다
SELECT * FROM AT
UNION ALL
SELECT * FROM BT
INTERSECT(오라클에서 지원함 MYSQL은 지원안함)
-> 겹치는 데이터만 중복을 지운후 검색
SELECT * FROM AT
INTERSECT
SELECT * FROM BT
MINUS(오라클에서 지원함 MYSQL은 지원안함)
-> 겹치는 데이터를 제외하고 나머지 데이터를 중복을 지우고 검색
SELECT * FROM AT
MINUS
SELECT * FROM BT
JOIN기능과 굉장히 유사하다
연산자끼리 있을때 우선순위에 따라 처리되므로 연산자가 많이 들어가는 경우에
우선순위를 확인해서 정확한 값이 나오게끔 해야한다
개인적인 생각인데 연산자가 많이 들어가는 문장은 기능적으로 이상하거나
DB의 설계가 잘못되서 데이터를 찾을때 복잡하게 연산자를 많이 쓰게 되는 것 같다