http://sugame.tistory.com/184VIEW 생성empvu10 이라는 VIEW을 만듬1 CREATE VIEW empvu102 AS SELECT empno, ename, job3 FROM emp4 WHERE deptno = 10View created. 뷰 수정empvu10의 컬럼을 구조를 바꾸고 컬럼에 별칭을 정의해 줌1 CREATE OR REPLACE VIEW empvu10 (emp_number, emp_name)2 AS SELECT empno, ename3 FROM emp4 WHERE deptno = 10 복합 뷰 생성각 부서 급여를 최소, 최대, 평균을 구하는 뷰 생성함1 CREATE VIEW dept_sum_vu (name, minsal, maxsal, avgsal)2 AS SELE..
출처: http://arumizz.egloos.com/1126538 Key(Constraint): Unique - 중복 허용 안함 Primary Key - 기본 키, Null값 허용 안함, Unique와 동일 Foreign Key - 외래 키, 참조 무결성 Index: Unique Index - 정의된 필드. Unique한 데이터만 허용. ☞ Key의 Unique와 Primary Key 설정시 자동으로 Unique Index가 생성됨. Non-Unique Index - 정의된 필드 중복 허용. K E Y [ Key : Unique 예제 ] 1. 테이블 생성시 정의하는 경우 형식) CREATE TABLE TABLE_NAME ( COLUMN_1, COLUMN_2, ..., CONSTRAINT KEY_NAME..
출처: http://myweb.bcpark.net/~hosuck/gnu3/?doc=bbs/gnuboard.php&bo_table=PG_ORACLE&page=1&wr_id=156 인덱스의 활용 만약 우리가 집을 짓는데 제일 먼저 해야 할 일이 뭘까? 그것은 아마도 설계일 것이다. 기초가 되는 기본 설계를 잘 해야만이 그 후 작업이 원활하고 최적화가 되는 것이다. 프로그래머는 java, servlet, jsp뿐 아니라 최소한의 데이터베이스에 대해서도 알아야 한다. 게시판, 카운터, 일정관리 등을 만드는데 DB 설계를 다른 사람이 해줄 수도 있겠지만 대부분이 개발자가 설계하고 만들기 때문이다. 여기서는 DB에 대해 심도 깊은 공부를 할 수는 없지만 최소한의 지식에 대해 배우기로 한다. 인덱스란 무엇인가? SQ..
COUNT(*) OVER () : 전체행 카운트 COUNT(*) OVER (PARTITION BY 컬럼) : 그룹단위로 나누어 카운트 MAX(컬럼) OVER() : 전체행 중에 최고값 MAX(컬럼) OVER(PARTITION BY 컬럼) : 그룹내 최고값 MIN(컬럼) OVER () : 전체행 중에 최소값 MIN(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 최소값 SUM(컬럼) OVER () : 전체행 합 SUM(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 합 AVG(컬럼) OVER () : 전체행 평균 AVG(컬럼) OVER (PARTITION BY 컬럼) : 그룹내 평균 STDDEV(컬럼) OVER () : 전체행 표준편차 STDDEV(컬럼) OVER (PARTITION ..
http://openframework.or.kr/JSPWiki/Wiki.jsp?page=ReuseSQLFragments http://opensource.atlassian.com/confluence/oss/pages/viewpage.action?pageId=707 SqlMaps를 작성할때, 종종 SQL의 일부가 중복되곤한다. 예를 들어, FROM절이나 제약조건등이 그렇다. iBATIS는 이러한 중복되는 SQL문의 일부를 재사용하기 위한 강력한 태그를 제공한다. iBATIS사용시 대개 다음처럼 작성할것이다. SELECT COUNT(*) AS total FROM items WHERE parentid = 6 SELECT id, name FROM items WHERE parentid = 6 여기서는 FROM절 이..
트리거 (TRIGGER) 란?간단히 말해 INSERT,UPDATE, DELETE 문이 Table 에 대하여 수행 되어질 때 묵시적으로 수행되는 Procedure 이다.트리거는 table 에 저장되는 것이 아니라 별도로 오라클 데이터베이스 자체에 저장 된다.트리거는 view 에 대해서는 동작하지 않고 table 자체에 대해서만 정의 될 수 있다. 트리거란 특정 테이블의 데이터에 변경이 가해졌을때 묵시적으로 자동으로 수행되는 저장 프로시져라 할 수 있다. C++ 언어 또는 Java 의 Class 의 경우 Constructor 와 Destructor 가 있다. 이들은 Class 가 만들어 질때 자동으로 호출되거나 아니면 소멸되기 전에 자동으로 호출되는 묵시적 수행 함수이다. 바로 이와 같은 기능이 트리거이다..
라이센스 문제로 회사에서 쓰던 toad를 삭제하게 됐다. 기본 명령어들이 가물가물~ ^^;; 테이블명 변경 RENAME 변경 전 테이블명 TO 변경 후 테이블명; 컬럼명 변경 ALTER TABLE 테이블명 RENAME COLUMN 변경 전 컬럼명 TO 변경 후 컬럼명; 컬럼 생성 ALTER TABLE 테이블명 ADD (컬럼명 VARCHAR2(10)); 컬럼 삭제 ALTER TABLE 테이블명 MODIFY (컬럼명 VARCHAR2(10)); Primary key로 추가하는 법 1. 변경하고자 하는 컬럼을 NOT NULL로 변경 ALTER TABLE 테이블명 MODIFY (컬럼명 VARCHAR2(10) NOT NULL); 2. Primary key로 지정되어 있는 것을 삭제 ALTER TABLE 테이블명 D..
오라클에서 ms-sql처럼 TOP 1을 뽑고자 할 때에는, ROWNUM을 써야 한다. 근데 ROWNUM은 어떻게든 subquery를 이용할 수 밖에 없어, SELECT 구문에서 다른 테이블의 top 1을 조인하여 가져오고자 할 때엔, 2단계 서브쿼리에서 참조하고자 하는 테이블의 값이 참조되지 않아 답답할 때가 있다. 예를 들어, model 테이블의 모델 정보를 가져오는데 version 테이블에서 해당 모델의 최신 version을 함께 뽑아오고자 한다. model 1:n version ----------- ---------- modelid (PK) versionid(PK) name (UK) modelid(FK) detail ver regdate 위와 같은 테이블이 있고, 해당 모델의 최신 버전은 ORDER..
보통 오라클에서 페이징을 하거나 top n 을 뽑을 때에 ROWNUM을 사용한다. 헌데, SELECT * FROM ( (SELECT ROWNUM AS rnum, FROM ( SELECT * FROM tbl WHERE ~~ ORDER BY regdate DESC) t.* WHERE ROWNUM 80 과 같은 식으로 감싸줘야 한다. 매우 번거롭다. 이걸 ROW_NUMBER() OVER 구문을 통해 아래와 같이 변경할 수 있다. SELECT * FROM ( (SELECT t.*, ROW_NUMBER OVER (ORDER BY regdate DESC) rnum FROM tbl) WHERE rnum BETWEEN 80 AND 100 조금 깔끔해졌다.