1. like 키워드 : 검색을 하는 키워드
where name like '%A%'
==> name 컬럼에서 A를 포함하는 데이터 검색
where name like 'A%'
==> name 컬럼에서 첫 글자가 A로 시작하는 데이터 검색
where name like '%A'
==> name 컬럼에서 마지막 글자가 A로 끝나는 데이터 검색
where name like '_A%'
==> name 컬럼에서 두번째 글자가 A인 데이터 검색
2. order by 절
- 자료를 정렬하여 나타내고자 할 때 사용하는 구문.
- order by 절을 사용할 때는 select 구문의 마지막에 위치해야 함.
asc : 오름차순 정렬 (default)
desc : 내림차순 정렬
null값에 대해서 오름차순에서는 제일 나중에 나오고, 내림차순에서는 제일 먼저 나온다.
예시)
emp 테이블에서 부서번호를 기준으로 오름차순으로 정렬하고, 부서번호가 같은 경우 급여를 기준으로 내림차순 정렬 하여 출력
select * from emp order by deptno asc, sal desc;
3. not 키워드
- 부정의 의미를 줌
- 쿼리문 작성시 키워드 앞에 not을 붙이면 됨.
예시)
emp 테이블에서 담당업무가 'MANAGER', 'CLERK', 'ANALYST'가 아닌 사원의 사번, 이름, 담당업무, 급여를 출력
select empno, ename, job, sal from emp
where job not in('MANAGER', 'CLERK', 'ANALYST');
4. 그룹함수
- 여러 행 또는 테이블 전체에 대하여 함수가 적용되어 하나의 결과값을 가져오는 함수
1) avg() : 평균값을 구해주는 함수.
2) count() : 행의 개수를 구해주는 함수. *null값은 무시함.
3) max() : 최대값을 구해줌
4) min() : 최소값을 구해줌
5) sum() : 총합을 구해줌
예시)
emp 테이블에서 관리자의 수을 화면에 출력
select count(distinct mgr) "관리자 수" from emp;
*as 생략하고 ""로 닉네임 붙일 수 있음.
emp 테이블에서 모든 SALESMAN의 급여 평균과, 급여최고액, 급여최소액, 급여합계액을 출력
select avg(sal) "급여평균", max(sal) "급여최고액", min(sal) "급여최소액", sum(sal) "급여합계액" from emp where job = 'SALESMAN';
5. 시퀀스
시퀀스란 자동으로 순차적으로 증가하는 순번을 반환하는 데이터베이스 객체.
보통 PK값에 중복값을 방지하기위해 사용.
1
2
3
4
5
6
7
8
9
10
|
--문법
CREATE SEQUENCE [시퀀스명]
INCREMENT BY [증감숫자] --증감숫자가 양수면 증가 음수면 감소 디폴트는 1
START WITH [시작숫자] -- 시작숫자의 디폴트값은 증가일때 MINVALUE 감소일때 MAXVALUE
NOMINVALUE OR MINVALUE [최솟값] -- NOMINVALUE : 디폴트값 설정, 증가일때 1, 감소일때 -1028
-- MINVALUE : 최소값 설정, 시작숫자와 작거나 같아야하고 MAXVALUE보다 작아야함
NOMAXVALUE OR MAXVALUE [최대값] -- NOMAXVALUE : 디폴트값 설정, 증가일때 1027, 감소일때 -1
-- MAXVALUE : 최대값 설정, 시작숫자와 같거나 커야하고 MINVALUE보다 커야함
CYCLE OR NOCYCLE --CYCLE 설정시 최대값에 도달하면 최소값부터 다시 시작 NOCYCLE 설정시 최대값 생성 시 시퀀스 생성중지
CACHE OR NOCACHE --CACHE 설정시 메모리에 시퀀스 값을 미리 할당하고 NOCACHE 설정시 시퀀스값을 메로리에 할당하지 않음
|
cs |
6. Join 키워드
- 테이블과 테이블을 연결하여 특정한 데이터를 얻고자할 때 사용
- 두 개 이상의 테이블에 정보가 나뉘어져 있을 때 사용.
Join의 종류
1) Cross Join
두 개 이상의 테이블을 조인할 때 조건없이 결합함.
select * from 테이블1, 테이블2;
2) Equi Join (등가조인)
- 두 테이블에 하나라도 공통 컬럼이 존재해야 함.
- 컬럼의 혼동을 피하기 위해 별칭을 붙여 사용함.
1
2
3
4
5
6
7
|
select empno, ename, job, e.deptno, dname, loc
from emp e join dept d
on e.deptno = d.deptno
where d.dname = 'RESEARCH';
|
cs |
3) Self Join
하나의 테이블 내에서 조인을 해서 자료를 얻는 방법.
테이블 자기자신에게 별칭을 여러개 붙여서 사용.
예)
1
2
3
|
select e1.ename || '의 매니저 이름은 ' || e2.ename || '입니다.'
from emp e1 join emp e2
on e1.mgr = e2.empno;
|
cs |
4) Outer Join
2개 이상의 테이블을 조인할 때 어느 한 쪽 테이블에는 데이터가 존재하지 않는 경우에 데이터가 출력되지 않는 문제를 해결하기 위해 사용.
1
2
3
4
|
select ename, d.deptno, dname
from emp e join dept d
on e.deptno(+) = d.deptno
order by deptno;
|
cs |
dual 테이블
- 오라클에서 자체적으로 제공해 주는 테이블
- 간단하게 함수를 이용해서 계산, 결과값을 확인할 때 사용하는 테이블.
- 오직 한 행, 한 컬럼만을 담고 있음.
- 특정 테이블을 생성할 필요 없이 함수 또는 계산을 하고자 할 때 사용.
오라클에서 제공해 주는 함수들
1. 날짜와 관련된 함수들.
1) 현재 시스템의 날짜를 구해 오는 함수 sysdate
select sysdate from dual;
select sysdate "현재 날짜", sysdate-1 "어제 날짜", sysdate+1 "내일 날짜" from dual
2) 몇 개월 이후의 날짜를 구하는 함수
add_months(현재 날짜, 숫자(개월 수))
select add_months(sysdate, 3) from dual;
3) 다가올 날짜(요일)을 구해주는 함수
next_day(현재 날짜, '요일')
select next_day (sysdate, '화요일') from dual;
4) 달의 마지막 날을 구해주는 함수
last_day()
select last_day(sysdate) from dual;
5) 두 날짜 사이의 개월 수 차이를 구하는 함수
months_between()
select empno, ename, hiredate, sysdate, months_between(sysdate, hiredate) "개월 수 차"
from emp;
6) 형식에 맞게 문자열로 날짜를 출력하는 함수
to_char(날짜, '날짜형식')
select to_char(sysdate, 'MM/dd/yyyy') from dual;
문자와 관련된 함수들
1) 대문자, 소문자를 바꾸어 주는 함수
upper() : 대문자로
lower() : 소문자로
initcap() : 첫글자만 대문자로 나머지는 소문자로
2) 길이를 알려줌
length()
lengthb()
3) 문자열 일부를 추출
substr('문자열', 시작위치, 추출할 문자 길이)
시작위치가 음수인 경우는 마지막글자부터 셈
시작위치만 입력할 경우 시작위치부터 끝까지 출력
select substr('123456', 3, 2) from dual; ==> 34
select substr('abcdef', -4, 2) from dual; ==> cd
select substr('abcdef', 3) from dual; ==> cdef
4) 문자열을 연결하는 함수: concat('문자열1', '문자열2');
5) 자릿수를 늘려주는 함수
왼쪽 자릿수를 늘려주는 함수: lpad('문자열', 전체자릿수, '늘어난 자릿수에 들어갈 문자열')
오른쪽 자릿수를 늘려주는 함수: rpad('문자열', 전체자릿수, '늘어난 자릿수에 들어갈 문자열')
6) 문자를 지워주는 함수
왼쪽 문자를 지워주는 함수 : ltrim()
오른쪽 문자를 지워주는 함수 : rtrim()
7) 문자열을 교체해 주는 함수
replace('원본 문자열', '교체될 문자열', '새로운 문자열');
'국기훈련과정 > Oracle SQL' 카테고리의 다른 글
06. JAVA에서 쿼리문 사용하기 (0) | 2021.09.07 |
---|---|
05. JAVA와의 연동 (0) | 2021.09.07 |
04 (0) | 2021.09.07 |
03. (0) | 2021.09.06 |
01. (0) | 2021.09.02 |