Oracle 보충 2일차

2021. 10. 22. 17:33Oracle

// 오라클 보충 2일차



-- 정렬하고자 하는 컬럼이 몇개 일때 어떻게 할지.

-- 날짜 정렬, 글번호 정렬.

-- 날짜의 내림차순, 글번호의 오름차순.

select * from tbl_board order by replycnt desc, bno;

-- 1차 정렬은 order by 이후 첫번째 항목을 따르고,

-- 동일 값이 발생된다면, order by 이후 두번째 항목을 따라서 정렬.

-- 날짜의 경우 보이는 것은 yy/mm/dd 지만, 내부적으로 시분초 도 가지고 있으므로,

-- 동일값 비교에 문제가 됨. 임의로 replycnt 로 변경.

-- 단일행 함수 처리. select initcap('ORACLE') from dual;

-- 주어진 문자열의 첫글자만 대문자 처리.

select upper('OraCle') from dual;

-- 주어진 문자열을 모두 대문자 처리.

select lower('OraCle') from dual;

-- 주어진 문자열을 모두 소문자 처리.

select concat('oracle', ' sql') from dual;

-- 컬럼과 컬럼의 연결 표현은 || 이용햇지만

-- 문자열의 연결 처리는 concat 이용.

select length('oracle') from dual;

-- 문자열 길이 리턴. select substr('901225-1234567',8,1) from dual;

-- 문자열에서 특정 문자 추출. 자바의 substring() 비슷.

-- substr(문자열, 시작위치, 가져올 문자 갯수)

select substr('901225-1234567',8,3) from dual; select replace('jack and july','j','b') from dual;

-- 주어진 문자열의 특정 문자를 원하는 값으로 변경.

select replace('jack and july','ja','bl') from dual;

-- 변경하는 문자는 1개 이상도 처리 가능. select trim(' abc ') from dual;

-- trim 은 채우다의 의미. -- 위와 같은 모양은 좌우 띄어쓰기 공백 제거.

select trim('0' from '000012340000') from dual;

-- 좌우의 0 제거. select trim('0' from '00001200340000') from dual;

-- 중간의 특정 문자 제거는 trim으로는 되지 않음.

select round(456.789, 2) from dual;

-- round(숫자, 반올림 표현 자리수) select round(456.789, -2) from dual;

-- 정수부로 넘어가서 100의 자리로 반올림.

select mod(10,3), mod(10,0) from dual;

-- 나눈 나머지 추출.

-- 자바라면 0으로 나누는 처리는 산술적 예외가 발생할 수 있지만,

-- 오라클에서는 예외를 발생시키지 않고 처리.

select floor(10.6), floor(-10.6) from dual;

-- 댄스 플로워, 바닥. 정수값만 남기고 버림.

select sysdate from dual;

-- 디비 서버의 날짜와 시분초 출력.

select to_char(sysdate, 'YYYY/MM/DD, (AM) DY HH24:MI:SS') from dual;

-- sysdate 에는 년월일 시분초 요일 정보까지 포함 되어 있음.

select to_char(10000,'$999,999'), to_char(10000,'L999,999') from dual;

-- 그룹 함수

-- tbl_attach

글번호(숫자타입)의 합계를 구하시요.

select sum(bno) from tbl_attach; select bno from tbl_attach;

-- tbl_attach 글번호(숫자타입)의 평균을 구하시요.

select avg(bno) from tbl_attach; select max(bno), min(bno) from tbl_attach;

-- 최고값과 최저값 찾기.

select count(bno) from tbl_attach;

-- 게시판 테이블에서 날짜별 게시물 등록 갯수 찾기.

select regdate, count(regdate) from tbl_board group by regdate;

-- 쿼리문 만들 때,

-- 사용자 요구를 메모.

-- 우리말로 재정리.

-- 부분부분 쿼리화.

-- 쿼리문을 해석할 때,

-- 부분부분 우리말로,

-- 그럴듯한 전체 우리말로 변경.

-- 그룹에 조건 걸기

having select regdate, count(regdate) from tbl_board group by regdate having count(regdate) > 500;

-- join

-- 2개 이상의 테이블 이용.

-- 어떤 게시물에 어떤 덧글이 있는지 궁금해.

select title, reply from tbl_board b, tbl_reply r where b.bno=r.bno;

-- 조인을 하고 검색 조건을 추가.

select title, reply from tbl_board b, tbl_reply r where b.bno=r.bno and reply like '%epl%';

-- 조인 결과를 2개의 테이블로 보지 말고,

-- 하나의 새로운 테이블로 인식하면서,

-- 그 안에 검색 조건을 추가하는 느낌.

-- 셀프 조인

-- 자기가 자기 테이블 참조 라고 생각하면 어렵다.

-- 자기랑 똑같은 쌍둥이 테이블이 있는데, 두개 테이블을 합쳐서 새로운 테이블 만들기.

-- 그리고, 만들어진 테이블에서 결과 찾기.

select title, reply from tbl_board b, tbl_reply r where b.bno=r.bno;

-- 위 쿼리문을 표준 조인으로 변경.

select title, reply from tbl_board b natural join tbl_reply r where b.bno=r.bno;

'Oracle' 카테고리의 다른 글

Oracle 보충 1일차  (0) 2021.10.22
Oracle 예제4.  (0) 2021.09.14
Oracle 5일차.  (0) 2021.09.13
Oracle 4일차.  (0) 2021.09.10
Oracle 예제3.  (0) 2021.09.09