목록DBMS/Oracle (21)
코딩항해기

MERGE문조건을 비교해서 테이블에 해당 조건에 맞는 데이터가 없으면 INSERT, 있으면 UPDATE를 수행하는 문장이다. 기본적인 형태가 INSERT UPDATE인 것이며, INSERT DELETE 조합을 사용하기도 한다. 즉, 조건에 따라 어떤 수행할 내용을 결정하는 문법이다. 주로 두 개 이상의 테이블 간의 데이터를 조작하거나 동기화할 때 유용하다. 오라클 9i부터 MERGE 문을 사용할 수 있으며, DELETE 절은 10g부터 사용할 수 있다. MERGE문 문법MERGE INTO [스키마.]테이블명USING (update나 insert될 데이터 원천) ON (update될 조건)WHEN MATCHED THEN SET 컬럼1 = 값1, 컬럼2 = 값2, ... WHERE update조건 [DELE..

데이터베이스 객체의 종류테이블데이터를 담고있는 객체뷰하나 이상의 테이블을 연결해 마치 테이블인 것처럼 사용하는 객체인덱스테이블에 있는 데이터를 빠르게 찾기 위한 객체시노님데이터베이스 객체에 대한 별칭을 부여한 객체시퀀스일련번호 채번을 할 때 사용되는 객체함수특정 연산을 하고 값을 반환하는 객체프로시저함수와 비슷하지만 값을 반환하지는 않는 객체패키지용도에 맞게 함수나 프로시저를 하나로 묶어놓은 객체 시노님 Synonym시노님은 동의어라는 뜻으로 데이터베이스 객체는 각자 고유한 이름이 있는데 이 이름에 대한 별칭을 만드는 것이 시노님이다. 시노님에는 Public 시노님과 Private 시노님이 있다. Public 시노님은 데이터베이스의 모든 사용자가 접근할 수 있으며, Private 시노님은 특정 사용자에..

한 계정에서 여러 프로젝트의 테이블을 생성할 수 없는 것은 아니지만, 관리를 용이하게 하고, 팀프로젝트에서 JDBCUtil을 사용할 때 팀원 모두가 공통된 아이디와 비밀번호를 가질 수 있도록 할 때 등등 계정을 생성하곤 한다. SQL 계정을 생성하기 위해서는 먼저 cmd창을 열어준다. cmd 창이 열리면 sqlplus를 입력한다. sqlplus 입력하면 로그인 창이 뜨는데, 관리자 권한을 가진 관리자 계정으로 로그인해 계정을 생성해 줄 예정이다.sys as sysdba user-name으로 해당 아이디를 입력한 후 오라클 등을 설치할 때 정의한 비밀번호를 입력한다.입력이 보이지 않지만 정상적으로 입력되고 있는 것이 맞다. 로그인에 성공하면 Connected to:라는 메세지가 뜨며 연결이 됐다고 안..

ROLLUP주어진 그룹 기준에 따라 계층적인 소계를 계산한다. 주로 데이터의 총합, 부분합을 구할 때 사용한다. 예를 들어, 부서별, 직급별 급여 합계를 구하고 전체 합계를 구할 수 있다. 계층적이기 때문에 앞쪽 열부터 소계가 계산되고, 마지막에는 전체 합계가 포함된다. 예시: ROLLUP(a, b, c)(a, b, c) : a, b, c별 소계(a, b) : a, b별 소계(a) : a별 소계() : 전체 소계 CUBE주어진 그룹 기준의 모든 조합에 대해 소계를 계산한다. ROLLUP과 달리, 모든 가능한 그룹 조합의 소계를 계산하며, 각각의 열에 대한 소계, 그리고 전체 합계도 함께 계산한다. 매개변수의 순서가 달라져도 값에 영향이 없다. 예시: CUBE(a, b, c)(a, b, c) : a, b,..

NULL 아직 정의되지 않은 값으로 0 또는 공백과 다르다. (0은 숫자이고, 공백은 문자다)테이블을 생성할 때 NOT NULL 또는 PRIMARY KEY로 정의되지 않으면 NULL을 포함할 수 있다. NULL을 포함하는 연산의 결과도 NULL이다 ( 1 + NULL = NULL) row에서 연산을 할 때 (컬럼1+컬럼2) NULL이 있다면 결과값은 NULL이 되며,집계함수를 사용할 때 column에 NULL이 있다면 해당 NULL을 무시하고 집계한다.NULL과의 비교는 무조건 false가 반환된다. (IS NULL, IS NOT NULL을 사용해야 비교가 가능하다) NULLIF(표현식1, 표현식2)표현식1이 표현식2와 같으면 NULL을, 같지 않으면 표현식1을 리턴한다.특정 값을 NULL로 변경해야 ..

SQL 실행 순서다음과 같은 순서로 진행된다. FROMONJOINWHEREGROUP BY (집계함수)HAVING SELECT (별칭, ROWNUM 등)DISTINCTORDER BY 실행 순서가 중요한 이유복잡한 쿼리를 작성하거나 쿼리의 성능을 최적화 할 때 실행 순서를 정확하게 이해하고 있어야 하기 때문이다.또한 실행 순서를 잘못 이해하면 원하는 방향과 전혀 다른 데이터가 나올 수 있어 실행 순서를 정확하게 인지하고 있는 것이 좋다.(앞 단에 실행된 부분만 현재 단계에서 인지할 수 있기 때문에, WHERE절에서 GROUP BY된 데이터를 인지할 수 없다.)실행 순서를 불가피하게 변경해야하는 경우에는 서브쿼리를 사용하여 실행 순서를 변경시킬 수 있다. 상황에 따른 조건 위치 효율성JOIN을 사용할 때ON..

VIEW 기존 테이블은 그대로 놔둔 채 필요한 컬럼들 및 새로운 컬럼을 만든 가상 테이블이다. 실제 데이터가 저장되는 것은 아니지만 VIEW를 통해서 데이터를 관리할 수 있다. 사용이유 독립성 다른 곳에서 원본 데이블에 접근하지 못하도록 할 수 있다. 편리성 긴 쿼리문을 짧게 만들 수 있다. 보안성 기존의 테이블 제작 쿼리문이 보이지 않아 보안이 올라간다. 문법 CREATE VIEW 뷰이름 AS 쿼리문; CREATE VIEW 뷰이름 AS SELECT 열1, 열2, ... FROM 테이블명 WHERE 조건; 관련 설정OR REPLACE 기존 VIEW의 구조나 내용을 새로운 쿼리로 교체한다.CREATE OR REPLACE VIEW 뷰이름AS SELECT 컬럼명 FROM 테이블명 WHERE 조건; ..

집합 연산자는 예전 where절과 연산자를 다룰 때 함께 다룬 적이 있다.Join을 정리하며 제대로 구분 짓기 위해 다시 한 번 더 정리한다. [DBMS/Oracle] WHERE절과 연산자WHERE절WHERE절은 SELECT문으로 데이터를 조회할 때 특정 조건을 기준으로 원하는 행을 출력할 수 있게 한다.이때 연산자를 사용하면 더욱 세밀한 데이터 조회가 가능하다.SELECT 컬럼1, 컬럼2 FROM 테이minibcake.tistory.com [DBMS/Oracle] JOIN집합연산자와 JOIN 집합연산자는 결과 값을 세로로 연결한 것이고, JOIN은 두 개 이상의 테이블 데이터를 가로로 연결한 것이다. JOIN조회하고자하는 테이블이 쪼개져있으면 데이터를 한 눈에minibcake.tistory.c..

집합연산자와 JOIN 집합연산자는 결과 값을 세로로 연결한 것이고, JOIN은 두 개 이상의 테이블 데이터를 가로로 연결한 것이다. [DBMS/Oracle] 집합 연산자집합 연산자는 예전 where절과 연산자를 다룰 때 함께 다룬 적이 있다.Join을 정리하며 제대로 구분 짓기 위해 다시 한 번 더 정리한다. [DBMS/Oracle] WHERE절과 연산자WHERE절WHERE절은 SELECT문으로 데이minibcake.tistory.com JOIN조회하고자하는 테이블이 쪼개져있으면 데이터를 한 눈에 확인하거나 사용하기 불편하기 때문에 입력, 수정, 삭제의 성능을 향상시키기 위해서 join을 통해 하나의 가상 테이블로 합친 후 사용한다.Join은 크게 내부 조인과 외부 조인으로 분류된다. (그 외 조..

[DBMS/Oracle] 테이블 쿼리문 (DDL) 기초[요약]테이블 생성CREATE TABLE 테이블명( 컬럼명 자료형, 컬럼명 자료형, 컬럼명 자료형 );테이블 조회SELECT * FROM 테이블명;테이블 삭제DROP TABLE 테이블명;테이블 삭제(연결값을 삭제 후 삭제)DROP TAminibcake.tistory.com 기존 테이블의 구조, 또는 구조와 데이터를 복사하여 새로운 테이블을 생성할 수 있다.복사하는 종류와 범위에 따라 3가지로 분류할 수 있다.기존 테이블의 열 구조와 데이터를 복사하여 새 테이블 생성기존 테이블의 열 구조와 일부 데이터를 복사하여 새 테이블 생성기존 테이블의 열 구조만 복사하여 새 테이블 생성위 3가지의 경우를 차례로 정리해보겠다. 열 구조와 데이터를 복사하는 경..