728x90

분류 전체보기 293

[오라클/SQL] SYNONYM (동의어), MERGE(머지), Data Dictionary(딕셔너리)

SYNONYM 이란? SYNONYM(시노님)은 테이블 이름을 별칭으로 다르게 만들어 주는 것으로 생각하면 된다. 테이블 이름을 변경하는 rename과 다르다. 아래에서와 같이 paul 사용자에게 hr 사용자의 employees 테이블에 접근할 수 있는 권한을 주고, paul 사용자가 hr.employees로 접근할 때 이름이 길고, 불편하다면 Synonym을 사용해서 이 긴 테이블 이름 hr.employees을 HR_EMP식으로 변경해줄 수 있다. SYNONYM 을 사용하는 이유 오브젝트명을 짧게하여 SQL문을 단순화 시킬 수 있다. 스키마, 테이블 명이 변경 되어도 시노님만 재생성하면 SQL문은 변경하지 않아도 된다. 오브젝트를 외부에 제공할 경우 스키마, 오브젝트명을 숨길 수 있어 보안에 좋다. cr..

[오라클/SQL] Subqueries(서브쿼리) 종류와 규칙

1. Subqueries(서브쿼리)란? 서브쿼리란 한 SQL 문장 안에서 보조로 사용되는 또 다른 SELECT문을 의미한다. 최종 결과를 출력하는 쿼리를 메인 쿼리라고 한다면, 이를 위한 중간 단계 혹은 보조 역할을 하는 SELECT문을 서브쿼리라고 한다. 2. Subqueries(서브쿼리)의 규칙 - 연산자를 사용한 비교나 조회대상의 오른쪽에 놓이며 서브 쿼리문을 묶는다 . - 특수한 몇몇 경우를 제외하고 대부분 서브 쿼리 절에는 ORDER BY절을 사용할 수 없다. - 서브 쿼리의 select절에 명시된 열은 메인쿼리의 비교대상과 같은 자료형과 같은 개수로 지정한다. - 서브 쿼리에 있는 select 문의 수행결과로 나오는 행의 수는 메인 쿼리의 연산자 종류와 호환되어야 한다 3. Subqueries..

[오라클/SQL] Sequence 생성/삭제, Role 권한 위임

Sequence(시퀀스)란? Sequence 는 연속적으로 입력되는 데이터 어떤 순서 값을 부여할 때 사용한다. 예를 들어 가입하는 신규 회원을 식별하는 식별자를 회원 테이블에서 자동으로 회원번호를 매기는 경우이다. 일반적으로 Primary Key가 적용된 컬럼에 순서적으로 번호를 부여할 때 시퀀스를 주로 사용한다. 일련 번호지만 한 자리 건너, 중간에 새로운 번호로 시작 등으로 해줄 수 있다. 'CREATE SEQUENCE 시퀀스_명'식으로 시퀀스를 생성해준다. 보통 PK값에 중복값을 방지하기위해 사용합니다 ▪ NEXTVAL을 써주면 자동으로 다음 번호가 매겨지고, ▪ INCREMENT BY 뒤에 증가_값을 지정할 수 있는데 디폴트 증가_값은 1이다. ▪ START WITH로 디폴트 시작_값은 1부터지..

[오라클/SQL] INDEX 생성/조회/삭제/통계정보

INDEX 란? Index는 데이터 베이스에서 데이터를 빠르게 조회하고 위한 데이터베이스 검색 기술이다. 보통 전체에서 2%에 해당되는 정보에 접근할 때에는 인덱스가 유리하다. (즉, 소규모 데이터를 쿼리할 경우) 특정 항목에 대한 인덱스를 생성한 뒤 해당 항목으로 쿼리하면 인덱스가 적용되어 속도가 향상된다. INDEX 생성/조회/삭제 생성 CREATE INDEX [인덱스명] ON [테이블명](컬럼1, 컬럼2, 컬럼3, .......) 조회 SELECT * FROM USER_INDEXES 삭제 DROP [인덱스 명] INDEX 가 불필요한 경우는 ? 데이터가 수천 건 미만인 경우에는 FULL SCAN의 시간이 그리 많이 소요되지 않기 때문에 인덱스를 생성하면 소요시간이 증가 된다. 조회보다 삽입, 수정,..

[오라클/SQL] 스크립트 작성 및 SQL 파일 실행하기

스크립트란? SQL 내용을 지닌 파일을 의미한다. -- 사원 번호를 입력하면 해당 사원의 부서. 부서위치(사는곳,위치, 등등)를 정보를 얻고자 한다. employees, departments, locations, countriesm, regions 5개 테이블을 조인한다. -- 관리자 권한으로 메모장을 열고 아래 소스를 삽입 REM NAME : empINFO.sql REM DESCRIPTION : show employee's information when employee_id is checked REM DATE : 2022.06.10(yyyy.mm.dd) REM EXECUTE : SQL > START empINFO.sql REM UPDATE REM select employee_id, last_name, ..

[오라클/SQL] View 테이블 생성,변경

View (가상테이블) 특징 자주 사용하는 쿼리가 여러 테이블을 조인해서 이뤄질 때 JOIN 하는 테이블 수가 늘어나면 질의문이 길고 복잡해지고 유지보수도 어렵기에 View를 생 성하여 사용한다. 명령어와 스크립트로 생성할 수 있는데 JOIN 하는 과정을 스크립트를 만들어 두거나 STORED PROCEDURE를 사용해서 데이터베이스 서버에 저장해두고 수시로 꺼내서 수정해가면서 재사용할 수 있다. 스크립트는 파일 시스템에 저장되지만 STORED PROCEDURE는 데이터베이스에 저장되어 관리되므로 최초로 compile 한 이후로는 그냥 수정해서 실행하기만 하면 된다. View는 제한된 정보(각 테이블에서 필요한 항목들만 꺼내서)로 새로운 테이블을 생성했기 때문에 내부의 다른 항목들이 보이지 않게 되므로 보..

[오라클/SQL] Transaction&LOCK, View 란 무엇인가?

Transaction Transaction이란 하나의 연관되어 완성되는 작업 단위이다. A가 자신의 A은행에서 B의 B은행에 계좌이체를 예로 보면 A의 은행에서 금액이 빠져나가고 B의 은행에 해당 금액이 입금되는 일련의 작업에서 A가 송금 프로세싱 끝에서 commit(실행)을 해주어야 B에게 완전히 입금된다. 중간에 오류가 있거나 A가 취소하면 A 은행에서 돈이 빠져나가서는 안 되고 B 은행에 입금되어서도 안 되는 무효처리가 되어야 한다. Oracle에서는 이런 DML이 정상적으로 실행되어도 트랜젝션은 계속 내부적으로 진행 중이다. 따라서 완전히 DML 과정을 종료시키려면 Commit(OR /) 해서 완전히 프로세스를 종료하거나, Rollback을 해서 전체 작업을 취소시켜 주어야 한다. Transact..

[오라클/SQL] GROUP BY (ROLLUP/CUBE), 계층적 질의

GROUP BY 함수 확장 GROUP BY ROLLUP() 과 GROUP BY CUBE() 함수가 있다. GROUP BY ROLLUP()은 그룹화 할 조건이 있으면 우측으로부터 하나씩 제외해 나아가면서 그 결과를 반환하는 기능을 한다. 직무별 평균급여와 부서별 평균 급여를 구하는데 사용될 수 있다. GROUP BY CUBE() 는 3차원 적인 분석을 가능하게 해주는 기능이다. 전체평균 급여,직무별 평균급여와 부서별 평균급여 대해서 부서별 평균급여를 함께 쿼리하게 해서 3차원적으로 작업을 수행시킬 수 있다. . Q. 부서명, 직무, 직무별 평균 급여와 부서별 평균급여를 보이시오. (ROLLUP, CUBE) select d.department_name, j.job_title, round(avg(salary)..

728x90