1월, 2022의 게시물 표시

주인ㄴ... 이 아니라 시노님!!

https://coding-factory.tistory.com/421

[sql] MERGE INTO

*기존 데이터가 존재하다면 UPDATE(or DELETE)  기존 데이터가 존재하지 않다면 INSERT 을 수행할 수 있는 쿼리 명령문 이다. *MERGE INTO 쿼리 명령문을 사용하는 기본 틀은 다음과 같다.   MERGE INTO [목적지 테이블]   USING [조건을 확인하는 테이블]       ON [조건]   WHEN MATCHED THEN  ["[조건을 확인하는 테이블 및 조건]"에 MATCH되었을 때 수행하는 쿼리]   WHEN NOT MATCHED THEN  ["[조건을 확인하는 테이블 및 조건]"]에 MATCH되지 않았을 때 수행하는 쿼리] *MERGE INTO 쿼리 명령문의 사용 예제          MERGE INTO XRMFT_SHIPTO_MST A         USING DUAL          -- *만약 하나의 테이블에서 MERGE INTO을 사용하였을때에는              USING에 "DUAL"테이블을 사용한다.               ON ( A.column= @value)         WHEN MATCHED THEN                 UPDATE SET A.column= TO_CHAR(SYSDATE, 'YYYYMMDDHH24MISS')                          , A.column= -2     ...

[sql]TABLE - CREATE

*새로운 테이블을 생성하고자 합니다.  아래 코드는 테이블을 생성하는 예제입니다.      CREATE TABLE [ 테이블 이름 ](          [컬럼 이름]     [컬럼 데이터 타입](데이터 크기)     [옵션]      );     CREATE TABLE employees(          employee_id           VARCHAR2(100)     NOT NULL,    --무조건 입력해야 합니다.          employee_name    VARCHAR2(100)     NOT NULL,          employee_tel         NUMBER(13)`                                 --무조건 입력하지 않아도 됩니다.      ); *TABLESPACE  1. 테이블이 저장될 테이블스페이스를 지정하는 절이다.  2. 테이블스페이스(Tablespace)는 데이터베이스 오브젝트 내 실제 데이터를 저장하는     공간이다. 이것은 데이터베이스의 물리적인 부분이며, 세그먼트로 관리되는 모든     DBMS에 대해 저장소(세그먼트)를 할당한다.     CREATE TABLE ...

[sql]PL/SQL - CURSOR

 .... 아니 이게 뭐야 *문장(SQL query)수행 결과를 저장하는 공간의 위치를 저장한다   그래서 cursor(커서)을 참조하면 처리결과의 집합에 접근할 수 있다. *커서의 종류 1. 공유 커서 2. 세션 커서 

용어 정리

* 트랜젝션 하나의 논리적 기능을 수행하기 위한 작업의 단위 또는 한꺼번에 모두 수행되어야 할 일련의 연산 * 트랜젝션의 특징 1. 데이터베이스 시스템에서 병행 제어 및 회복 작업 시 처리되는 작업의 논리적 단위 2. 사용자가 시스템에 대한 서비스 요구 시 시스템이 응답하기 위한 상태 변환 과정의            작업단위           3. 하나의 트랜잭션은 커밋(commit) 되거나 Rollback 된다. * set up 1. 초기화, 셋업  2. initialize, init 등과 같은 의미로 사용된다. *column level     1 

[sql]PL/SQL - 함수(FUNCTION)

 *얼핏보면 프로시저(PROCEDURE)과 유사하지만, 아래와 같은 특징을 가지고 있다. 1.  보통 값을 계산하고 결과  값을 반환하기 위해서 함수를 많이 사용  한다. 2.  대부분 구성이 프로시저와 유사 하지만   IN 파라미터만 사용  할 수 있다. 3. 반드시 PL/SQL 블록내에서 RETURN으로 (데이터를)반환 해야 한다. *함수를 사용하는 예는 다음과 같다. CREATE OR REPLACE FUNCTION func_name(  name  IN VARCAHR2 )          RETURN datatype;                     --리턴할 변수의 자료형을 정의합니다. IS           ----- LOCAL 변수선언 -------         v_sal  TB_MGR_EMP. val%TYPE;     BEGIN          SELECT sal             INTO v_sal                        --SELECT 문에 있는 column 데이터를 v_sal에 대입합니다.             FROM TB_MGR_EMP         WHERE TB_MGR_EMP.NAME = name;    ...

[sql]PL/SQL - 프로시저(PROCEDURE)

*PROCEDURE은 "이름있는"블록이라고 생각하면 편한다. *다음은 PROCEDURE의 기본형태이다. CREATE TO REPLACE PROCEDURE name(  IN argument /  OUT argument /  IN OUT    argument ) IS      ----LOCAL변수 선언 위치----     BEGIN     END;   1. IS 로 PL/SQL의 블록을 시작 한다. 2. LOCAL 변수는 IS 와 BEGIN 사이에 선언 한다. *다음은 PROCEDURE의 사용 예이다. CREATE OR REPLACE PROCEDURE p_update_member_age ( v_member_id IN NUMBER )   IS     ----LOCAL변수 선언 위치----      BEGIN           UPDATE TB_MGR_MEMBER                   SET AGE = 'man'            WHERE MEMBER_ID =  v_member_id;          COMMIT;                                                          ...

[sql]PL/SQL - BASIC

이미지
* PL/SQL는 "절차적 언어을 SQL으로 확장한다" 라는 뜻으로    Oracle's Procedual Langauge Extension to SQL의 약자이다. * 변수정의, 조건처리(IF), 반복처리(LOOP, WHILE, FOR)등을 지원 하며,   오라클 자체에 내장되어 있는 Procedure Language 이다. java : if, for, while PL/SQL : IF, LOOP, WHILE, FOR * DECLARE 문을 이용하여 정의되며, 선언문 의 사용은 선택 사항 이다. declare : 선언, 선언하다.. .뭐 이런뜻임 ㅋㅋ  *PL/SQL의 기본구조는 다음과 같다. 선언부, 실행부, 예외처리부, 종결 -> 선 , 실 , 예 , 종 (뭐 학교이름이냐??) ( DECLARE , BEGIN , EXCEPTION , END; ) *PL/SQL의 블럭의 종류 3가지 1. 익병 블록 BEGIN END; 2. 프로시저 블록 PROCEDURE     name IS      BEGIN      END; 3. 함수 블록 FUNCTION     name RETURN          datatype IS     BEGIN          RETURN value;     END;

[sql] partition / index - 작성중..

 *Range 파티셔닝 1. 파티션 키 값의 범위(Range)로 분할 2.파티셔닝의 가장 일반적인 형태이며, 주로 날짜 칼럼을 기준 으로 함예) 판매 데이터를 월별로 분할 *Hash 파티셔닝 *List 파티셔닝 *composite 파티셔닝

[sql] NVL / NVL2 / DECODE

 *NVL( NVL"1"이라고 생각하면 뇌에 바로 기억될까..?? ) 데이터가 NULL이면 지정된 값으로 출력하고, 아니면 그대로 출력한다. NVL( 데이터, 지정된 값 ) SELECT NVL( A.PHONENUMBER, '없음' )    FROM TB_MEMBER A WHERE  A.NAME = '홍길동'; --> A.PHONENUMBER 가 NULL이면 '없음' 출력       A.PHONENUMBER 가 NULL이 아니면 그대로 출력 *NVL2 데이터가 NULL이면 지정된 값2, NULL이 아니면 지정된 값1을 출력한다 NVL2( 데이터, 지정된 값1, 지정된 값2 ) SELECT NVL2( A.CONFRIM, 'Y', 'N' )    FROM TB_MEMBER A WHERE  A.NAME = '홍길동'; --> A.CONFRIM가 NULL이면 'N"을 출력       A.CONFIRMr가 NULL이 아니면 'Y'을 출력 *DECODE 데이터가 조건값과 같을 경우 지정된 값1을 출력하고, 아닐 경우 지정된 값 2을 출력한다 DECODE( 데이터, 조건값, 지정된 값1, 지정된 값2 ) SELECT DECODE( A.GENDER, 'M', '남자','여자' )    FROM TB_MEMBER A WHERE  A.NAME = '홍길동'; --> A.GENDER가 'M' 경우 '남자'을 출력       A.GENDER가 'M'가 아닐 경우 '여자'을 출력

[sql]GROUP BY / HAVING

*GROUP BY *참고중인 사이트에 왜 "집계함수"부터 설명하는지 처음에는이해하지 못했다..    근데 공부해보니 그 이유를 알겠다.. *아래 "집계함수"는 자주 사용하는 것임으로 기본적으로 알아두자... 1. COUNT(*)               : NULL데이터를 포함하여 row데이터의 갯수를 구한다. 2. COUNT(표현식)   : NULL데이터를 제외한 row데이터의 갯수를 구한다.                                  (예) SELECT( HEIGHT ) ------------------------------------------------------------------------ 여기서부터는  "집계함수( DISTINCT | ALL 표현식)"형태로 사용할 수 있습니다. *DISTINCT : 중복 row을 제거합니다. *ALL : 중복 row을 제거 하지 않습니다( 아마도 default...?? ) ------------------------------------------------------------------------ 3. SUM() : NULL데이터를 제외한 row의 합계를 구한다. 4. AVG() : NULL데이터를 제외한 row의 평균을 구한다. 5. MIN, MAX() : NULL데이터를 제외한 row의 최소값, 최대값을 구한다. *GROUP BY절 1. GROUP BY절에서 그룹 단위를 표시 해 주어야 SELECT절에서 그룹 단위의 칼럼과     집계 함수를 사용할 수 있다. 2.  GROUP BY 절을 통해 소그룹별 기준 을 정한 후, SELECT 절에 집계 함수를 사용 3.  집계 함수의 통계 정...

[sql]ORDER BY

1. ORDER BY 절에 칼럼(Column)명 대신에 SELECT 절에서 사용한 ALIAS 명이나 칼럼 순서를 나타내는 정수도 사용 가능 하다. 2. ASC(Ascending) : 조회한 데이터를 오름차순으로 정렬(기본 DEFAULT:생략가능) 😂 DESC(Descending): 조회한 데이터를 내림차순으로 정렬 SELECT PLAYER_NAME 선수명, POSITION 포지션, BACK_NO 백넘버 FROM PLAYER ORDER BY 포지션 ASC; --(이름으로 내림차순정렬) --ORDER BY 2 --ORDER BY POSITION 3. SQL 문장의 제일 마지막*에 위치한다. 4. ??? Case3. 칼럼 순서번호 + ALIAS 명 사용 ORDER BY 절 사용 SELECT DNAME , LOC AREA , DEPTNO FROM DEPT ORDER BY 1, AREA, 3 DESC; 5. SELECT 문장 실행 순서 *GROUP BY 절과 ORDER BY가 같이 사용될 때 SELECT 문장은 6개의 절로 구성 1. FROM 테이블명 2. WHERE 조건식 3. GROUP BY 칼럼(Column)이나 표현식 4. HAVING 그룹조건식 ------------------------------------------------------ 5. SELECT 칼럼명 [ALIAS명] 6. ORDER BY 칼럼(Column)이나 표현식; 🙄 3. 행들을 소그룹화 한다. (GROUP BY) 4. 그룹핑된 값의 조건에 맞는 것만을 출력한다. (HAVING) 6. 데이터를 정렬한다. (ORDER BY) 🙄 *ORDER BY 절에는 SELECT 목록에 나타나지 않은 문자형 항목이 포함될 수 있다. 단, SELECT DISTINCT를 지정하거나 SQL 문장에 GROUP BY 절이 있거나 또는 SELEC...

[sql]subquery - select //1=1부분 추가 수정 필요

이미지
1. 스칼라 서브쿼리는 한 행, 한 칼럼(1 Row 1 Column)만을 반환 하는 서브쿼리를 말한다. 2. 예시 SELECT PLAYER_NAME 선수명      , HEIGHT 키      , ( SELECT AVG(HEIGHT)             FROM PLAYER X            WHERE X.TEAM_ID = P.TEAM_ID) 팀평균키    FROM PLAYER P; * 메인 쿼리에서 추출되는 데이터 건 수 만큼 수행 되기 때문에   조인으로 수행 될 때보다 수행회수가 적을 수 있다. *일치하는 값이 없는 경우 NULL 을 반환 한다. *코드성 테이블에서 코드값을 조회 할 때, 불필요한 조인을 하지 않기 위해 많이 사용한다. -- 직업이 ‘MANAGER’인 사원의 사원명, 부서명을 조회하는 예제 SELECT ename,         ( SELECT dname           FROM dept d             WHERE d.deptno = e.deptno ) deptno FROM emp e WHERE job = 'MANAGER' ;   ENAME      DEPTNO ---------- -------------- JONES      RESEARCH BLAKE      SALES CLARK      ACCOUNTING -- Scalar Subquery는 일치하는 값...

[sql]subquery - basic

1. 최종 결과를 출력하는 쿼리를 메인 쿼리라고 한다면, 이를 위한      이를 위한 중간 단계 혹은 보조 역할을 하는 SELECT문을 서브쿼리라고 한다. 2. 서브쿼리는 다음과 같은 곳에서 사용할 수 있다. 2-1. SELECT, FROM, WHERE  2-2. INSERT, UPDATE, MERGE, DELETE 3. 서브쿼리는 단일 행(Single Row) 또는 복수 행(Multiple Row) 비교 연산자와 함께 사용 가능하다. *단일 행 비교 연산자는 서브쿼리의 결과가 반드시 1건 이하이어야 하고 복수 행 비교 연산자는 서브쿼리의 결과 건수와 상관 없다. 4. 서브쿼리에서는 ORDER BY를 사용하지 못한다. *ORDER BY절은 SELECT절에서 오직 한 개만 올 수 있기 때문 에 ORDER BY절은 메인쿼리의 마지막 문장에 위치 해야 한다. 5. Correlated(연관) 서브쿼리 *서브쿼리가 메인쿼리 컬럼을 가지고 있는 형태의 서브쿼리이다. 일반적으로 메인쿼리가 먼저 수행되어 읽혀진 데이터를 서브쿼리에서 조건이 맞는지 확인하고자 할 때 주로 사용된다. 6. 다중 행 서브 쿼리 (여러개의 row을 가진 subquery) *다중 행 서브쿼리는 다중 행 비교 연산자와 함께 사용된다.  *다중 행 비교 연산자에는 IN , ALL, ANY, SOME , EXISTS 가 있다. 6-1. IN 6-2. EXISTS *서브쿼리의 결과를 만족하는 값이 존재하는지 여부를 확인하는 조건을 의미한다. *조건을 만족하는 건이 여러 건이더라도 1건만 찾으면 더 이상 검색하지 않는다. *EXISTS는 조건이 맞는 지에 대한 TRUE / FALSE만 확인 하기 때문이다.  만족하는 결과가 최소 하나가 나오면 바로 TRUE로 판단한다. *AND EXISTS ( SELECT 1 FROM TABLE WHERE ... )    EXISTS는 ROW가 존재하는지만 판별하기때문에 SUB-QUERY의 SELECT에는...