반응형

오라클 11

[Oracle] CONNECT BY 계층형 쿼리가 어려울 때

1. 계층형? 오라클 예제 테이블인 EMP 테이블의 내용을 한번 보겠습니다. EMPNO가 직번이고, MGR이 관리자의 직번입니다. 1번 로우의 EMPNO가 '7839' KING은 회장이라 관리자란이 비어 있습니다. 2번 로우의 EMPNO가 '7698' BLAKE는 상사직번이 7839(KING)으로 회장님이 직접 관리하는 직원이네요. ... 14번 로우의 EMPNO가 '7788' SCOTT의 관리자는 직번이 7566인 JONES 입니다. EMP 테이블은 이런식으로 직원과 관리자를 관리하고 있습니다. 이런 구조를 계층형 구조라고 합니다. 2. EMP 계층구조를 보기좋게 만들어 주세요~ 직원과 관리자의 구조를 보기좋게 만들어 달라는 요청이 들어왔습니다. 오라클에서 미리 CONNECT BY라는 좋은 쿼리를 만들..

IT 2021.06.23

[오라클 11g] SYSDBA 권한과 SYSOPER 권한

SYSDBA와 SYSOPER권한은 하이레벨의 관리자 명령을 수행하기 위해 필요한 권한이다. 이 권한은 생성, 데이터베이스 시작, 데이터베이스 종료, 백업, 복구를 수행 할 수 있다. SYSDBA 권한은 완전한 데이터베이스 관리자의 권한이 부여된것이고, SYSOPER는 기본적인 운영상의 작업들을 실행할 수 있지만, 사용자의 데이터를 볼수 없다는 차이점이 있다. SYSDBA와 SYSOPER는 데이터베이스가 오픈되지 않은 상태에서도 데이터베이스 인스턴스에 접속할 수 있다. 이 권한들의 관리는 데이터베이스 관리의 범위를 벗어난다. 둘 권한중 하나만 받은 유저는 데이터베이스 인스턴스를 시작시킬 수 있다. 만약 SYSDBA로 접속하고 싶다면 'AS SYSDBA' 명령을 사용하여 데이터베이스에 접속하면 된다. SYS..

IT 2021.03.04

[오라클 11g] 유저계정 관리

오라클 데이터베이스에 접속하고자하는 유저는 계정을 통해 접속할 수 있다. 유저계정 생성 시에는 다음의 내용을 설정해야 한다. 인증방법 패스워드 기본 테이블 스페이스 테이블 스페이스 용량 한도 계정 상태(락 or 언락) 패스워드 상태(사용기간종료 여부) 유저생성 후에 다음작업을 수행한다. 적당한 시스템 권한, 오브젝트 권한 부여 역할 부여 오브젝트 생성 시 각각의 테이블스페이스에 대한 공간사용한도 지정 오라클은 각각의 유저에게 유저가 업무를 수행할 수 있는 최소한의 권한만을 부여하길 권장한다. 예) 애플리케이션 개발자 : 테이블, 뷰, 인덱스, 저장프로시저 생성 및 수정 권한 (애플리케이션 개발자는 테이블스페이스 DROP 및 DELETE 권한 권한, 데이터베이스 복구 권한은 필요없다.) 관리자 계정도 만들..

IT 2021.03.02

[oracle] RANK(), DENSE_RANK(), ROW_NUMBER() 함수 간단 비교

오라클에서 RANK(), DENSE_RANK(), ROW_NUMBER() 함수는 모두 순위를 정하는 함수입니다. 비슷한 방식으로 돌아가지만 아주 약간 결과 값이 다르게 출력됩니다. 성적 테이블에 위와 같이 성적이 입력돼 있습니다. 랭킹을 출력해 보겠습니다. SCORE가 큰 순서대로 1,2,3등이 부여되는 쿼리입니다. 아래와 같이 결과 값이 나옵니다. RANK 함수 SCORE가 같으면 같은 등수를 부여하고, 다음 SCORE는 이전까지 등수를 결정한 학생들 수 + 1의 등수를 매깁니다. 김태호, 박나래가 공동 2등이고, 3등을 건너뛰고 장도연에게 4등을 부여했습니다. 2등이 세명이라면 장도연은 5등이 됐겠죠. DENSE_RANK 함수 SCORE가 같으면 같은 등수를 부여하고, 같은 등수가 몇명이든지 다음 S..

IT 2020.02.12

[oracle] update문 - 다중컬럼 동시 업데이트

요약 update tmp_table set a = d , b = e , c = f 이렇게 하지 말고, update tmp_table set (a, b, c) = (d, e, f) 이렇게 하면 됩니다. 상세 여러개의 컬럼을 동시에 업데이트 해야하는 상황이 있습니다. 아래와 같은 직원테이블이 있는데, 부서와 전화번호를 바꿔달라는 요청이 들어오는 거죠. 바꿔달라는 내용입니다. 세명 모두 다른 부서에 다른 전화번호를 부여받았습니다. 이렇게 돼 있을때, 쿼리를 어떻게 작성해야 할까요? 기존에 제가 쓰던 쿼리는 이렇습니다. update employees a set phone = ( select phone from modify_list b where a.id = b.id ), dept_nm = ( select dep..

IT 2020.02.03

오라클 테이블 컬럼 추가 SQL

컬럼 추가 ALTER TABLE EMPLOYEES ADD( NAME VARCHAR2(20) ); - EMPLOYEES 테이블에 NAME 컬럼을 VARCHAR2(20) 으로 추가 컬럼 변경 ALTER TABLE EMPLOYEES MODIFY( NAME VARCHAR2(100) ); - EMPLOYEES 테이블에 NAME VARCHAR2(20)을 VARCHAR2(100)으로 변경 컬럼명 변경 ALTER TABLE EMPLOYEES RENAME NAME TO NAME_KOR - EMPLOYEES 테이블에 NAME 컬럼명을 NAME_KOR 로 변경 컬럼 삭제 ALTER TABLE EMPLOYEES DROP COLUMN NAME; - EMPLOYEES 테이블에 NAME 컬럼 삭제

IT 2020.01.14

[오라클/함수] 두 날짜 사이의 월 수 구하기 MONTHS_BETWEEN

Syntax Purpose 두 일자사이의 개월 수를 구하는 함수. date1 - date2 의 값이 리턴되므로 date1의 날짜가 클 경우에는 양수, date2의 날짜가 클 경우에는 음수가 리턴됩니다. 정수 뒷부분에 소숫점 부분은 1개월을 1로 봤을때 얼마의 크기인지를 보여주는 값입니다. Examples 아래의 예제는 오늘이 제가 태어난 개월 수를 구하는 예제입니다. 오늘 날짜와(SYSDATE) 제 생년월일(1976-12-14)을 인자로 주면 481개월이라는 값이 리턴됩니다. 값이 작은 제 생년월일에서 값이 큰 오늘 날짜를 빼게되면 아래와 같이 마이너스 값이 나타나게 됩니다.

IT 2017.01.20

[오라클/함수] 날짜에서 년도, 월, 일 발췌하기 EXTRACT 함수

Syntax Purpose 오라클 EXTRACT 함수는 단어 뜻 그대로 일자정보에서 년도, 월, 일과 같은 특정 내용을 발췌하는 함수입니다. 상단 Syntax에 보면 날짜정보를 가진 expr 에서 년도, 월, 일, 시간, 분, 초 등을 추출해 낼 수 있습니다. YEAR : 년도 MONTH : 월 DAY : 일 HOUR : 시간 MINUTE : 분 SECOND : 초 TIMEZONE_HOUR : TIMEZONE형의 시간 TIMEZONE_MINUTE :TIMEZONE형의 분 TIMEZONE_REGION : TIMEZONE의 지역 TIMEZONE_ABBR : TIMEZONE 지역에 대한 약어 여기서 주의할 점은 YEAR, MONTH, DAY 를 추출할 때는 expr에 DATE형이나, TIMESTAMP형등 어떤..

IT 2016.12.19

[오라클/함수] 문자열 자르기 SUBSTR 함수

Syntax Purpose SUBSTR 함수는 정해진 문자를 특정 자릿수만큼 잘라내는 기능을 하는 함수입니다. char 문자열에 대해서 position 에 정해진 자릿수부터 substring_length 자리만큼 잘라내는 것입니다. 예를들어 'ABCDEFG' 문자열에서 중간 'CD' 문자열만 잘라내고 싶을 경우 SUBSTR('ABCDEFG', 3, 2) 이렇게 사용하시면 됩니다. 이 문장의 뜻은 'ABCDEFG' 의 3번째 문자(제일 앞자리 A가 1이기 때문에 3이면 세번째자리 'C'를 뜻합니다.)부터 2자리를 잘라내서 리턴하라는 뜻입니다. 몇가지 예제를 살펴보겠습니다. 1. position 값이 0 일때는 position 값을 1로 처리합니다. 2. position 값이 음수일 경우에는 문자 제일 마지..

IT 2016.12.09
반응형