본문 바로가기
  • [성공하는 개발자] - Developer
728x90

DataBase52

[Oracle] 오라클 MERGE INTO 사용법 & 노하우 정리 오라클에서 쿼리문을 작성하다 보면, 하나의 쿼리문으로 INSERT, UPDATE, DELETE 작업을 해야 하는 경우가 있다. 이럴 때에는 MERGE 문을 사용하면 간단하게 쿼리문을 작성할 수 있다. 오라클 9i부터 MERGE 문을 사용할 수 있으며, DELETE 절은 10g부터 사용할 수 있다. 오라클 MERGE 문 ■ 단일 테이블 사용법 (DUAL) MERGE INTO emp a USING dual ON (a.empno = 7788) WHEN MATCHED THEN UPDATE SET a.deptno = 20 WHEN NOT MATCHED THEN INSERT (a.empno, a.ename, a.deptno) VALUES (7788, 'SCOTT', 20); 단일(자신의) 테이블에 MERGE 문은 .. 2022. 11. 1.
[MSSQL] 중복 제거 방법 (DISTINCT) SQL Server에서 중복된 행을 제거하고 한 번만 표시하고 싶다면 DISTINCT를 사용하면 된다. 중복 행을 제거하는 방법은 DISTINCT 사용하는 방법 외에도 GROUP BY 절을 사용해서 중복 행을 제거할 수 있다. GROUP BY를 사용하면 속도가 조금 빠르다는 얘기가 있으나 큰 차이를 느끼지 못했다. GROUP BY를 사용해야 할 특별한 경우가 아니면 중복 행을 제거할 때는 DISTINCT를 사용할 것을 권장한다. DISTINCT를 사용해도 중복을 제거한 결과가 오름차순으로 정렬되어서 조회된다. (SQL Server 2019) ■ DISTINCT를 사용하여 중복 제거 SELECT DISTINCT deptno, job FROM emp WHERE deptno in (20, 30) 중복 행이 제.. 2022. 10. 28.
[MSSQL] 문자열 합치기 (CONCAT, +) SQL Server에서 문자열을 합칠 때는 CONCAT 함수와 더하기(+) 연산자를 사용한다. 문자열을 합칠 때는 되도록이면 CONCAT 함수를 사용할 것을 권장하지만, 더하기 연산자를 사용하는 것이 더 익숙하기 때문에 더 많이 사용하는 듯하다. 더하기 연산자를 사용할 때는 주의사항이 있으니 아래를 참고하기 바란다. ■ CONCAT 함수 사용하여 문자열 합치기 SELECT CONCAT('SQL', 'Server', '2019') AS str1 , CONCAT(2021, 12, 31, 23, 59, 59) AS str2 CONCAT 함수는 많은 데이터베이스에서 사용 가능한 ANSI SQL 함수이며, CONCAT 함수에 입력된 값은 문자형으로 변환 후 합치는 작업이 이뤄진다. 숫자와 문자가 함께 입력되어도 .. 2022. 7. 28.
[MSSQL] 문자열 자르기 (SUBSTRING, LEFT, RIGHT) SQL Server에서 문자열을 자르기 위해서는 SUBSTRING, LEFT, RIGHT 세 가지 함수를 사용할 수 있다. 오라클에서는 SUBSTR 함수 하나로 위의 세 가지 함수 기능을 모두 할 수 있지만, SQL Server에서는 위의 세 가지 함수를 적절히 잘 사용해야 한다. SUBSTRING("문자열", "시작위치", "길이") : 지정한 위치에서 지정한 문자열 길이만큼 자를 때 사용 LEFT("문자열", "길이") : 왼쪽에서부터 지정한 문자열의 길이만큼 자를 때 사용 RIGHT("문자열", "길이") : 오른쪽에서부터 지정한 문자열의 길이만큼 자를 때 사용 기본 사용법 ■ SUBSTRING 함수 SELECT SUBSTRING('SQL Server 2019', 1, 3) AS str1 , SUB.. 2022. 7. 25.
[MSSQL] CASE WHEN 표현식 사용법 (DECODE, IF) SQL Server에서는 조건에 따라 서로 다른 값을 반환할 수 있는 CASE 표현식을 사용할 수 있다. 프로그래밍 언어에서 if 문과 비슷하다고 생각하면 된다. 오라클의 DECODE 함수와 비슷한 기능을 하며, CASE 표현식은 ANSI SQL 이므로 대부분의 데이터베이스에서 동일하게 사용할 수 있다. CASE 표현식은 if 문 방식과 swith 문 방식으로 사용할 수 있다. 주로 if 문과 유사한 방식으로 많이 사용하지만 상황에 따라서 swith 문 방식으로 사용하면 쿼리문을 단순화시킬 수도 있을 듯하다. 기본 사용법 ■ if 문 방식 ELECT employee_id , first_name , job_id , CASE WHEN job_id = 13 THEN 'CLERK' WHEN job_id = 14.. 2022. 7. 25.
[MSSQL] 현재시간 GETDATE()와 SYSDATETIME() 차이 SQL Server에서는 현재 날짜와 시간을 가져오기 위해서는 GETDATE 함수를 사용한다. 다른 데이터베이스의 SYSDATE나 NOW() 함수와 비슷하다. SQL Server 2012부터 SYSDATETIME 함수가 추가되었으며 GETDATE 함수보다 더 정밀한 시간을 반환한다. 아래는 두 함수를 간단하게 비교하여 정리한 내용이다. ■ GETDATE() vs SYSDATETIME() SELECT GETDATE() AS [GETDATE] , SYSDATETIME() AS [SYSDATETIME] GETDATE 함수는 datetime 타입의 밀리초(3자리)를 반환한다. SYSDATETIME 함수는 datetime2 타입의 100나노초(7자리)를 반환한다. SYSDATETIME 함수가 조금 더 정밀한 시간.. 2022. 7. 19.
728x90