GREATEST : 오라클에서 GREATEST 함수는 최대값, LEAST 함수는 최소값을 반환하는 함수이다. MAX, MIN 함수와 차이점은 서로다른 컬럼의 값을 비교한다는 것이다.

'[DB] > [오라클]' 카테고리의 다른 글

스칼라서브쿼리, 인라인뷰,서브쿼리  (0) 2019.11.06
WITH 구문  (0) 2019.11.04
PIVOT 을 이용하여 달력 만들기  (0) 2019.11.01
Oracle PIVOT  (0) 2019.10.28
PL/SQL : CURSOR(커서)  (0) 2019.08.26

/* 전체 테이블 조회 */
SELECT * FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_SCHEMA = '[스키마명]';
/*  전체 컬럼 조회*/
SELECT table_name, column_name, column_comment FROM    information_schema.columns WHERE    table_schema = '[스키마명]' ;

 

/* 함수 */

# FIND_IN_SET #

FIND_IN_SET(str, strlist) 콤마로 구분되어 있는 strlist 문자열('a,b,c,d')에 매칭되는 str문자('b')가 있는지 확인  

매칭되는 것이 있을 경우 몇번째에 있는지 포지션 값을 리턴하고 없으면 0을 리턴.(strlist 가 빈문자열이어도 0 리턴)

즉 strlist 라는 SET 에 일치하는 문자열이 있는지 FIND하는 함수

USE [DBMS];

GO EXEC [프로시저명] [넣어야될 파라미터 값];

'[DB] > [MSSQL]' 카테고리의 다른 글

소계, 합계 구하기  (0) 2020.04.27
프로시저 생성시 변수에 데이터 넣기  (0) 2020.04.25
# [MSSQL] LOCK 걸린 쿼리 확인 후 강제 KILL  (0) 2020.04.17
# 저장 프로시저  (0) 2020.04.07
# 트랜잭션  (0) 2020.04.07

# ROLLUP 

 - 소그룹간의 소계를 계산한다.

- ROLLUP은 GRPUP BY의 확장 형태로 사용하기 쉬운데, GRPOUP BY에 있는 항목들을 

오른쪽에서 왼쪽순으로 그룹으로 묶어 집계를 낸다.

EX) GROUP BY A,B,C ROLLUP  

총합계의 행이 나온다 

 

 

# CUBE

- CUBE 함수는 GROUP BY 항목들 간 모든 경우의 수로 그룹을 생성하여 집계를 낸다.

-CUBE는 ROLLUP보다 조금 더 상세한 결과를 낸다.

-> CUBE는 ROLLUP과 그룹을 묶어주는 방식이 다르다.

 

'[DB] > [MSSQL]' 카테고리의 다른 글

저장프로시저 실행  (0) 2020.04.30
프로시저 생성시 변수에 데이터 넣기  (0) 2020.04.25
# [MSSQL] LOCK 걸린 쿼리 확인 후 강제 KILL  (0) 2020.04.17
# 저장 프로시저  (0) 2020.04.07
# 트랜잭션  (0) 2020.04.07

DECLARE @nCnt INT  => 변수선언

SELECT @nCnt  = count(*) FROM [테이블명] WHERE IF_NO = @IN_vIF_NO AND IF_NO_SEQ = @IN_vIF_NO_SEQ

이런식으로 변수를 넣어주면 됨 

'[DB] > [MSSQL]' 카테고리의 다른 글

저장프로시저 실행  (0) 2020.04.30
소계, 합계 구하기  (0) 2020.04.27
# [MSSQL] LOCK 걸린 쿼리 확인 후 강제 KILL  (0) 2020.04.17
# 저장 프로시저  (0) 2020.04.07
# 트랜잭션  (0) 2020.04.07

MSSQL을 사용하다가 조회결과가 나오지 않을 경우 테이블에 락이 걸려서 발생 가능성이 있음

 

1. SP_LOCK 실행 

MODE값이 X인 것(LOCK걸린놈)을 확인 한후 SPID를 확인

 

2. LOCK 걸린 쿼리 조회

DBCC INPUTBUFFER(SPID번호)

 

3. LCOK으로 의심되는 SPID 조회

SELECT p.status ,p.program_name ,p.hostname ,p.spid ,p.blocked ,p.kpid

    ,p.cpu ,p.physical_io ,p.waittype ,p.waittime ,p.lastwaittype

    ,p.waitresource ,p.dbid ,p.uid ,p.memusage ,p.login_time ,p.last_batch

    ,p.ecid ,p.open_tran ,p.sid ,p.hostprocess

    ,p.cmd ,p.nt_domain ,p.nt_username ,p.net_address

    ,p.net_library ,p.loginame ,p.context_info ,p.sql_handle

    ,p.stmt_start ,p.stmt_end

FROM master..sysprocesses p

WHERE (

        STATUS LIKE 'run%'

        OR waittime > 0

        OR blocked <> 0

        OR open_tran <> 0

        OR EXISTS (

            SELECT *

            FROM master..sysprocesses p1

            WHERE p.spid = p1.blocked

                AND p1.spid <> p1.blocked

            )

        )

    AND spid > 50

    AND spid <> @@spid

ORDER BY CASE

        WHEN STATUS LIKE 'run%'

            THEN 0

        ELSE 1

        END

    ,waittime DESC

    ,open_tran DESC

 

4. KILL 죽이기

KILL SPID 번호 -- 죽일번호(LOCK걸린놈)

'[DB] > [MSSQL]' 카테고리의 다른 글

소계, 합계 구하기  (0) 2020.04.27
프로시저 생성시 변수에 데이터 넣기  (0) 2020.04.25
# 저장 프로시저  (0) 2020.04.07
# 트랜잭션  (0) 2020.04.07
@@ROWCOUNT  (0) 2020.03.26

# 저장프로시저 
저장프로시저는 EXECUTE문을 사용해 호출한다.

# 저장프로시저의 장점
 - 캡슐의 이점 : 저장 프로시저 로직이 변경되어도 매개 변수 형태의 변화가 없다면 사용자와 응용프로그램은 영향을 받지 않을 뿐더러, 변경된 로직을 즉시 적용받을수 있다.
 - 성능의 이점 : 저장된 실행계획을 재사용함으로써 CPU를 절약하고,구문분석,이름확인,그리고 최적화에 걸리는 시간을 단축할 수 잇다.
 - 네트워크 트래픽 최소화 : 서버로 전송하는 쿼리문의 문자열을 줄여 네트워크 트래픽을 줄일 수 있다. 상당한 길이의 쿼리문 대신 저장 프로시저 이름과 매개변수만 사용하기 때문이다.
 - 보안계층으로 사용 : 개체에 접근할 권한을 직접 부여하지 않고 저장 프로시저 실행권한만 부여하기 때문에 개체에 대한 불필요한 접근을 제한 할수 있다. 
저장 프로시저가 넘겨주는 값만 볼수 있다. 

 * 일반 SQL 문
 구문분석  - 표준화 - 보안점검 - 최적화  -컴파일 -실행
 (키워드를 분리하고 문법검사) (각 개체들이 이름을 확인하고 불필요한 구문 제거) (구문을 실행한 사용자의 권한을 확인) (가장빠른 성능을 위해 색인,조인,잠금 등을 결정하여 최적화된 실행계획을 만든다.) (실행계획을 컴파일 한 후 캐시에 등록)  (컴파일 된 구문 실행)

 * 저장 프로시저 
 구문분석  - 지연된 이름확인 -보안점검 -결과저장
 (키워드를 분리하고 문법을 검사)   (저장 프로시저를 만들때 해당 개체의 이름이 존쟇는지 확인하지 않는다.)  (저장 프로시저를 만들 수 있는 권한이 있는지 확인한다.) (시스템 테이블에 개체의 정보를 저장)





'[DB] > [MSSQL]' 카테고리의 다른 글

프로시저 생성시 변수에 데이터 넣기  (0) 2020.04.25
# [MSSQL] LOCK 걸린 쿼리 확인 후 강제 KILL  (0) 2020.04.17
# 트랜잭션  (0) 2020.04.07
@@ROWCOUNT  (0) 2020.03.26
테이블 복사 및 데이터 복사  (0) 2020.03.26

# 트랜잭션 
- 명시적 트랜잭션(Explicit Transacions)
 트랜잭션의 시작과 끝을 사용자가 직접 결정하는 트랜잭션 유형을 명시적 트랜잭션 
 BEGIN TRAN -> 데이터변경처리 -> COMMIT TRAN   완료
  -> ROLLBACK TRAN 완료

 * SET XACT_ABORT ON /OFF
 모든 오류로부터 일관성이 유지되는 것은 아니다.
 성공하는 쿼리문과 실해하는 쿼리문이 명시적 트랜잭션안에서 수행하지만 
 성공하는 쿼리문이 나옴 
 따라서 실패시 모든 처리가 취소되게 할 것이라면 SET XACT_ABORT_ON문 실행
 
- 묵시적 트랜잭션(Implicit Transactions)
 데이터변경처리 -> COMMIT TRANS - 완료
    -> ROLLBACK TRANS - 취소
 * SET IMPLICIT_TRANSACTIONS ON  

'[DB] > [MSSQL]' 카테고리의 다른 글

# [MSSQL] LOCK 걸린 쿼리 확인 후 강제 KILL  (0) 2020.04.17
# 저장 프로시저  (0) 2020.04.07
@@ROWCOUNT  (0) 2020.03.26
테이블 복사 및 데이터 복사  (0) 2020.03.26
MSSQL WITH (NOLOCK )  (0) 2020.03.20

쿼리문 실행문 실행 후 영향을 받은 로우의 수 반환

'[DB] > [MSSQL]' 카테고리의 다른 글

# [MSSQL] LOCK 걸린 쿼리 확인 후 강제 KILL  (0) 2020.04.17
# 저장 프로시저  (0) 2020.04.07
# 트랜잭션  (0) 2020.04.07
테이블 복사 및 데이터 복사  (0) 2020.03.26
MSSQL WITH (NOLOCK )  (0) 2020.03.20

-- 테이블을 생성하면서 데이터도 같이 복사 
SELECT * INTO [새로운 테이블 명]
 FROM [기존 테이블명]

'[DB] > [MSSQL]' 카테고리의 다른 글

# [MSSQL] LOCK 걸린 쿼리 확인 후 강제 KILL  (0) 2020.04.17
# 저장 프로시저  (0) 2020.04.07
# 트랜잭션  (0) 2020.04.07
@@ROWCOUNT  (0) 2020.03.26
MSSQL WITH (NOLOCK )  (0) 2020.03.20

+ Recent posts