티스토리 뷰

Goal 

 - Oracle DB에서 연산자를 통해 데이터를 조회한는 방법을 예시를 통해 알아본다.

 - 산술 연산자, 비교 연산자, 관계 연산자, 패턴 비교 연산자

1. 산술 연산자

 - 연산자 : +, -, *, / 

 

1-1 연산자 +의 사용시 주의할 점

 1) 공지사항(NOTICE)의 조회수를 조회하시오. 단 기존 값에 1을 더해서 조회하시오

 - SELECT HIT+1 FROM NOTICE; 와 같이 조회하면, 조회된 속성의 이름이 HIT+1처럼 나타난다, 이렇게 나오게 되면 JDBC를 사용할 때 참고하고자 하는 속성명이 달라서 오류가 발생할 수 있다.

 - 따라서 이럴 때는 as를 사용하여 SELECT HIT+1 (as) HIT FROM NOTICE;와 같이 조회한다.

 

1-2 숫자와 문자의 + 연산

 - SELECT 1 + '3' FROM DUAL; 을 실행 하면, 1+'3'속성 값으로 4가 출력된다. Java같은 경우는 문자열과 숫자를 더했을 때 숫자를 문자로 바꾸어 13의결과를 출력하지만 Oracle DB에서 +연산자는 무조건 숫자를 연산하기 때문에 문자를 숫자로 바꾸어 계산한다.  

 - SELECT 1 + 'a' FROM DUAL; 을 실행하면 a를 숫자로 바꿀 수 없기 때문에 오류가 발생한다.

 * || : 오라클에서 문자를 더하기 위해사용하는 연산자.

  - SELECT '3' || 10 FROM DUAL; 을 실행하면 문자 310이 출력된다.

  ex) SELECT WRITER_ID || '(' || ID || ')'  FROM NOTICE; = Writer(ID) 형식으로 출력

 * FROM DUAL : DUAL은 Oracle에서 제공하는 더미 테이블로서, SELECT를 실행할 때 반드시 FROM 옆에 테이블을 지정해야 하기 때문에 테이블이 없는 경우 테스트용도로 DUAL값을 자주 사용한다. 

2. 비교 연산자

 - 필터링을 위한 연산자

 - =, !=, ^=, <>, >, <, >=, <=, IS NULL, IS NOT NULL

 ex) SELECT * FROM NOTICE WHERE WRITER_ID = 'newlec';

 ex) SELECT * FROM NOTICE WHERE HIT > 3;

 ex) SELECT * FROM notice where content is null; : content 속성의 값이 null인 데이터를 선택한다. (is not null은 반대)

 - 같지 않다의 연산자 3개 : != (대부분의 DBMS에서 사용되어 표준으로 굳어짐), ^= (오라클 및 소수의 DBMS에서만 사용하여 호환성이 높지 않음), <> (공식적인 표준, 같지 않다 연산자) 

 - 가능하면 자주 사용하는 !=을 사용하는 것이 좋다.

3. 관계연산자

 - NOT, AND, OR, BETWEEN, IN

 ex) select * from notice where hit = 0 or hit = 2; 

 ex) select * from notice where 0 <= hit and hit <= 11; (범위를 나타낼 때는 AND 연산이 바람직함)

 ex) select * from notice where hit between 0 and 2; : AND 연산자의 사용빈도가 높기 때문에 범위를 좀더 간편하게 나타내기 위해 between을 사용한다. 

 1) 조회수가 0, 2, 7인 게시글을 조회하시오

 - select * from notice where hit = 0 or hit = 2 or hit = 7; : or을 이용해서 조건을 선택할 수 있지만, 조건이 많아 질 경우 코드가 복잡해진다.

 - select * from notice where hit in (0, 2, 7); : hit 0, 2, 7에 해당하는 조건 출력. or을 사용할 때보다 in을 사용하면 간편하게 코드를 작성할 수 있다.

 - select * from notice where hit not in (0, 2, 7); 0, 2, 7이 아닌 게시글을 조회한다.

4. 패턴 비교 연산자 

 - LIKE, %, _

 1) 회원 중에서 '박'씨 성을 조회하시오

  - SELECT * FROM MEMBER WHERE Name LIKE '박%'; MEMBER테이블의 Name 속성에서 박을 성으로가진 회원 선택

 2) 회원 중에서 '박'씨이고 이름이 외자인 회원을 조회하시오

  - 자릿수를 한정할 때는 %가 아닌 _를 사용한다 

  - SELECT * FROM MEMBER WHERE Name LIKE '박_" : 성으로 박을 가지고 뒤에 한글자가 더 오는 멤버 즉, 박씨 성을 가진 외자 회원을 선택한다.

 3) 회원 중에서 '박'씨 성을 제외한 회원을 조회하시오.

  - 관계 연산자 NOT을 같이 사용

  - SELECT * FROM MEMBER WHERE NAME NOT LIKE '박%';

 4) 회원 중에서 이름에 '도'자가 들어간 회원을 조회하시오.

  - SELECT * FROM MEMBER WHERE NAME LIKE '&도&';

'DataBase > 오라클 SQL' 카테고리의 다른 글

ROWNUM (Oracle DataBase)  (0) 2020.05.03
정규식을 이용한 패턴 비교 (REGEX_LIKE)  (2) 2020.04.29
트랜잭션 (DATA BASE)  (0) 2020.04.27
데이터 조작하기 DML  (0) 2020.04.27
테이블 수정하기 (ALTER TABLE)  (0) 2020.04.27
댓글