ORA-00933 SQL COMMAND NOT PROPERLY ENDED ora-00933 sql 명령어가 올바르게 종료되지 않았습니다. 에러는 종종 발생하는 에러 중에 하나입니다. 에러해결방법 1. 띄어쓰기 확인 2. 콤마 제대로 썻는지 확인 -> 콤마 위치 확인!! 3. WHERE, FROM 등을 제대로 썻는지 확인 -> WHERE, FROM 위치 확인!! 4. 괄호 확인 -> 괄호 제대로 열고 닫혔는지 확인!! 5. 오타 확인하기 6. spring mybatis 에서 세미콜론(;) 있는지 확인 -> 같이 복사가 됫는지 확인!! 위의 에러가 발생하는 경우는 여러가지 경우여서 위의 해당하는 경우가 있는지 확인해주세요!
안녕하세요. 오늘은 오라클 중복데이터를 찾는 방법을 알아보겠습니다. 실무를 하다보면 중복된 값을 찾아야 하는 경우가 자주 생깁니다. 실무자들이 요구하는 특정데이터를 찾는 경우, 또는 잘못된 데이터를 찾아야 하는경우 등등. 이럴경우에는 그룹함수를 사용하여 중복된 데이터를 찾으면 됩니다. 오라클 그룹함수 : GROUP BY, HAVING, PARTITION BY 1. 중복 조회를 할 컬럼을 GROUP BY로 그룹핑 후 HAVING 조건에 COUNT 1이상인 것을 조회 2. 분석함수(PARTITION BY)를 사용하여 조회 테스트를 위해 SAMPLE 데이터를 준비하였습니다. 아래 SAMPLE 테이블에는 TV와 휴대폰이 중복데이터로 있습니다. 중복된 TV와 휴대폰을 찾아보겠습니다. 1. GROUP BY HAVI..
오라클 GREATEST, LEAST 함수사용법 및 주의사항에 대해 알아보겠습니다. 오라클에서 최대값, 최소값을 구하는 함수는 MAX(), MIN() 함수를 사용합니다. 하지만 MAX(), MIN()은 한컬럼의 최대값 또는 최소값을 구하는 함수입니다. 여러 컬럼을 비교하여 최대값 또는 최소값을 구하는 함수를 알아보겠습니다. GREATEST(n1,n2,n3,n4....) 열거된 여러 컬럼중 최대값을 리턴합니다. 열거된 데이터 타입의 경우는 동일해야합니다.(숫자형, 문자형, 날짜형) SELECT GREATEST(1,2,3,4,5,6,3,10,2,6,8) FROM DUAL; LEAST(n1,n2,n3,n4....) 열거된 여러 컬럼중 최소값을 리턴합니다. 열거된 데이터 타입의 경우는 동일해야합니다.(숫자형, 문..
MySQL root 패스워드 변경하는 방법(MariaDB 10.4 이상 버전) MariaDB 10.4 버전에서 새로운 기능이 추가 되었습니다. 시스템의 root 와 MaridaDB의 root와 동일하게 본다는 내용입니다. 시스템에 root를 등록하면 mysql DB 접속시 root의 패스워드가 필요없이 접속이 가능해졌습니다. 자세한 내용은 아래 링크로 첨부하였습니다. https://mariadb.com/kb/en/authentication-from-mariadb-104/ root 접속 안되는 현상 발생 오늘 로컬에 있는 MySQL DB에 접속할려고 보니 root 계정의 접속이 되지 않더라구요. 자세히 보니 root의 계정 접근이 안된다고 뜨는것 같습니다. 오류명 ERROR 1045 (28000): acc..
오라클 몫, 나머지 구하는 방법을 알아보겠습니다. 오라클 몫 구하는 방법 - 그냥 일반적으로 나눗셈을 하듯이 나누면 됩니다. ( / ) SELECT '8/4' , 8/4 FROM DUAL UNION ALL SELECT '13/2' , 13/2 FROM DUAL UNION ALL SELECT '8/2.5' , 8/2.5 FROM DUAL UNION ALL SELECT '15.6/4' , 15.6/4 FROM DUAL; 오라클 나머지 구하는 방법 - 오라클 내장함수인 MOD를 사용하면됩니다. - MOD(n1,n2) , 예) MOD(5/15).... SELECT 'MOD(8,4)' , MOD(8,4) FROM DUAL UNION ALL SELECT 'MOD(3,4)' , MOD(3,4) FROM DUAL UN..
오라클 문자(CHR) 와 아스키코드(ASCII)함수 변환 방법 문자함수 CHR(Number) - 문자를 검색하는데 사용하는 사용하며, 해당하는 코드의 문자열을 반환합니다. - 오라클 8버전 이상부터 사용가능합니다. - 예) CHR(65), CHR(116).. 하단에 코드표 참조 아스키함수 ASCII(Single Charater) - Number 코드를 검색할 지정문자입니다. - 둘이상의 문자를 입력하면 첫번째 문자의 값을 반환하고, 그이후의 문자는 무시합니다. - 숫자값을 리턴합니다. - 오라클 8버전 이상부터 사용가능합니다. - 예) ASCII( 'T' ), ASCII('A')... 하단에 코드표 참조 CHR() 함수 사용 방법 SELECT 'CHR(35)' , CHR(35) FROM DUAL UNIO..
오라클에서 테이블 컬럼추가, 컬럼 데이터 타입변경 컬럼명 변경, 삭제, 코멘트 추가하는 방법을 알아볼게요. 오라클 테이블 컬럼 추가 방법 - TEMP1018 테이블에 컬럼명 GOODS_CD, 데이터타입 VARCHAR2(10) 컬럼 추가 ALTER TABLE 테이블명 ADD(컬럼명 데이터타입(사이즈)); ALTER TABLE TEMP1018 ADD(GOODS_CD VARCHAR2(10)); 오라클 테이블 컬럼 데이터 타입 수정 방법 - TEMP1018 테이블에 컬럼명 GOODS_CD, 데이터타입 NUMBER(7) 데이터 타입 변경 - 컬럼에 있는 데이터가 변경할려고 하는 데이터 타입과 맞지 않는 경우 변경 안됨. - 컬럼에 있는 데이터 사이즈 보다 작은 사이즈로 변경 안됨. ALTER TABLE 테이블명 ..
ORA-00918: 열의 정의가 애매합니다. 00918. 00000 - "column ambiguously defined" ORA-00918 에러 발생 원인 조인되는 테이블컬럼에 같은 이름의 컬럼이 존재하는 경우 alias를 붙여 어떤 컬럼인지 명시를 해주어야 합니다. -> goods 테이블의 goods_cd 와 goods_desc 테이블의 goods_cd 둘중에 어떤 컬럼을 보여주어야 하는지 알수가 업성서 에러가 발생. select goods_cd FROM goods a, goods_desc b WHERE a.goods_cd = b.goods_Cd; 에러 해결방법 1. SELECT 문에 사용할 컬럼명에 ALIAS를 명시합니다. SELECT a.goods_cd, b.goods_cd FROM goods a..
오라클에서는 절대값을 구하는 ABS 함수를 제공하고 있습니다. ABS함수 - 절대값을 구하는 함수로 음수의 데이터를 양수로 표기하여 보여줍니다. - 컬럼데이터 타입이 Number 형태가 아닌 문자형도 가능합니다. 다만 숫자로 인식이 가능한 문자여야 합니다. 오라클 절대값 구하는 ABS 함수 사용방법 selecT abs(-5) ,abs(5) ,abs(5.2333) ,abs(-5.2333) from dual;
ORA-02291: 무결성 제약조건이 위배되었습니다.부모 키가 없습니다. 에러 발생원인 및 해결방법 ### Error updating database. Cause: java.sql.SQLIntegrityConstraintViolationException: ORA-02291: 무결성 제약조건(DWB2B.FK_COL01)이 위배되었습니다- 부모 키가 없습니다. ### The error may involve kr.service.theshop.rt.insertReturn-Inline ### The error occurred while setting parameters ### SQL: insert into temp1019(COL01) values('2') ### Cause: java.sql.SQLIntegrity..
실수로 테이블을 삭제 한 경우 테이블 및 데이터 복구하는 방법을 알아볼게요. 저는 오늘 개발서버에서 실수로 drop table을 잘못 날려서 테이블을 날려버렸습니다. insert,update,delete 쿼리문은 commit 을 하지않으면 rollback으로 복구를 시킬 수 있지만 drop table을 한경우에는 rollback이 되지 않습니다 이럴경우 Oracle FlashBack 기능을 활용하면 됩니다. 데이터베이스는 테이블과 연관된 데이터를 바로 삭제처리 하지 않습니다. 바로 삭제처리 하지않은 데이터는 테이블의 이름을 변경하여 관련 오브젝트를 Recyle bin 에 저장을 합니다. 실수로 table을 drop 한경우에 당황하지 말고 아래 방법으로 복구하시면 됩니다. 오라클 10g 이상부터 지원하는 ..
ORA-00904 부적합한 식별자 에러가 발생하였습니다. ORA-00904 프레임워크 에러 ### Error updating database. Cause: java.sql.SQLSyntaxErrorException: ORA-00904: "123": 부적합한 식별자 ### The error may involve kr.co.shop.lib.bl.service.theshop.rt.insertOtherReturnGoodsCart-Inline ### The error occurred while setting parameters ### Cause: java.sql.SQLSyntaxErrorException: ORA-00904: "123": 부적합한 식별자 ORA-00904 에러 해결방법 1. 쿼리에 존재하지 않은 ..
REPLACE 문법 REPLACE('컬럼명','찾을문구','변환문구') REPLACE(target column, target_str, replace_str) 오라클에서는 문자열을 치환 또는 제거 하는 방법으로는 REPLACE 함수를 사용하면 됩니다. 아래 예제를 통해서 직접 결과를 보겠습니다. REPLACE 특정문자 치환(맥스->AIR MAX) 특정문자 치환시 대문자, 소문자를 구분하기 때문에 유의해서 사용해야 합니다. SELECT '이번에 산 신발은 맥스97이다. 나는 맥스95도 가지고있다' as str ,REPLACE('이번에 산 신발은 맥스97이다. 나는 맥스95도 가지고있다', '맥스', 'AIR MAX') as restr FROM DUAL; REPLACE 특정문자 공백 변환(특별시->공백) SE..
ORA-00911 문자가 부적합합니다. ORA-00911 invalid character. 에러발생원인 ORA-00911 은 프로그래밍을 하다보면 종종 발생하는 에러입니다. 에러가 난 부분의 쿼리를 긁어다가 TOAD나 , DBeaver 등 DB접속툴에서 실행을 시키면 실행이 잘됩니다? 원인이 무엇일까..? 이게 뭐지... 왜안되는거지? 저같은 경우는 SQL 작성부문에 세미콜론이 있었습니다. DB툴에서 작성한 쿼리를 그대로 붙여넣다가 세미콜론도 같이 복사가 되었습니다. SELECT USER_ID, USER_NAME FROM USER_DATA WHERE user_ID NOT IN ('TEST'); 해결방법 작성한 SQL 쿼리에 세미콜론(;), 콤마(,), 마침표(.)등 문자부호를 한번 더 확인해주세요. 너무..
뷰(View)란? 하나의 가상테이블이라고 생각하시면 됩니다. 작업을 하다보면 자주 조회하는 데이터들이 있습니다. 한테이블에 데이터가 있으면 조회하기 편하겠지만 그렇지 않은 경우가 많습니다. 여러 테이블을 JOIN사용하여 가져오고 쿼리가 복잡한 경우도 있습니다. 이런 경우 쿼리로 뷰를 만들어 놓고 사용하면 편리합니다. 그리고 뷰는 보안에도 유리합니다. 테이블에 데이터를 노출시키고 싶지 않을때, 뷰를 사용하여 보여줄 데이터만 뷰로 제공할 수 있습니다. (ex. 다른업체에 DB데이터 조회 권한을 주었을때, 테이블의 특정데이터 노출안함) 뷰(View) 사용목적 1. 뷰를 만들어 놓으면 복잡한 쿼리를 쉽게 작성 가능. 2. 원하는 컬럼만 공개하여 원천데이터 테이블 비공개 가능. 보안성↑ 뷰(View) 특징 1. ..
MINUS 연산자를 사용하여 데이터 비교하기 안녕하세요 주니어녕입니다. 오늘은 두테이블 간의 차이가 있는 데이터를 찾는 방법을 알아보겠습니다. MINUS 연산자 - 대상이 되는 테이블의 공통된 항목을 제외한 결과를 보여줍니다. - 데이터의 타입, 순서, 갯수는 일치해야 합니다. - 첫번째 대상이되는 테이블 - 두번째 대상이 되는 테이블 이해가 되셨나요? 쿼리로 확인해보겠습니다. 샘플데이터를 만들어 볼게요. WITH CODE1 AS ( SELECT 'code_1' AS userId FROM DUAL UNION ALL SELECT 'code_2' AS userId FROM DUAL UNION ALL SELECT 'code_3' AS userId FROM DUAL UNION ALL SELECT 'code_4'..
오라클(ORACLE) 데이터를 TIMESTAMP를 사용하여 복구 데이터베이스를 이용하다보면 실수로 데이터를 삭제하거나, 잘못 업데이트를 하는 경우가 있습니다. commit을 하기전이라면 상관이 없습니다. 하지만 commit을 한 이후에 문제를 파악하여 데이터를 복구해야 하는 경우가 생깁니다. 이럴때 ORACLE 의 TIMESTAMP를 이용하면 데이터를 복구 할 수 있습니다. TIMESTAMP 사용조건 oracle 9i 이상부터 지원 DB의 설정에 따라서 시간이 오래지난 데이터는 TIMESTAMP로 복구가 불가능합니다. TIMESTAMP 사용법 단위는 SECOND, MINUT, HOUR, DAY 로 지정해서 사용할 수 있습니다. SYSTIMESTAMP 에서 설정한 시간을 입력하여 데이터를 보여줍니다. --..
NVL, NVL2 사용법 및 차이 데이터 처리를 할때 NULL 처리는 항상 중요합니다. 이런 NULL 데이터 처리를 간편하게 하기위해 오라클(oracle)에서는 NLV 함수를 제공하고 있습니다. 오라을 외 다른 데이터베이스에서는 nvl 사용이 불가능 합니다. 1. NVL 함수 [ NVL( 대상 , null인 경우 값 ) ] 대상의 값이 NULL 인 경우 지정한 값으로 치환합니다. 모든 데이터 타입에 적용이 가능합니다. ex ) select nvl(GOODS_QTY, 0) from GOODS; -> GOODS테이블에 GOODS_QTY가 null 일 경우 0으로 치환 2. NVL2 함수 [ NVL2( 대상, null 아닌경우 값, null인 경우 값 ) ] 대상의 값이 NULL 인 경우와 NULL이 아닌경우..
ORACLE 버전 확인 쿼리 1. v$version 조회 오라클 버전, 데이터베이스 서버 운영체제 및 버전까지 확인하는 방법입니다. v$version 에서는 데이터베이스에서 핵심 라이브러리 버전을 표시합니다. - 구성 요소 이름 및 버전 번호 SELECT * FROM v$version; 2. PRODUCT_COMPONENT_VERSION Product, Version, Status 를 분류로하여 확인할 수 있습니다. - 구성 요소 제품및 버전, 상태를 표시합니다. SELECT * FROM PRODUCT_COMPONENT_VERSION; 3. NLS_DATABASE_PARAMETERS 조회 데이터베이스의 영구 NLS 변수를 표시합니다. SELECT * FROM NLS_DATABASE_PARAMETERS W..
오라클 INSTR 문자열 문자 위치 찾기 INSTR 함수는 문자열에서 특정 문자열을 찾은 위치를 반환하는 함수입니다. 위치는 찾은 문자열의 첫번쨰 위치를 반환합니다. INSTR 함수를 활용하는 방법 1. 문자열에서 특정 문자열의 위치를 찾을 경우 2. 특정 문자열에서 원하는 문자열까지 자르기가 필요한 경우(SUBSTR 활용) INSTR 문법 INSTR('문자열' , '찾을문자열') INSTR('문자열' , '찾을문자열' , '시작위치') INSTR('문자열' , '찾을문자열' , '시작위치' , '발생횟수') INSTR 예제 select INSTR('WELCOME TO MY BLOG. TOO HOT', 'HI') as ex1 -- 찾는 단어가 없으면 반환값 0 ,INSTR('WELCOME TO MY BL..