■ 연산자의 종류
- 산술을 제외하고, 관계/논리/기타 모두 문자열에 사용 가능하다.
**산술은 문자열에 사용 불가하다.
연산자 | 코드 |
산술 연산자 | + - * / mod(피젯수, 젯수) |
관계 연산자 | > >= < <= =(동일한가) !=(동일하지 않음) <> (동일하지 않음) **null을 체크할 때는, 필드 is null 필드 is not null 을 사용한다. |
논리 연산자 | and or not 필드 between A and B (A이상 B이하) 필드 in (A, B, C) 필드=A or 필드=B or 필드=C |
패턴 비교 연산자 | LIKE, %, _ |
* 오라클은 정수, 실수 개념이 없어서, 10/3은 실수로 나온다. * mod(x,y) --> 나머지 구하는 * dual은 오라클에서 기본적으로 제공하는 테이블이다. * XML에서 < > 태그 사용하므로 >= ~ <= 보다, between을 쓰는게 좋다. * 가급적 not( ) 역조건은 사용하지 않는 것이 좋다. -- why? SELECT를 두 번 하기 때문에 속도 저하 |
■ 기본 필드와 연산 필드
--heading : select의 결과로 추출된 임시 컬럼명
--연산 필드 : 기본 필드의 연산에 의해서 형성된 필드
select
sabun as 사번, -- 기본 필드
saname 사원명, -- as 생략가능
--sajob as 직 급, -- 에러! 공백을 띄어서 표준명명법에 어긋남
sajob as "직 급", -- OK
sapay,
sapay * 0.1 as bonus -- 연산 필드
from sawon
■ 문자의 결합 ||
select (문자데이터)칼럼명 || '추가하고자 하는 문자열' from 테이블명
■ 패턴 비교 연산자 : LIKE, %, _
[1] % (나 다음 모든문자)
select * from 테이블
where (문자데이터)칼럼명 like '김%' -- 맨앞글자가 김인 데이터(그 뒤는 길이도 상관없음)
[2] _ (모든 문자에서 1개)
select * from 테이블
where (문자데이터)칼럼명 like '____-1%'
-- 앞에 6글자는 아무것이나 와도 되나, 그 뒤는 '-1'이 오는 데이터만 추출
■ 정규식을 이용한 패턴 비교(REGEX_LIKE)
정규식은 차후에 업로드 예정 |
▼ 연산자 예시 *출처 : 뉴렉처
[1] 산술 연산 / 문자열 결합 예시
--덧셈은 숫자만 더하기 때문에 숫자 + 문자면 숫자로 더해진다
SELECT 1+'3' FROM DUAL;
--문자와 문자를 더하기
SELECT 1 || '3' FROM DUAL;
--Q. 모든 회원의 이름을 조회하시오. 단 이름은 ID를 붙여서
SELECT NAME || '(' || ID || ')' "이름(ID)" FROM MEMBER;
>> 마지막 Q결과
[2] 비교연산자 예시
-- 게시글 중에서 작성자가 '홍길동'인 게시글만 조회
SELECT * FROM NOTICE WHERE WRITER_ID = '홍길동';
-- 게시글 중에서 조회수가 100이 넘는 글만 조회
SELECT * FROM NOTICE WHERE HIT > 100;
-- 게시글 중에서 내용을 입력하지 않은 게시글을 조회
-- ★ NULL의 경우 = 연산자 사용 불가. 반드시 IS를 써야한다.
SELECT * FROM NOTICE WHERE CONTENT IS NULL;
[3] 논리연산자 예시
-- 조회수가 0, 1, 2인 게시글을 조회하시오.
SELECT * FROM NOTICE WHERE HIT IN (0, 1, 2);
SELECT * FROM NOTICE WHERE HIT = 0 OR HIT = 1 OR HIT = 2;
SELECT * FROM NOTICE WHERE HIT BETWEEN 0 AND 2;
SELECT * FROM NOTICE WHERE 0 <= HIT AND HIT <= 2;
--조회수가 0, 2, 7인 게시글을 조회하시오.
SELECT * FROM NORICE WHERE HIT IN (0, 2, 7);
SELECT * FROM NOTICE WHERE HIT = 0 OR HIT = 2 OR HIT = 7; -- 비효율적
--조회수가 0, 2, 7이 아닌 게시글을 조회하시오.
SELECT * FROM NOTICE WHERE HIT NOT IN(0, 2, 7);
[4] 패턴 비교 연산자 예시
-- 회원 중에서 '박'씨 성을 조회하시오
SELECT * FROM MEMBER WHERE NAME = '박%'; -- 박% 이라는 문자를 찾는다
SELECT * FROM MEMBER WHERE NAME LIKE '박%';
-- 회원 중에서 '박'씨이고 이름이 외자인 회원을 조회하시오.
SELECT * FROM MEMBER WHERE NAME LIKE '박_';
-- 회원 중에서 '박'씨 성을 제외한 회원을 조회하시오.
SELECT * FROM MEMBER WHERE NAME NOT LIKE '박%';
-- 회원 중에서 이름에 '도'자가 들어간 회원을 조회하시오.
SELECT * FROM MEMBER WHERE NAME LIKE '%도%';
[예시 코드 출처]
- 뉴렉쳐 강의
'Language > SQL' 카테고리의 다른 글
[DATABASE] 중복 값 제거 _ DISTINCT (0) | 2022.04.16 |
---|---|
[DATABASE] 함수 (0) | 2022.04.15 |
[DATABASE] 제약조건(Constraint) (1) | 2022.04.13 |
[DATABASE] DDL, DML_테이블 형성 및 데이터CRUD (0) | 2022.04.12 |
[DATABASE] 테이블 용어, 데이터 타입 (0) | 2022.04.12 |