반응형

SQL 16

[Oracle] SELECT UPDATE 문 작성 방법

UPDATE "UPDATE_TABLE" A SET A.COLUMN = (SELECT B.COLUMN FROM "SELECT_TABLE" B WHERE B.JOIN_COLUMN = A.JOIN_COLUMN ) WHERE A."COLUMN " = "VALUE"; 단순 SELECT UPDATE문의 경우 위 항목에서 JOIN_COLUMN부분만 제거 하면된다. 위 방법은 UPDATE하려는 TABLE과 SELECT TABLE의 JOIN이 필요한 SELECT UPDATE문이다. 위 방법을 사용하게된 상황은 게시판 마이그레이션 할때 게시글을 내용을 대량으로 조회하여 INSERT 할때 시간이 너무 오래 걸려 DB LOCK이 걸리는 상황이 발행하여 이관이 안되었어다. 여러 방법이 있겠지만 게시판 마이그레이션 시 먼저 IN..

SQL 2023.10.03

계층형 구조란?

계층형 구조(Hierarchical Structure)는 부모와 자식 간의 관계를 깊이로 구분하여 표현하는 것으로 트리구조, 보통 카테고리를 분류나 조직도에 많이 사용된다. 개발자들이 흔히 사용하는 Visual Studio나 이클립스와 같은 IDE의 Project 탐색기, 폴더의 탐색기에도 사용된다. 일반적으로 RDBMS에서는 행(Row) 단위로 데이터가 조회되어 다른 행과의 관계를 나타내는 계층형 구조를 조회하기 힘들다. 하지만, WITH문을 이용하면 계층형 구조의 데이터를 조회할 수 있다. Oracle은 10g버전부터 CONNECT BY문 을 이용하여 계층형 쿼리를 만들 수 있고, 11g R2 버전부터 Recursive Subquery Factoring 기능이 추가되어 WITH문으로 재귀가 가능하게 ..

SQL 2021.05.20

[Oracle]TOCHAR 사용 날짜변환 예제

오라클에서 쿼리문을 작성할 때 TO_CHAR() 함수는 날짜, 숫자 등의 값을 문자열로 변환하는 함수이다. 자주 사용하는 기본 함수이므로 아래의 다양한 변환 방법을 알고 있으면 많은 도움이 된다. 날짜 포맷 변경 (YYYY-MM-DD) SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') --20200723 , TO_CHAR(SYSDATE, 'YYYY/MM/DD') --2020/07/23 , TO_CHAR(SYSDATE, 'YYYY-MM-DD') --2020-07-23 , TO_CHAR(SYSDATE, 'YYYY-MM-DD HH24:MI:SS') --2020-07-23 11:10:52 FROM dual YYYY: 년, MM: 월, DD: 일, HH24: 24시간, HH: 12시간, MI: 분,..

SQL 2021.03.22

[Oracle]기존 테이블에 PRIMARY KEY 추가하기

* 기존테이블에 PRIMARY KEY 추가하기 ALTER TABLE 테이블명 ADD PRIMARY KEY(column); * 기존테이블에 PRIMARY KEY 제거후 추가적으로 PRIMARY KEY 추가하기 1. ALTER TABLE 테이블명 DROP PRIMARY KEY 현재 지정된 키 모두 삭제 2. ALTER TABLE 테이블명 ADD PRIMARY KEY(기존컬럼명, 추가컬럼명) 기존 키 컬럼과 함께 새로운 컬럼 추가 * PRIMARY KEY 제거 방법 ALTER TABLE 테이블명 DROP PRIMARY KEY; 위 구문을 사용할때 주의할 점이 있습니다. 그것은 Primary key를 생성하는 방법에 따라 제약조건과 인덱스가 모두 삭제가 될때도 있고, 또는 제약조건만 삭제가 되고 인덱스는 그대로..

SQL 2021.01.12

[Oracle]테이블 컬럼 추가/수정/삭제

추가 ALTER TABLE 테이블명 ADD(컬럼명 타입(사이즈)); ALTER TABLE TEST_TABLE ADD(D VARCHAR2(100)); 컬럼 코멘트 추가 COMMENT ON COLUMN 테이블명.컬럼명 IS '코멘트'; COMMENT ON COLUMN TEST_TABLE.COLUMNNAME IS '추가컬럼'; 컬럼 수정(데이터타입 변경) ALTER TABLE 테이블명 MODIFY(컬럼명 타입(사이즈)); ALTER TABLE TEST_TABLE MODIFY(COLUMNNAME NUMBER(5)); 컬럼명 변경 ALTER TABLE 테이블명 RENAME COLUMN 컬럼명 TO 변경할컬럼명; ALTER TABLE TEST_TABLE RENAME COLUMN COLUMNNAME TO COLUMN..

SQL 2021.01.12

[Oracle]데이터 날려먹었을때 복구방법

오라클에서 DELETE나 UPDATE 후에 COMMIT을 잘못할때가 있습니다. 그럴때에는 아래처럼 대처해주면됩니다. 1. DB 설정 확인 - 오라클 관리자로 커맨드 접속 - SHOW PARAMETER UNDO 여기서 undo_retention 은 update나 delete가 아닌 commit을 하였을때부터 경과한 초까지 저장한다는 뜻이다. 예를 들어 900 / 60 = 15분 이다. 이 시간은 alter system set undo_retintion = 1800 으로 변경이 가능하다. 2. 복구하기 - 15분 전의 데이터 조회하기 (원하는 시간으로 바꿔서 조회가 가능하다) SELECT * FROM 테이블명 AS OF TIMESTAMP(SYSTIMESTAMP-INTERVAL '15' MINUTE) - 현재..

SQL 2020.06.30

[MSSQL] 트리거 만들기 Insert,Update,Delete 양식

ALTER TRIGGER 트리거이름 ON 테이블이름 FOR DELETE, INSERT, UPDATE --삭제,입력,업데이트시 일어난다. AS BEGIN SET NOCOUNT ON DECLARE @ACTION AS CHAR(1)--삭제,입력,업데이트 구분자 SET @ACTION='I'--기본적으로 입력 IF EXISTS(SELECT * FROM DELETED)--삭제가 있으면? 업데이트 또는 삭제 BEGIN SET @ACTION=(CASE WHEN EXISTS(SELECT * FROM inserted) THEN 'U' ELSE 'D' END) END IF @ACTION='D' BEGIN --삭제시 수행할 쿼리들 END ELSE IF @ACTION='U' BEGIN --업데이트시 수행할 쿼리들 END ELS..

SQL 2017.12.19

[MSSQL]Merge문으로 insert/update/delete트리거 만들기

USE [WEIGHDB] GO /****** Object: Trigger [dbo].[TB_CUSTO_IUD] Script Date: 2017-12-19 오후 3:48:03 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: -- Create date: -- Description: -- ============================================= ALTER TRIGGER [dbo].[TB_CUSTO_IUD] -- 트리거명 ON [dbo].[TB_CUSTO] -- 트리거만들 테이블 AFTER INSERT,DELETE,UPDATE ..

SQL 2017.12.19

[MSSQL]트리거 만들기(특정 Table에 INSERT시)

USE [GSTEST] GO /****** Object: Trigger [dbo].[TB100_ID_CAR_NO_INSERT] Script Date: 2017-12-14 오후 5:16:53 ******/ SET ANSI_NULLS ON GO SET QUOTED_IDENTIFIER ON GO -- ============================================= -- Author: KJI -- Create date: 2017.12.14 -- Description: TB100테이블에에 INSERT가 될경우 T100_DEV_NO = '101', T100_DEV_TYPE = '01' 이면 -- T100_IF_YN = 'N'을 T100_ID와 T100_CAR_NO은 insert된 값을 TB100_..

SQL 2017.12.14

[MSSQL]DML 트리거 만들기

DML 트리거 만들기Create DML Triggers ‎ 이 항목에서는 Transact-SQLTransact-SQL 및 SQL Server Management StudioSQL Server Management Studio CREATE TRIGGER 문을 사용하여 Transact-SQLTransact-SQL DML 트리거를 만드는 방법에 대해 설명합니다.This topic describes how to create a Transact-SQLTransact-SQL DML trigger by using SQL Server Management StudioSQL Server Management Studio and by using the Transact-SQLTransact-SQL CREATE TRIGGER st..

SQL 2017.12.14
반응형