일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- Visual Studio Code
- vscode
- 티스토리 초대장
- django
- scrapy
- tensorflow
- 텐서플로우
- 장고
- MSSQL PYTHON
- c#
- 딥러닝
- 오라클
- MSSQL
- 윈도우10
- Serial
- MEAN Stack
- PYTHON MSSQL
- rs422
- 자본주의
- pymssql
- 크롤링
- rs485
- M2M
- Python
- sql developer
- oracle
- windows10
- matplot
- MX Component
- 파이썬
- Today
- Total
목록DataBase (99)
안까먹을라고 쓰는 블로그
Transact-SQL Visual C# 및 Microsoft Visual C++ 언어의 예외 처리와 유사한 방식으로 Microsoft에서 오류 처리를 구현합니다. Transact-SQL 문의 그룹을 TRY 블록으로 묶을 수 있으며 TRY 블록 내에서 오류가 발생하는 경우 일반적으로 CATCH 블록으로 묶은 또 다른 문의 그룹으로 제어가 전달됩니다. TRY...CATCH 구문은 심각도가 10을 넘으며 데이터베이스 연결을 닫지 않는 모든 실행 오류를 catch합니다. TRY 블록 다음에는 곧바로 연결된 CATCH 블록이 이어져야 합니다. END TRY와 BEGIN CATCH 문 사이에 다른 문을 포함시키면 구문 오류가 발생합니다. Syntax BEGIN TRY { sql_statement | stateme..
트랜잭션(Transaction) 이란? 트랜잭션은 작업의 한 단위입니다. 트랜잭션이 성공하면 트랜잭션 동안 이루어진 모든 데이터 수정은 커밋되고, 데이터베이스의 영구적인 부분이 됩니다. 트랜잭션에 오류가 발생하여 취소되거나 롤백되면, 모든 데이터 수정은 지워집니다. MSSQL의 트랜잭션 모드 자동 커밋 트랜잭션 개별적으로 실행하는 쿼리가 해당됩니다. 명시적 트랜잭션 (일반적으로 생각하는 트랜잭션) 각 트랜잭션이 BEGIN TRANSACTION 문으로 명시적으로 시작하여, COMMIT 또는 ROLLBACK문으로 명시적으로 완료 됩니다. 암시적 트랜잭션 새 트랜잭션은 이전 트랜잭션이 완료되면, 암시적으로 시작되지만, 각 트랜잭션은 COMMIT 또는 ROLLBACK문으로 명시적으로 완됴 됩니다. 일괄 처리 범..
조회 프로시저를 작성하다보면, 데이터의 순차적인 합계가 필요한 경우가 있다. Ex) 누적되는 재고를 각각 보고 싶다고 요청하는 경우 등.. 원본테이블 SELECT DT_ORDER, CD_ITEM, QT_ORDER FROM [NEOE].[ORDER] ORDER BY DT_ORDER, CD_ITEM 사용방법 SUM([합계구할 컬럼]) OVERT PARTITION BY [그룹지을 컬럼들..] ORDER BY [정렬할 컬럼들..] ※ SUM 으로 되어있는 부분은 다른 집계함수(AVG, COUNT, MIN, MAX) 로도 변경 가능합니다. 순번을 매길때는 SUM([합계구할 컬럼]) 을 ROW_NUMBER() 로 변경하여 사용 가능합니다. 사용예제 SELECT DT_ORDER, CD_ITEM, QT_ORDER, S..
MSSQL 의 집계함수들에 대한 정리자료 입니다. 테이블 정보 SELECT DT_ORDER, CD_ITEM, QT_ORDER FROM [DZ].[dbo].[ORDER] ORDER BY DT_ORDER, CD_ITEM DT_ORDER : 20230901 에는 CD_ITEM : item1 이 2개 있습니다. DT_ORDER : 20230902 에는 CD_ITEM : item2 이 2개 있습니다. DT_ORDER : 20230903 에는 CD_ITEM : item3 이 2개 있습니다. GROUP BY GROUP BY는 - GROUP BY [설정컬럼 들...] 와 같이 사용하며, 설정한 "설정컬럼 들.."을 기준으로 하여, 그룹을 지어서 조회가 되며, ※ "설정컬럼 들.."에 없는 컬럼은 SUM, COUNT, ..
아래의 쿼리를 실행하면, 여태까지 MSSQL 서버에서 실행된 쿼리 중에서, 설정 된 시간 아래의 " > 1000000"보다 오래걸린 쿼리내역이 조회된다!! ※ 아래 쿼리 실행시에는 MSSQL 관리자권한 로그인 필요!! SELECT TOP 1000 (qs.total_elapsed_time / qs.execution_count) as each_elapsed_time, st.text as query FROM sys.dm_exec_query_stats as qs WITH(NOLOCK) CROSS APPLY sys.dm_exec_sql_text(qs.sql_handle) as st WHERE (qs.total_elapsed_time / qs.execution_count) > 1000000 ORDER BY each..
프로시저 안에는 여러 개의 쿼리가 있을수 있고, 다른 프로시저를 호출할 수도 있다. 이런 각 부분 마다 아래와 같이 시간과 구분값을 표시할 수 있는 PRINT문을 추가한다. 구분 값은 숫자를 트리 형식으로 하면 확인하기 좋다. Ex) 1.1 1.1.1 1.1.1.1 1.2 1.2.1 PRINT(CONVERT(NVARCHAR(100), GETDATE(), 120) + ' : 1.2') 위의 방법으로 프로시저를 SSMS에서 실행하면, 하단의 결과 값의 "메시지" 부분에 위에 추가한 PRINT문의 값이 표시된다. 각 구분 값의 시간을 확인하여, 어디에서 불필요하게 많은 시간이 소요되는지 확인한다. 이 부분의 쿼리를 수정하여, 성능을 개선한다. ■ 개선방법 Case1. 특별한 작업을 하지 않았는데, 갑자기 느려..
오라클 코드 SELECT * FROM TEMPA WHERE (A, B) IN (SELECT A, B FROM TEMPB WHERE C ='Y') DELETE FROM TEMPA WHERE (A, B) IN ( SELECT A, B FROM TEMPB WHERE C = 'Y' ) SELECT A, B, C, D FROM TABLE_A WHERE (A, B) IN ( SELECT BB.A, CC.B FROM TABLE_B BB, TABLE_C CC WHERE BB.A = CC.A ) MSSQL 코드 SELECT A.* FROM TEMPA A WHERE EXISTS (SELECT 1 FROM TEMPB B WHERE B.A = A.A AND B.B. = A.B AND C = 'Y' ) DELETE FROM T..
트리거(Trigger) - 특정 테이블에 삽입, 수정, 삭제 등의 데이터 변경 이벤트가 발생하면 DBMS에서 자동적으로 실행되도록 구현 된 프로그램 입니다. - 이벤트는 전체 트랜잭션 대상과 각행에 의해 발생되는 경우 모두를 포함할 수 있으며, 테이블과 뷰, DB 작업을 대상으로 정의할 수 있습니다. 트리거의 목적 - 특정 테이블에 대한 데이터 변경을 시작점으로 설정하고, 그와 관련된 작업을 자동적으로 수행하기 위해 트리거를 사용합니다. - 일반적으로 이벤트와 관련된 테이블의 데이터 삽입, 추가, 삭제 작업을 DBMS가 자동적으로 실행시키는데 활용합니다. 트리거 예제소스 - ON [NEOE].[PU_POL] 과 같이 적용할 테이블을 지정 - AFTER UPDATE/INSERT/DELETE 등의 트리거를 ..
ORACLE은 아래와 같이 IN절에 필드를 여러개 사용할 수 있습니다. 하지만 MSSQL에서 동일한 쿼리 실행 시, 오류가 발생합니다. SELECT TOP 10 * FROM MA_EMP where (NO_EMP, NM_KOR) IN (('000708001', '윤태원'), ('000708002', '이미선')) 편법이긴하지만, 아래와 같이 사용가능합니다. 데이터가 많아지면, 조건절의 데이터 가공관련, 성능상으로는 문제가 발생할 수도 있을 것 같습니다. SELECT TOP 10 * FROM MA_EMP where (NO_EMP + NM_KOR) IN ('000708001' + '윤태원', '000811001' + '고명진') 끝~
Microsoft SQL Management Studio 에서 해당 테이블에서 마우스 오른쪽 버튼을 눌러서 트리거를 켜고 끌수도 있으나, SQL 쿼리문을 통해 활성화(Enable) / 비활성화(Disable) 시키는 방법 입니다. ■ 트리거 활성화 시키기 (트리거가 걸린 테이블을 선택해줘야 합니다) ALTER TABLE '테이블명' ENABLE TRIGGER '트리거명' ■ 트리거 비활성화 시키기 (트리거가 걸린 테이블을 선택해줘야 합니다) ALTER TABLE '테이블명' DISABLE TRIGGER '트리거명' 끝~