본문 바로가기

DataBase

[Oracle] Show Indexes of Table 테이블에 걸려있는 index 조회 SELECT R1.UNIQUENESS, R2.* FROM ALL_INDEXES R1, ALL_IND_COLUMNS R2 AND R2.INDEX_NAME = R1.INDEX_NAME WHERE R1.TABLE_NAME=UPPER('테이블명'); 더보기
식별관계( Identifying Relationship ) & 비식별관계( Non Identifying Relationship ) 관계( Relationship ) - 두 entity간의 업무적인 연관성 . 식별관계( Identifying Relationship ) - 부모 테이블의 기본키 or 복합키가 자식 테이블의 기본키 or 복합키의 구성원으로 전이되는 식별관계( 부모가 자식의 모든 정보를 저장하게 됨) . 비식별관계( Non Identifying Relationship ) - 자식 테이블의 일반 속성( Attribute ) 그룹의 구성원으로 전이되는 비식별관계( 부모는 자식의 부분적인 정보를 표현함 ) . 식별관계의 단점 주 식별자 영역이 점점 비대해지며(식별관계는 부모 실체의 주 식별자를 자식 실체의 주 식별자로 계속하여 전파시키는 특성이 있기 때문에), 결과적으로 무의미한 외래 식별자들이 주 식별자 영역에 들어가는 경우도.. 더보기
[ORACLE] FIRST, LAST (최대, 최소값을 가진 로우 추출) FIRST, LAST (최대, 최소값을 가진 로우 추출) - 최대, 최소값을 가진 로우를 추출한다. - 자체로는 함수가 아니며 분석 함수와 같이 사용하는 키워드이다. [구문 형식] 집계 함수 KEEP ( 함수 FIRST[LAST] ORDER BY expr [ASC | DESC] ) OVER ( PARTITION BY expr .... ) ☞ 부서별 최대급여, 최소급여 select dept , max(salary) , min(salary) from ( select 10 dept, 100 id, 39000 salary from dual union all select 20 dept, 101 id, 30000 salary from dual union all select 20 dept, 102 id, 9000 s.. 더보기
[ORACLE] ROW_NUMBER, RANK, DENSE_RANK, 분석용함수 정리 ★ ROW_NUMBER() OVER- 특정 컬럼 기준으로 순위정하기(행번호 부여하기) SELECT T.MAIN_CODE , T.GOODS_SEQ , T.OFFER_MASTER_SEQ , MODEL_CD , (ROW_NUMBER() OVER(PARTITION BY T.MAIN_CODE ORDER BY T.MAIN_CODE, T.GOODS_SEQ, T.OFFER_MASTER_SEQ)) RANK -- , (ROW_NUMBER() OVER(PARTITION BY 중복조회컬럼 ORDER BY 정렬컬럼1, 정렬컬럼2, ...)) FROM TMP_TABLE T 결과 MAIN_CODE GOODS_SEQ OFFER_MASTER_SEQ MODEL_CD RANK ----------------------------------.. 더보기
ERwin 7.3 설정 ERwin 표기방식 변경하기 Idef1x (Integration DEFinition for Information Modeling) 방식 => IE (Information Engineering) 방식 Model 메뉴 > Model Properties... > 세번째 Notation 탭에서 IDEF1X 에서 IE 로 변경해준다. [참조] http://onesixx.tistory.com/376 ERD에서 자기 참조 관계를 표현하려면 그냥 그리는 것은 할 수 있는데, 아래와 같이 Relationships에서 Rolename을 지정해 주지 않으면 자기 테이블의 PK 컬럼이 자기 자신 컬럼을 FK로 참조하는 것으로 간주하여 Forward Engineering 으로 Script를 생성하여 실행시키면 SQL 에러가 난.. 더보기
Partition Table(파티션 테이블) I. 오라클 파티션 정의 1. 파티션 개요 오늘날 기업에서 관리하는 데이터는 수백테라 바이트에 이르는 데이터베이스를 관리한다. 하지만 이런 데이터들 중 몇몇의 Big Transaction Table이 거의 모든 데이터를 가지고 있고 나머지 테이블들은 이 Big Transaction Table을 경유하여 액세스 하는 용도로 사용된다. 이렇게 데이터 크기도 크고 중요한 Big Transaction Table을 관리하는 부분에서 Troubleshooting이 발생될 경우 데이터베이스의 성능 및 관리작업에 심각한 영향을 받을 수 있다. 이러한 리스크가 있는 Big Transaction Table을 보다 효율적으로 관리하기 위해 Table을 작은 단위로 나눔으로써 데이터 액세스 작업의 성능 향상을 유도하고 데이터.. 더보기
select 구문으로 update 하기(오라클) UPDATE table_a SET column_a = column_b WHERE userid IN (SELECT userid FROM b) UPDATE table_a SET (column_1, column__2) = (SELECT column_a, column_b FROM table_b WHERE join_column_1 = table_a.join_column_a); UPDATE table_a SET column_1 = (SELECT COLUMN FROM table_b WHERE userid = table_a.userid); UPDATE table_a SET (column_1) = (SELECT COLUMN FROM table_b WHERE userid = table_a.userid AND url IS .. 더보기
MYSQL에서 ORACLE SEQUENCE 사용하기 Table SchemeCREATE TABLE sequences ( name varchar(32), currval BIGINT UNSIGNED ) ENGINE=InnoDB; procedure DELIMITER $$CREATE PROCEDURE `drop_sequence` (IN the_name text)MODIFIES SQL DATADETERMINISTICBEGIN DELETE FROM sequences WHERE name=the_name;END; DELIMITER $$CREATE PROCEDURE `create_sequence`(IN the_name text)MODIFIES SQL DATADETERMINISTICBEGIN DELETE FROM sequences WHERE name=the_name; INS.. 더보기
Oracle 테이블 및 컬럼정보 조회 쿼리 -- TABLE의 COLUMN 정보 구하기 SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE, DATA_LENGTH, DATA_PRECISION, DATA_SCALE, NULLABLE, COLUMN_ID, DATA_DEFAULT, CHAR_LENGTH FROM USER_TAB_COLUMNS WHERE TABLE_NAME = 'TABLE명' -- PRIMARY KEY INDEX명 구하기 SELECT INDEX_NAME FROM USER_CONSTRAINTS WHERE TABLE_NAME = '테이블명' AND CONSTRAINT_TYPE = 'P' -- 인덱스 설명 SELECT INDEX_NAME, -- 인덱스명 COLUMN_NAME, -- 컬럼명 COLUMN_POSITION, -.. 더보기
mysql 에서 function, procedure 확인 및 수정 1. function 확인 -. show function status where db = 'db 명'; 2. function 수정 -. show create function Function명; 3. procedure 확인 -. show procedure status where db = 'db 명'; 4. procedure 수정 -. show create procedure procedure 명; 5. 버전 확인 SELECT version() 더보기