쿼리
  • 특정 database 지정하여 모든 테이블 데이터 삭제 SET @tables = NULL; SELECT GROUP_CONCAT(table_schema, '.' ,table_name) INTO @tables FROM information_schema.tables WHERE table_schema = 'DB명'; SET @tables = CONCAT('DROP TABLE ', @tables); PREPARE stmt FROM @tables; EXECUTE stmt; DEALLOCATE PREPARE stmt;

    Read more
  • 요건사항 USER 테이블에서 USER_GRP_ID 의 그룹 별 USER_GENDER 개수와 USER_AGE 개수를 알고싶다. SELECT * FROM USER; USER_ID USER_GENDER USER_AGE USER_GRP_ID 1 F 22 U001 2 F 22 U001 3 M 20 U001 4 M 20 U002 5 F 23 U003 6 M 23 U003 원하는 결과 USER_GRP_GENDER_CNT USER_GRP_AGE_CNT USER_GRP_ID 2 2 U001 1 1 U002 2 1 U003 설명 ** U001의 경우 USER_GENDER = F,M, USER_AGE = 22, 20 일 경우로 각 2개, 2개가 나온다. ** U002의 경우 USER_GENDER= M, USER_AGE = ..

    Read more
  • ORA-10858 a non-numeric chracter was found where a numeric as expected 해당 오류는 아래와 같은 상황에서 발생한다. SELECT TO_DATE(SYSDATE, 'YYYYMMDD') FROM DUAL; SYSDATE는 이미 DATE 타입의 값인데 해당 값을 다시 TO_DATE()를 사용하여 DATE 타입으로 변환을 시도했기 때문에 발생한다. SELECT TO_CHAR(SYSDATE, 'YYYYMMDD') FROM DUAL; Foramt 을 변경하려면, Date 타입의 값을 TO_CHAR()을 사용하여 변경해주자. ORA-01481 invalid number format model 해당 오류는 아래와 같은 상황에서 발생한다. SELECT TO_CHAR(..

    Read more
  • startDate-endDate 기준 포함되는 월(Month) 조회 SELECT TO_CHAR(ADD_MONTHS(TO_DATE(SUBSTR('20210301', 5, 2), 'MM'), LEVEL - 1 ),'MM') AS MONTHS FROM DUAL CONNECT BY LEVEL

    Read more
  • Before WM_CONCAT() 사용 전의 select 조회 select * from dept; DNAME AA BB CC After WM_CONCAT() 사용 후의 select 조회 select WM_CONCAT(DNAME) from dept; DNAME AA,BB,CC 위 결과를 보았을때, WM_CONCAT() 함수를 사용하여 원하는 컬럼의 여러 데이터를 하나의 행으로 표현할 수 있다.

    Read more
  • 24시간(하루) 이내에 업로드된 데이터 찾기 SELECT COUNT(*) FROM test WHERE created_date > DATE_ADD(now(), INTERVAL -1 DAY); 작성날짜 컬럼 created_date 일때, DATE_ADD(now(), INTERVAL -1 DAY)를 사용하면된다.

    Read more
  • ORDER BY - 정렬 ORDER BY idx DESC LIMIT #{offset}, #{limit} DESC : 데이터 내림차순 (idx가 5-4-3-2-1 순으로 내림차순되어 조회된다) ASC : 데이터 오름차순 (idx가 1-2-3-4-5 순으로 오름차순되어 조회된다) -> DESC를 쓰지 않으면 default 값으로 ASC(오름차순)되어 정렬된다. LIMIT - 개수제한 (페이징) Mysql에서는 LIMIT을 사용하여 쉽게 페이징을 구현할 수 있다. LIMIT #{offset], #{limit} 예를들어, offset이 0이고 limit이 10일때, 0번째 데이터부터 10개를 조회한다는 의미이다. 따라서 페이징의 기능을 구현해보고자할때 limit값이 10일때에 하나의 페이지에서 10개씩의 게시글..

    Read more
  • mysql에서 검색어를 찾는 select 쿼리를 알아보자 SELECT col1, col2 FROM text WHERE title LIKE CONCAT('%', #{searchText}, '%') 위 쿼리는 검색어 변수 searchText가 null이 아니고, 빈문자열("")이 아닐때 검색어 searchText를 포함하는 제목을 가진 게시글을 찾는다. if test 조건문을 사용하여 검색어가 입력되어있는지, 아닌지 확인하고 검색어가 입력되어있다면 mysql에서는 LIKE CONCAT 을 통해 해당 검색어를 포함한 데이터를 찾을 수 있다. '%'를 searchText의 앞과 뒤에 모두 적어준 이유는 아래와 같다. searchText = "게시글" 일때, AA게시글과 게시글AA를 모두 찾기위함이다.

    Read more
  • IFNULL 함수 IFNULL((SELECT col1 FROM test WHERE idx = 1), '테스트 완료') IFNULL 함수(조건1, 조건2) - 조건 1의 값이 NULL 이면 조건 2를 출력 - 조건 1의 값이 NULL이 아니면 조건 1의 값을 출력

    Read more
  • case~when~then 문 CASE col1 WHEN 'a' THEN '햄버거' WHEN 'b' THEN '피자' END AS food CASE~THEN~WHEN 문은 위 예제 한줄로만 봐도 충분히 이해가 가능하다. CASE 컬럼이 WHEN 해당 값이라면, THEN 해당 값으로 변경한다. CASE ~ WHEN ~ THEN ~ WHEN ~ THEN ~ ELSE '' END -> ELSE를 사용하여 나머지 값들도 설정해줄수 있다. 또는, CASE WHEN col1 = 'a' THEN '햄버거' 라고도 할 수 있다.

    Read more
  • mybatis 쿼리문 실행결과 컬럼(열) 순서를 고정 SELECT col1, col2, col3 FROM test 위 SELECT 해온 쿼리의 결과를 리스트로 받아올때, 리스트의 순서를 col1, col2, col3로 고정시키고 싶은 경우가 있다. 하지만 hashMap을 resultType으로 받는 위 결과를 보면 SELECT 컬럼 순서대로 조회되지 않는다. SELECT col1, col2, col3 FROM test 결과타입 resultType을 "java.util.LinkedHashMap" 으로 변경하면, SELECT 선언 컬럼 순서대로 데이터를 담을 수 있다.

    Read more
  • Mybatis 실행결과 Return spring 프로젝트를 할때 serviceImpl에서 mappe파일을 호출하여 쿼리가 실행될때 이 쿼리로 인해 변경되거나 삽입되거나 삭제된 행의 개수를 가져올 수 있다. 1. count : insert된 개수가 리턴된다. int count = ExamMapper.insertUsers(); if (count < 1) { Log.info("변경사항 없음"); } 2. count : update된 개수가 리턴된다. int count = ExamMapper.updateUsers(userVO if (count < 1) { Log.info("변경사항 없음"); } 3. count : delete된 개수가 리턴된다. int count = ExamMapper.deleteUsers(i..

    Read more
  • NULL 변환 함수 1. NVL 함수 NULL 값을 다른 값으로 변환할때 사용하며, 모든 데이터 타입에 사용할 수 있다. SELECT NVL(col1, 0) FROM exam exam 테이블의 컬럼 col1이 null이라면, 0을 출력한다. 2. NULLIF 함수 NULLIF(col1, col2) 컬럼 col1의 값과 컬럼 col2의 값이 동일하면 NULL을 출력하고, 동일하지않으면 col1의 값을 출력한다. 3. COALESCE COALESCE(col1, col2, col3, ...) col1, col2, col3... 중에서 순서대로 비교하여 null이 아닌 첫번째 값을 가져오고, 모두 null이면 0을 출력한다.

    Read more
  • trim 사용하는 방법 UPDATE examTable exam1 = #{exam1}, exam2 = #{exam2}, WHERE idx = #{idx} mybatis에서 update 쿼리문을 사용하다보면 위처럼 조건문만 사용하게 되는 경우가 생긴다. 그때 콤마(,) 를 어떻게 사용해야 sql문 error가 발생하지 않을지 고민하게 된다. 그럴때는 위 예제처럼 trim 이라는것을 사용하자. +댓글내용 참고 (gyeongtae kim님) - prifix = tirm 안에있는 모든 문자열의 앞에 붙여줄 문자열을 입력하는 곳 - suffixOverrides = trim 안에있는 모든 문자열의 조건문을 판별해서 입력된 문자열의 맨 끝에서부터 찾아서 지워줄 문자열을 입력하는 곳 Oracle 에서 NVL 함수 사용하..

    Read more
  • Copyright 2024. GRAVITY all rights reserved