- Select 후 데이터칸에서 오른쪽마우스 [ Fetch all rows ] 클릭
전체적인 데이터행들이 출력되어진다.
- Data 출력 행 첫번째셀을 선택 오른쪽마우스 [ Save/show grid as a excel file...]
엑셀로 저장 되어진다.
# 해당 일부터 30일 날짜
SELECT TO_CHAR(TO_DATE(BB.DAY, 'YYYYMMDD') + NUM, 'YYYY-MM-DD') AS DAY
FROM (
SELECT ROWNUM AS NUM
FROM DICTIONARY A,(
SELECT B.DAY AS BDAY, C.DAY AS CDAY
FROM
( SELECT TO_CHAR(SYSDATE,'YYYYMM') || '01' AS DAY FROM DUAL ) B,
( SELECT TO_CHAR(LAST_DAY(SYSDATE),'YYYYMMDD') AS DAY FROM DUAL ) C
) B
WHERE ROWNUM <= TO_DATE(B.CDAY, 'YYYYMMDD') - TO_DATE(B.BDAY, 'YYYYMMDD') + 1) AA,
( SELECT TO_CHAR(SYSDATE - TO_NUMBER(TO_CHAR(SYSDATE,'D')) + 1,'YYYYMMDD') AS DAY FROM DUAL ) BB
# 현재 날짜에서 일주일 날짜..
SELECT TO_CHAR(TO_DATE(BB.DAY, 'YYYYMMDD') + NUM-1, 'YYYY-MM-DD') AS DAY
FROM (
SELECT ROWNUM AS NUM
FROM DICTIONARY A,(
SELECT B.DAY AS BDAY, C.DAY AS CDAY
FROM
( SELECT TO_CHAR(SYSDATE - TO_NUMBER(TO_CHAR(SYSDATE,'D')) + 1,'YYYYMMDD') AS DAY FROM DUAL ) B,
( SELECT TO_CHAR(SYSDATE - TO_NUMBER(TO_CHAR(SYSDATE,'D')) + 7,'YYYYMMDD') AS DAY FROM DUAL ) C
) B
WHERE ROWNUM <= TO_DATE(B.CDAY, 'YYYYMMDD') - TO_DATE(B.BDAY, 'YYYYMMDD') + 1) AA,
( SELECT TO_CHAR(SYSDATE - TO_NUMBER(TO_CHAR(SYSDATE,'D')) + 1,'YYYYMMDD') AS DAY FROM DUAL ) BB
# 시작일부터 끝일까지
SELECT TO_CHAR(TO_DATE('[SDATE]', 'YYYY-MM-DD') + NUM-1, 'YYYY-MM-DD') AS DAY
FROM (
SELECT ROWNUM NUM
FROM DICTIONARY
WHERE ROWNUM <= TO_DATE('[EDATE]', 'YYYY-MM-DD') - TO_DATE('[SDATE]', 'YYYY-MM-DD') + 1
)
# 날짜계산
/* 어제 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE-1) AND TRUNC(SYSDATE-1)
+0.99999421
/* 오늘 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE) AND TRUNC(SYSDATE) + 0.99999421
/* 내일 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE+1) AND TRUNC(SYSDATE+1)
+0.99999421
/* 금주 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'D')
AND TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'D')
+6.99999421
/* 차주 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE+8)-TO_CHAR(SYSDATE, 'D')
AND TRUNC(TRUNC(SYSDATE)+14.99999421)-TO_CHAR
(SYSDATE, 'D')
/* 금월 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE+1)-TO_CHAR(SYSDATE,'DD')
AND TRUNC(LAST_DAY(SYSDATE))+0.99999421
/* 전월 */ 날짜칼럼 BETWEEN TRUNC(ADD_MONTHS(SYSDATE,-1)+1)-TO_CHAR
(SYSDATE,'DD')
AND TRUNC(LAST_DAY(ADD_MONTHS(SYSDATE, -1)))
+0.99999421
/* 차월 */ 날짜칼럼 BETWEEN ADD_MONTHS(TRUNC(SYSDATE),1)-TO_CHAR
(SYSDATE,'DD')+1
AND LAST_DAY(ADD_MONTHS(TRUNC(SYSDATE),1)
+0.99999421)
# 특정일 까지의 간격을 년, 개월, 일로 표현하기
SELECT
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19970101', 'YYYYMMDD'))/12) "년",
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19970101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19970101', 'YYYYMMDD'))/12) *
12) "개월",
TRUNC((MONTHS_BETWEEN(SYSDATE,TO_DATE('19970101', 'YYYYMMDD')) -
TRUNC(MONTHS_BETWEEN(SYSDATE, TO_DATE('19970101', 'YYYYMMDD')))) *
30.5) "일"
#일주일 단위로 날짜 가져오기^^
SELECT TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) - 0,'YYYY-MM-DD') AS PRE,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 1,'YYYY-MM-DD') AS MON,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 2,'YYYY-MM-DD') AS TUE,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 3,'YYYY-MM-DD') AS WED,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 4,'YYYY-MM-DD') AS THU,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 5,'YYYY-MM-DD') AS FRI,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 6,'YYYY-MM-DD') AS SAT,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 7,'YYYY-MM-DD') AS SUN,
TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD') - TO_NUMBER(TO_CHAR(to_date('"+str_searchDay+"','YYYY-MM-DD'),'D')) + 8,'YYYY-MM-DD') AS NEX
FROM DUAL
-0 은 어제 +8은 담주 월요일입니다.
└ᘐ jdbc란?
- Java Data Base Contectivity의 약자
자바 언어를 이용해서 데이터베이스를 관리하는 기술
* JDBC에게 통역을 맡기는 방법
->사용할 데이터베이스의 드라이버를 지정해주는 것 (DB의 DBMS를 지정)
* JDBC를 처리하기 위한 API
-> java.sql.*;
└ᘐ 자바에서 데이터베이스 사용
1단계 : 드라이버 로딩
Class.forName("드라이버 이름");
1. 오라클
oracle.jdbc.driver.OracleDriver
2. MS-SQL
com.microsoft.jdbc.sqlserver.SQLServerDriver
3. MY-SQL
org.gjt.mm.mysql.Driver
4. Access(ODBC)
sun.jdbc.odbc.JdbcOdbcDriver
2단계 : 데이터베이스에 접속
-> 사용할 데이터베이스에 사용자 프로그램이 데이터베이스의 사용을 허락하는 과정
데이터베이스의 접속이 끊어지면 해당 데이터베이스는 더이상 사용 불가
[사용함수]
DriverManager 인터페이스에 있는
getConnection() 함수
3단계 : 스테이트먼트 생성
스테이트먼트란?
-> 프로그램과 DBMS사이에 질의명령을 전달하고 그 결과를 받아오는 도구
없으면 질의명령을 전달하지 못하고, 질의를 실행시킬 수 없다.
[사용함수]
Connection 인터페이스 안에 있는
createStatement() 함수가 만들어 준다.
4단계 : 질의 던지기
-> 데이터베이스를 관리하기 위해 사용자가 데이터베이스에게 질의를 알려주어야함
[사용함수]
Statement 인터페이스 소속
execute("질의");
executeUpdate("질의");
executeQuery("질의"); 함수 사용
5단계 : select 질의 결과 관리
-> select 질의의 결과는 가상 테이블로 탄생
이 가상의 테이블을 프로그램이 관리해야 하는데 그 관리하는 클래스 ResutSet이다.
[사용함수]
1. 레코드 포인터 이동
afterLast() EOP로 이동 ┐
beforeFirst() BOP로 이동 ┴ 반환값이 없다
first() 1번 레코드로 이동 ┐
last() 마지막 레코드로 이동 │
next() 현재 위치의 다음 레코드로 이동 ├ 반환값이 boolean
previous() 현재 위치의 이전 레코드로 이동 ┘
2. 특정 필드값 꺼내기
getXXX(숫자); ->XXXX는 해당 필드의 데이터 형태
getXXX("필드이름");
▶ SELECT 문
[형식]
SELECT * FROM table명 ;
└> 컬럼명 (* 는 모든 것을 나타내라는 의미)
⊙ 산술 연산자 사용
-> + , - , * , / 와 같은 산술 연살자를 사용할 수 있다.
<고려사항>
1. 산술 연산자의 우선순위를 고려 해야 한다.
* 산술 연산자의 우선순위
- * , / -> + , -
- 같은 시엔 왼쪽에서 오른쪽으로 가면서 연산
2. 별명(aliase)를 부여하는것이 좋다.
[형식]
select empno (as - 생략가능) "사번" from emp;
└ 별명 ("a" =>대문자, a =>소문자로 출력됨)
ex) select empno 사번; (가능)
select empno 사...번; (불가능)
select empno 사_번; (가능)
※ 특수문자 중엔 _ 만 인식 가능! 다른건 오류발생!
⊙ NULL 값일 경우 사용
- null 값까지 처리해야 할 경우 => NVL(컬럼, 0) 함수 사용
ex) select ename, sal, nvl(comm, 0) from emp;
⊙ 연결 연산자 & 문자열 사용
- 연결연산자( || ) 를 사용
- 연산 결과는 문자열
- 문자와 날짜는 인용부로로 감싼다(' ' -> 인용부호)
ex) select 'Dear '|| ename from emp;
-> 출력결과 : Dear ename
⊙ 중복된 로우 제거
- DISTINCT 라는 키워드 사용
- 중복 제거 후 출력(정렬됨)
- 그룹을 보고자 할 때 사용하는 키워드 -> distinct 컬럼,컬럼 일경우
ex) select distinct deptno from emp;
⊙ 로우 제한과 정렬
- 오름차순으로 정렬 : order by
- 내림차순으로 정렬 : desc
ex) select empno from emp order by hiredate; - 오름차순!
select empno from emp order by hiredate desc; - 내림차순!
댓글을 달아 주세요