일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- jQuery
- Struts
- iBATIS
- PHP
- oracle
- rowspan
- appspresso
- 선택적조인
- sencha touch
- Android
- Spring
- ibsheet
- GPS
- MFC
- 가우스
- WebLogic
- tomcat
- JDOM
- Eclipse
- dock
- PLSQL
- JSON
- swingx
- jsr 296
- Google Map
- MySQL
- 전자정부프레임워크
- phonegap
- Ajax
- node.js
- Today
- Total
목록Developement/DataBase (109)
Where The Streets Have No Name
SELECT Analytic_Function ( arguments ) OVER( [ PARTITION BY 칼럼 ] [ ORDER BY 절 ] [ Windowing 절] ) FROM 테이블 명; - Partition By : 전체 집합을 기준에 의해 소그룹으로 나눔 - Order By : PARTITION BY에 나열된 그룹을 정렬함 - Windowing : 펑션의 대상이 되는 행 기준으로 범위를 세밀하게 조정 (메뉴얼: window IS a physical or logical SET of rows) * Windowing절에 대한 설명 1. ROWS/RANGE UNBOUNDED PRECEDING/ CURRENT ROW/ value_expr PRECEDING 2. ROWS/RANGE BETWEEN UNBO..
이 함수는 기술된 컬럼이 ROLLUP이나 CUBE 연산시 사용되었는지를 확인하게 해주는 함수로서 별다른 기능은 없으며 ROLLUP이나 CUBE 사용시 사용자의 이해를 돕기 위한 함수이다. 예를 여 출력된 값 중 NULL이 포함되어 있다면 이 값이 원래 DB에서 NULL인지 CUBE, ROLLUP을 통해 NULL인 된 것 인지를 판단 할 수 있다. ROLLUP/CUBE를 통해 NULL이 생기면 ‘1’이라고 표시 한다. SQL> select deptno, job, sum(sal), grouping(deptno), grouping(job) 2 from emp 3 group by cube(deptno, job); DEPTNO JOB SUM(SAL) GROUPING(DEPTNO) GROUPING(JOB) ----..
GROUPING SETS 이 함수는 오라클 이전 버전에서 UNION ALL등을 사용하여 복잡하게 SQL문장을 만드는 부분을 해소 할 수 있도록 한 GROUP BY의 확장이다. 실습을 통해 이해하자. à 아래는 기존 함수인 GROUP BY를 이용하여 부서별 직업별, 직업별, 관리자별 각각 그룹핑을 한 후 둘을 합친 결과를 얻는 예제이다. SQL> SELECT deptno, job, NULL, sum(sal) 2 FROM emp 3 GROUP BY deptno, job 4 UNION ALL 5 SELECT NULL, job, mgr, sum(sal) 6 FROM emp 7 GROUP BY job, mgr; DEPTNO JOB NULL SUM(SAL) ---------- --------- ---------- ..
오라클 9i부터는 ANSI SQL3-1999 표준을 따르게 되어 조인을 사용하는 형태가 조금 달라 졌습니다. 첫째 조인의 형태는 FROM 절에서 명시적으로 지정 했는데 Oracle 9i에서는 특히 Outer Join, Cross Join 이라고 구체적으로 명시함으로써 한번에 알수있게 하였으며 둘째 조인의 조건은 WHERE절과 구분되어 ON절에 명시되는데 Natural Join, Cross Join, Outer Join등으로 나누어 볼 수가 있습니다. 1.자연조인(Natural Join) 9i이전에는 두개 이상의 테이블을 SELECT 하기 위해서는 WHERE절에 테이블의 공통된 컬럼을 이용하여 조인해야 했습니다. 그러나 9i부터는 Natural Join을 사용하여 WHERE절없이 사용하는 것이 가능해 졌습..
NULLIF 함수 NULLIF 함수의 경우 첫 번째 입력 인자와 두 번째 입력 인자가 같은 경우에는 NULL을 반환하고, 그렇지 않을 경우에는 첫 번째 입력 인자의 값을 반환한다. 예를 들어, EMP 테이블의 사원 중에 Sal 열의 값이 5000인 사람에 대해 NULLIF 함수를 적용하는 SQL 문은 다음과 같다. SQL> SELECT ename, sal 2 FROM emp 3 WHERE NULLIF(sal, 5000) IS NULL; 만약 NULLIF 함수를 CASE 문으로 나타낸다면 다음과 같다. CASE WHEN expression1 = expression2 THEN NULL ELSE expression1 END CASE --------------------------------- COALESCE ..
select sum(decode(day,'1',no)) 일, sum(decode(day,'2',no)) 월, sum(decode(day,'3',no)) 화, sum(decode(day,'4',no)) 수, sum(decode(day,'5',no)) 목, sum(decode(day,'6',no)) 금, sum(decode(day,'7',no)) 토 from ( select rownum no, b.mm||b.dd yyyymmdd, to_char(to_date(b.mm||b.dd,'yyyymmdd'),'d') day , ceil((rownum + 7 - to_number(to_char(to_date(b.mm||b.dd,'yyyymmdd'),'d'))) / 7) week from ( select '200403'..
www.oracleclub.com 아래 강좌에서 START WITH와 CONNECT BY절을 이용해서 계층 구조로 쿼리를 해오는것을 살펴봤습니다. 이번에는 계층구조를 이용해서 역순으로 쿼리를 해오는것을 보겠습니다. SQLPLUS scott/tiger -- 조금 깔끔하게 보기 위해서.. 셋팅 먼저 하고요.. SQL> SET LINESIZE 100 SQL> SET PAGESIZE 100 SQL> COL ename FORMAT A20 SQL>SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno, mgr, job FROM emp START WITH EMPNO=7839 CONNECT BY PRIOR empno=mgr; ENAME EMPNO MGR JOB -----------..
www.oracleclub.com ◈ ROLLUP operator - ROLLUP구문은 GROUP BY절과 같이 사용 되며, GROUP BY절에 의해서 그룹 지어진 집합결과에 대해서 좀 더 상세한 정보를 반환하는 기능을 수행합니다. - SELECT절에 ROLLUP을 사용함으로써 보통의 select된 데이터와 그 데이터의 총계를 구할 수 있습니다. ※ 우선 아주 간단한 예제부터 살펴 보겠습니다. (scott유저의 emp테이블을 가지고 테스트 했습니다.) -- Group By를 사용해서 직업별로 급여 합계를 구하는 예제 입니다. SELECT job, SUM(sal) FROM emp GROUP BY job JOB SUM(SAL) ---------- ---------- ANALYST 600 CLERK 3200 ..
www.oracleclub.com ◈ CUBE operator ※ CUBE강좌를 보시기 전에 바로 위에 있는 ROLLUP강좌를 꼭 봐주세요.. ROLLUP 강좌예제 중에서 아래 SQL문 예제를 가지고 CUBE강좌를 진행 하려고 합니다. ==================== ROLLUP 강좌의 예제입니다. ======================= SELECT b.dname, a.job, SUM(a.sal) sal, COUNT(a.empno) emp_count FROM emp a, dept b WHERE a.deptno = b.deptno GROUP BY ROLLUP(b.dname, a.job) DNAME JOB SAL EMP_COUNT ---------- ---------- ---------- -----..
오라클팁에 "계층 구조의 조회(Hierarchical Queries)" 강좌에서 CONNECT BY 와 START WITH를 상관관계 쿼리에 대해서 소개를 했었습니다. Oracle10g 부터 CONNECT BY 절에서 제공하는 CONNECT_BY_ROOT, SYS_CONNECT_BY_PATH, CONNECT_BY_ISLEAF 기능에 대해서 알아보겠습니다. SQLPLUS scott/tiger SQL>SET LINESIZE 100 SQL>SET PAGESIZE 100 SQL>COL ename FORMAT A20 ◈ 상관관계 쿼리 예제 SQL>SELECT LPAD(' ', 4*(LEVEL-1)) || ename ename, empno FROM emp START WITH job='PRESIDENT' CONNEC..
사용법은 SYS_CONNECT_BY_PATH(컬럼명, 구분자) SELECT LPAD('' '', 2*LEVEL-1)||SYS_CONNECT_BY_PATH(ename, ''/'') "Path" FROM scott.emp START WITH ename = ''KING'' CONNECT BY PRIOR empno = mgr; Path ------------------------------------------------------------ /KING /KING/JONES /KING/JONES/SCOTT /KING/JONES/SCOTT/ADAMS /KING/JONES/FORD /KING/JONES/FORD/SMITH /KING/BLAKE /KING/BLAKE/ALLEN /KING/BLAKE/WARD /KING..
WITH Clause 의 활용 with clause 는 Oracle 9i 에서 추가된 기능으로 동일한 SQL 구문을 매크로와 유사한 개념으로 사용함으로써 SQL 을 간단하게 작성하 하며 performance 향상에도 도움을 주도록 고안되어 있습니다. 동일한 SQL 부분은 임시 테이블을 생성할 것인지 아니면 인라인뷰와 조인등으로 처리할 것인지 옵티마이저가 판단하여 실행계획이 수립되게 됩니다. Scalar Subquery 는 함수처럼 사용할 수 있으나 제약조건중 하나가 인라인 뷰가 중첩되어 있을때 메인쿼리의 조건이 스칼라 서브쿼리 안쪽의 인라인뷰 쪽으로 파고드는 View Merging 이 일어나지 않는 다는 점입니다. SELECT DEPTNO, (SELECT COUNT(*) -- 1 레벨 FROM (SELE..
■ CREATE DATABASE database_name (데이타베이스이름) 데이타 베이스 이름은 문자와 숫자, '_' 를 포함하는 32 byte 이내로 작성한다. 이 명령은 새로운 데이타베이스 공간을 생성시킨다. ■ DROP DATABASE database_name 존재하는 데이타베이스를 제거한다. 데이타베이스 상에 존재하는 테이블도 모두 삭제 되므로 매우 조심하여 작업하여야 한다. 한번 삭제되면 복구는 불가능 하므로 데이타 베이스 상의 테이블과 데이타가 모두 백업이 되었는지 확인하고 작업한다. ■ CREATE TABLE table_name ( create_definition,... ) 데이타베이스 상에 테이블을 생성시키는 명령이다. 자세한 옵션은 다음과 같다. create_definition: col..
http://www.oracle.com/technology/global/kr/pub/articles/oracle_php_cookbook/index.html
SQL질의를 사용하는 아래의 예는 오라클 9iR2이상에서만 가능합니다. 즉, 오라클 9i부터 컬럼명 변경을 위한 SQL문법이 제공됩니다. SQL> ALTER TABLE table_name RENAME COLUMN old_column_name TO new_column_name; SQL> alter table test rename column pass to passwd; 테이블이 변경되었습니다.
select months_between(sysdate,to_date('2002-12-22','yyyy-mm- dd')) -- months_between(A,B) = A-B/30 --select add_months(sysdate,4) -- 특정일의 달수 더한 날 --select next_day(sysdate,'friday') -- 특정일의 다음주 요일 --select last_day(sysdate) -- 특정일의 해당 월의 마지막 날 --select round(sysdate,'dd') -- 특정일의 반올림(오후면 다음날..) --select trunc(sysdate,'ww') -- 특정일의 주 첫일 찾기 from dual # 날짜계산 /* 어제 */ 날짜칼럼 BETWEEN TRUNC(SYSDATE-1) A..
ROLLUP operator는 SELECT문의 GROUP BY절에 사용된다. SELECT절에 ROLLUP 을 사용함으로써 'regular rows'(보통의 select된 data)와 'super-aggregate rows'(총계)을 구할 수 있다. 기존에는 select ... union select 를 이용해 구사해야 했었던 것이다. 'super-aggregate rows'는 'sub-total' (중간 Total, 즉 소계)을 포함한다. CUBE operator는 Cross-tab에 대한 Summary를 추출하는데 사용된다. 모든 가능한 dimension에 대한 total을 나타낸다. 즉 ROLLUP에 의해 나타내어지는 item total값과 column total값을 나타낸다. NULL값은 모든 값에..
create table copy_t ( no number(3) not null, vno varchar(3) not null ) pctfree 0 pctused 40 initrans 1 maxtrans 255 storage ( initial 40 k next 40 k pctincrease 0 minextents 1 maxextents 121 ) tablespace users ; create unique index copy_t_i00 on copy_t ( no asc ) pctfree 0 storage ( initial 40 k next 40 k pctincrease 0 minextents 1 maxextents 121 ) tablespace indx ; alter table copy_t add ( cons..
/******************************************************************** 작성자 : 김대훈 작성일 : 20040206 테이블 : copy_ymd 용 도 : 일자 복제용 ********************************************************************/ create table copy_ymd ( ymd varchar2(8) not null, ymd_dm date not null ) tablespace users ; insert into copy_ymd (ymd, ymd_dm) select to_char(to_date('19591231','yyyymmdd') + rownum, 'yyyymmdd'), to_date('..
CREATE TABLE WAF_CATEGORY ( CTGY_ID NUMBER NOT NULL, SITE_CODE VARCHAR2 (20), CTGY_CODE VARCHAR2 (20), CTGY_TYPE VARCHAR2 (10), CTGY_NAME VARCHAR2 (50), CTGY_DEPTH VARCHAR2 (10), CTGY_PATH VARCHAR2 (200), EXE_ID VARCHAR2 (20), PARENT_ID NUMBER, CRE_BY NUMBER, CRE_DATE DATE, UPD_BY NUMBER, UPD_DATE DATE, PRIMARY KEY ( CTGY_ID ) ) ; SQL> select ctgy_id, parent_id, ctgy_depth, ctgy_code, ctgy_name ..