SQL9 [SQL] MariaDB와 Oracle에서의 페이징 처리 : 쿼리 비교와 예시 마리아DB(MariaDB)와 오라클(Oracle)은 SQL 쿼리 언어의 표준을 따르고 있지만, 몇 가지 차이점이 있습니다.차이점과 예시 쿼리를 비교해보며 각 상황에 맞게 적용해 봅시다. 페이징 처리와 관련된 쿼리 작성 시 차이점 1. LIMIT 및 OFFSET vs ROW_NUMBER() 함수▶ 마리아DB (MariaDB) : 페이징 처리를 위해 'LIMIT' 및 'OFFSET' 절을 사용합니다.: 'LIMIT'은 반환할 행의 수를 지정하고, 'OFFSET'은 시작할 행의 위치를 지정합니다.▶ 오라클 (Oracle) : 오라클에서는 'ROW_NUMBER()' 함수와 서브쿼리를 사용하여 페이징 처리를 합니다.: 'ROW_NUMBER()' 함수를 사용하여 각 행에 순서를 부여하고, 그 순서를 기준으.. DB/SQL 2024. 4. 25. [SQL] HAVING 과 WHERE 차이 SQL 조건문 HAVING과 WHERE의 차이 정리. ● WHERE - FROM 뒤에 위치. 조건절에는 다양한 비교연산자를 사용하여 조건을 줄 수 있다. SELECT * FROM 테이블명 WHERE 조건절 ● HAVING - GROUP BY 뒤에 위치. 조건절에는 다양한 비교연산자를 사용하여 조건을 줄 수 있다. SELECT * FROM 테이블명 GROUP BY 필드명 HAVING 조건절 ▷ WHERE, HAVING 둘 다 필드에 조건을 줄 수 있다는 공통점이 있다. WHERE는 기본적으로 모든 필드에 조건을 줄 수 있지만, HAVING은 전체테이블에서 GROUP BY로 새로 생성된 테이블에 그룹화된 필드에 조건을 줄 수 있다는 차이점이 있다. 또한, HAVING에 조건을 줄 필드는 SELECT에 반드시.. DB/SQL 2023. 6. 16. [SQL] COALESCE() 함수 NULL 변환 COALESCE 함수사용하여 NULL값 변환하기 COALESCE()를 사용하여 N개 컬럼의 NULL체크를 하여 변환할 수 있다. 얼핏 보면 NVL()과 동일해 보이지만, NVL()은 인자가 2개만 가능하고 COALESCE()는 인자가 N개까지 가능하다 ! 예제를 보면 이해가 빠를 것이다.SELECT COALESCE(컬럼1, 컬럼2, … ,컬럼N) FROM TEST_TABLE컬럼1부터 NULL값을 체크하여 처음으로 NULL 아닌 값을 리턴한다. 예를 들어 컬럼1과, 컬럼2는 null인데 컬럼3이 null이 아닌 값을 갖고 있으면 처음으로 null이 아닌 컬럼3의 값을 리턴해준다. 플러스로 N번째 컬럼까지 모두 null이면 NULL을 리턴한다. COALESCE()의 내부 구현을 들여다보면, CASE WHEN.. DB/SQL 2023. 4. 1. [Oralce] ORA-01476: divisor is equal to zero - 제수가 0입니다. 쿼리를 짜다가 ORA-01476: divisor is equal to zero 에러가 발생했다. 에러가 발생한 이유는 제수가 0이기 때문이다. 즉, 분모가 0이여서 발생하는 에러이다. 분모에는 0이 올 수 없다. 운영 DB로 넘어가기 전 개발 DB에서 클렌징을 하고 다시 TEST를 진행하면서 분모가 0인 경우가 발생하여 위 에러를 마주했다.. 데이터가 많이 항상 분모는 0이 아닐 거라 생각하고 쿼리를 짜서 그랬던 것 같다. 본론으로 돌아가서, ORA-01476:divisor is equal to zero 에러 해결법은 분모 값이 0이 온다면 CASE ~ WHEN ~ THEN문 및 NVL(), COALESCE() 이용하여 해결할 수 있다. * CASE ~ WHEN ~ THEN문 및 NVL() 사용 SELE.. DB/Oracle 2023. 3. 29. [SQL] NULL값과 ‘’(공백) 비교 DB에서의 NULL을 알아보자 !!Oracle, Tibero, MSSQL에서 NULL은 없는값이 아니라 모르는값이다.그래서 AAA = NULL이 아니고 AAA IS NULL인 것이다.그렇기 때문에 없다면 ‘ ’(스페이스)를 넣어야 된다 ! 처음에는 왜 스페이스를 넣는가 했는데 이유가 있었다..!!! Oracle과 Tibero에서는 컬럼에 ‘’과 NULL은 같습니다. (‘' : 스페이스 없는 따옴표 열고닫고 ) SELECT CASE WHEN ‘’ IS NULL THEN ‘NULL’ ELSE ‘NOT NULL’ END FROM dual; : 위 쿼리의 결과는 NULL이다. 가끔 NOT IN이나 NOT LIKE를 사용하여 해당되지 않은 값은 빼고 조회할 때, NULL과 ‘’인값은 안 나오니 주의.하.. DB/SQL 2023. 3. 22. [Oracle] TRIM, LTRIM, RTRIM 함수 사용방법 오라클 TRIM, LTRIM, RTRIM 함수 사용방법 TRIM 함수는 문자열의 양쪽 공백을 제거하는 기본적인 함수 !LTRIM과 RTRIM 함수 역시 왼쪽과 오른쪽의 공백을 제거할 때 사용하는 함수이다.여기서 LTRIM과 RTRIM은 추가적으로 옵션을 줘서 반복적인 문자나 특정 문자를 제거할 수 있당 !! 사용방법을 확인해보자 ! :D ~ TRIM 함수: 문자열의 양쪽 공백을 제거하는 함수이다.SELECT TRIM("문자열") FROM TEST_TABLE LTRIM 함수: 문자열의 왼쪽 공백을 제거하고, 왼쪽의 반복적인 문자나 특정 문자를 제거할 수 있다.SELECT LTRIM("문자열", 옵션) FROM TEST_TABLE RTRIM 함수: 문자열의 오른쪽 공백을 제거하고, 오른쪽의 .. DB/Oracle 2021. 2. 15. [Oracle] SQL 중복제거 DISTINCT 사용법 sql 데이터 중복제거 DISTINCT 사용방법 SQL 에서 SELECT 조회를 할 때 중복제거를 하여 조회하는 방법을 알아보자 !방법은 간단하다. SELECT 뒤에 DISTINCT를 사용하여 키워드를 넣어주고 사용하면입력한 키워드의 중복제거를 한 결과가 조회된당 !! [ DISTINCT 사용방법 ]SELECT TEST_NM, TEST_ID FROM TEST_INFOTEST_NMTEST_IDABCTEST1BBBTEST2DDDTEST3ZZZTEST2YYYTEST1 SELECT 바로 뒤에 DISTINCT(키워드)를 넣어주면 키워드의 중복제거가 되어 조회된다.여기서 유의할 점은 DISTINCT의 위치가 반드시 SELECT문 바로 뒤에 와야된당 !!! SELECT DISTINCT(TEST_ID).. DB/Oracle 2021. 2. 8. [Oracle] SQL Developer - Date Format 변경 SQL Developer로 Oracle 쿼리를 작성하고 db정보를 볼 때 Date Format을 변경할 수 있다. DB데이터를 보는데 Date가 RR/MM/DD(ex.20/11/09)로 되어있어서 데이터가 년/월/일만 들어가 있는 줄 알았다. 난 시간(시/분.초)까지 찍힌 Date 데이터가 필요했다. 데이터의 오류인줄 알았는데 데이터의 오류가 아니였다 !!!! 0 _ 0 . . . 실제로는 시/분/초까지 데이터가 들어가 있었지만 설정이 RR/MM/DD로 되어있어서 년/월/일만 보여진 것이었다. SQL Developer에서는 기본 Date 출력 포맷이 RR/MM/DD로 설정되어있다. Date 포맷을 시/분/초까지 출력하도록 환경설정을 통해서 적용할 수 있다. 도구 [Tools] -> 환경설정 [Prefer.. DB/SQL 2020. 11. 9. [Oracle] MERGE문으로 INSERT, UPDATE문 실행하기 ORACLE - MERGE문으로 조건에 따라 INSERT문, UPDATE문 실행하기. 개발을 하다보면 상황에 따라 테이블에 데이터가 이미 존재하면 업데이트 하고, 존재하지 않으면 입력을 해야 하는 경우가 있다. 이때 유용하게 사용되는 것이 MERGE문 !! 사용방법을 익혀서 유연한 코드작성을 하자 !!! MERGE문 사용방법 _ 헷갈릴때마다 이 틀을 보고 헷갈리지 말자 ! : 다른 테이블에서 가져와서 데이터를 비교하는 것이 아니고 하나의 테이블만 사용할 때는 DUAL을 사용한다. CONDITION 에 조건을 넣어줌. 조건이 일치하면 UPDATE문 실행, 일치하지 않으면 INSERT문 실행. MERGE문 직접 사용 예시 ! 보고만 따라해도 오류는 발생한다.. ㅠㅠ 오류를 정리해두고 다음에는 오류없이 바로 .. DB/Oracle 2020. 8. 18. 이전 1 다음 728x90