전체 글

오늘 할 일은 내일로 미루고 내일 할 일은 생각하지 말자
문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_INTAKE VARCHAR(N)..
문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_INTAKE VARCHAR(N)..
ORA-00979: GROUP BY 표현식이 아닙니다. "not a GROUP BY expression" ※ 이 오류는 데이터 조회 시 자주 확인할 수 있다. 지금 내가 일하고 있는 이곳은 통계 값 요청이 상당히 많다. ~~자격증을 소지하고 있는 자는 몇 명인지, ~~상태값이 Y인 아이디는 몇 개인지, N인 아이디는 몇 개인지 등 위와 같이 통계 값을 요청했을 때 자주 사용하는 것이 GROUP BY 이다. 쉽게 예를 들자면, 1번, 2번 자격증이 있다고 가정하고, 요청자가 1번 자격증을 소지하고 있는 사람의 수, 2번 자격증을 가지고 있는 사람의 수를 뽑아주세요!라고 할 때 이 GROUP BY 를 사용하면 쉽게 구할 수 있다는 것이다! 그럼 GROUP BY 표현식이 아닙니다. 라는 오류는 언제 발생하는지..
ORA-01858: 숫자가 있어야 하는 위치에서 숫자가 아닌 문자가 발견되었습니다. "a non-numeric character was found where a numeric was expected" ※ 데이터 조회 시 날짜 관련 함수(TO_CHAR, TO_DATE 등)를 사용할 때 자주 발생하는 오류이다. 아래의 예시에 있는 질의문을 실행시켜보면, SELECT TO_DATE(SYSDATE, 'yyyymmdd') FROM DUAL; 'ORA-01858 : 숫자가 있어야 하는 위치에서 숫자가 아닌 문자가 발견되었습니다.' 오류가 출력된다. 어떻게 보면 다른 애매모호한 오류 메시지보다 훨씬 직관적이라서 헤맬 필요 없이 쿼리를 수정이 가능하다. 오류가 발생하는 원인은 TO_DATE 함수는 숫자를 문자로 변환해..
ORA-01722: 수치가 부적합합니다 해당 오류는 데이터를 삽입, 수정 시 확인할 수 있다. 간단하게 설명하자면 컬럼의 DATATYPE이 NUMBER인데, 해당 컬럼에 문자를 입력하게 되면 ORA-01722 오류가 발생한다. 위의 오류는 당연하게도 NUMBER 타입의 컬럼에만 국한되지 않고 다른 데이터 타입의 경우도 마찬가지이다. 아래는 예시이다. -- ORA-01722 오류 발생 -- USER_TEL 컬럼의 DATATYPE은 NUMBER라고 가정한다. INSERT INTO TB_USER ( USER_NO, USER_ID, USER_TEL ) VALUES ( '0001', 'kimheon1' '아메리카노' ); USER_TEL 컬럼의 데이터 타입이 NUMBER인데 해당 컬럼에 '아메리카노' 라는 문구를..
ORA-12899 : 열에 대한 값이 너무 큼 "value too large for column" 데이터 삽입, 업데이트 시 많이 마주치는 오류이다. 위 오류는 컬럼에 설정되어 있는 데이터 허용치보다 더 큰 값을 삽입, 업데이트 하는 경우 발생한다. 쉽게 예시를 들어보면, DEL_YN 이라는 컬럼에 데이터 타입이 VARCHAR2(1 BYTE)라고 가정했을 때 입력할 수 있는 값은 알파벳 하나일 것이다. 그런데 이 컬럼에 한글을 넣는다던지, 더 많은 알파벳, 숫자 등 설정한 BYTE보다 더 큰 값을 입력하는 경우 ORA-12899 오류가 출력될 것이다. -- INSERT 과정에서 ORA-12899 오류 발생 -- DEL_YN 컬럼의 DATETYPE이 VARCHAR2(1 BYTE) 라고 가정함 INSERT ..
ORA-01400 : NULL을 (~) 안에 삽입할 수 없습니다 해당 오류는 INSERT 구문을 작성하다 보면 확인할 수 있다. 오류 메시지에 친절하게 NULL을 '테이블.컬럼명' 에 삽입할 수 없다고 하는데, 풀어서 얘기하면 ORA-01400 오류는 테이블에 NULLABLE이 'No'인 컬럼이 있는데 해당 컬럼에 데이터를 넣지 않고 INSERT를 시도하는 경우 발생한다. -- INSERT 과정에서 ORA-01400 오류 발생 -- 해당 테이블의 USER_NO 컬럼은 NULLABLE 값이 'No' 라고 가정한다. INSERT INTO TB_USER ( USER_NM ) VALUES ( '김헌일' ) 위의 쿼리문은 겉으로 봐서는 문제가 없어 보이지만, USER_NO 컬럼의 NULLABLE 값이 No일 경우..
ORA-00913 : 값의 수가 너무 많습니다 "too many values" 데이터 확인을 위해 SQL 질의문을 작성하다 보면 가끔씩 마주치는 오류이다. + 해당 오류는 INSERT 과정에서도 발생한다. -- SELECT 과정에서 ORA-00913 오류 발생 SELECT * FROM TB_USER WHERE USER_NO = ( SELECT USER_NO, USER_NM FROM TB_USER WHERE USER_NO = ? ) -------------------------- -- INSERT 과정에서 ORA-00913 오류 발생 INSERT INTO TB_USER ( USER_NO, USER_NM ) VALUES ( 'ID000001', '김헌일', 'kimheonil' ) 해당 오류가 나는 이유는 ..
ORA-01427: 단일 행 하위 질의에 2개 이상의 행이 리턴되었습니다. "single-row subquery returns more than one row" 데이터 확인을 위해 SQL 질의문을 작성하다 보면 가끔씩 마주치는 오류이다. -- ORA-01427 오류 발생 SELECT * FROM TB_USER WHERE USER_NO = ( SELECT USER_NO FROM TB_USER ) 조건문에 들어간 서브쿼리가 하나 이상의 결과값을 뱉어내면 위와 같은 오류 메시지가 출력되는데 해결 방법은 간단하다. 1. equlas(=) 로 검색하려는 조건을 'IN'으로 수정하기 2. 하나의 결과만 정확하게 출력할 수 있도록 서브쿼리 수정하기 아래는 예시이다! -- 1번 SELECT * FROM TB_USER ..
· Knowledge
예전에 학원을 다닐 때였나? 정확히 기억은 나지 않지만 깃허브 프로필을 꾸밀 수 있는 기능이 새롭게 추가됐다고 해서 (그 당시에는 easter egg 식이어서 아는 사람만 알고 있었던 것으로 기억한다.) 그때부터 지금까지 열심히 Readme를 꾸미고 있다! 내 Readme에 들어간 뱃지, 유용하게 사용할 수 있는 뱃지 등 여러 가지를 정리해보려고 한다. 우선 아래의 사진은 현재 나의 깃허브 Readme 화면이다. 맨 위에서부터 순서대로 capsule-render, github-readme-stats, github-readme-streak-stats, github-readme-activity-graph, shields.io(여러 가지의 버튼들 - Hits, 티스토리 블로그, 인스타그램, 메일 주소 등) 사..
문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_INTAKE VARCHAR(N)..
문제 설명 ANIMAL_INS 테이블은 동물 보호소에 들어온 동물의 정보를 담은 테이블입니다. ANIMAL_INS 테이블 구조는 다음과 같으며, ANIMAL_ID, ANIMAL_TYPE, DATETIME, INTAKE_CONDITION, NAME, SEX_UPON_INTAKE는 각각 동물의 아이디, 생물 종, 보호 시작일, 보호 시작 시 상태, 이름, 성별 및 중성화 여부를 나타냅니다. NAME TYPE NULLABLE ANIMAL_ID VARCHAR(N) FALSE ANIMAL_TYPE VARCHAR(N) FALSE DATETIME DATETIME FALSE INTAKE_CONDITION VARCHAR(N) FALSE NAME VARCHAR(N) TRUE SEX_UPON_INTAKE VARCHAR(N)..
· Blog
이 글은 과거에 국비지원 웹 개발자 교육과정을 이수하며 경험했던 것들을 토대로 작성하였습니다. 국비지원 학원은 2020년 1월부터 9월까지 약 9개월이라는 기간 동안 다녔다. 고등학생 때 시스템 엔지니어가 되고 싶다는 생각 하나로 소프트웨어공학과로 진학하는데 어찌어찌 성공했지만 프로그래밍 언어는 내가 생각했던 것과는 너무 달랐고 대학교를 다닐 당시에는 노는 게 너무 좋았기 때문에 학업에 소홀했던 거 같다. (핑계..) 시간이 지나 졸업을 하게 되었고, 학교를 다니면서 시스템 엔지니어가 아닌 웹 개발자가 되기로 마음먹었지만 졸업 당시의 웹 개발 스킬로는 어디에도 취업하기 힘들 거 같다는 생각이 들었다. 그러다 같은 학번 친한 형이 국비지원 교육을 받아보는 게 어떻겠냐고 권유를 해줬고, 누가 붙인 타이틀인지..
· Knowledge
들어가기 전, 저의 맥북 사양입니다. Device : MacBook Pro OS : macOS Monterey 12.2 베타 CPU : Intel Core i7 2.6 GHz RAM : 16GB GPU : Radeon Pro 450 2GB Intel HD Graphics 530 1536MB 참고해주세요! 이야기는 과거로 흘러 흘러 몇 년 전 맥북을 개발 용도로 처음 구입했을 때의 이야기다. 윈도우 환경에서는 별다른 설정 없이 간단하게(?) 데이터베이스를 설치하면 바로 사용이 가능했던 오라클 데이터베이스인데, Mac OS 환경에서는 도커를 사용해서 오라클을 세팅해서 써야 했다. 멘붕이었다. 어렸을 때 맥북을 사용한 경험이 있었지만 그 당시 개발 용도로 구입했던 것은 아니었고, 얼마 전 도커라는 존재는 어찌..
다니고 있는 직장에서 CRON 스케줄러를 사용해야 하는 일이 생겼다. 내가 담당하고 있는 사이트 중 메인 페이지에 정기간행물 정보를 노출하는 사이트가 있었는데, '어떠한' 기능 때문에 사이트 최초 접속 시 로딩 시간이 매우 길다는 이슈가 발견됐기 때문이다. 여기에 간행물 개수도 기존에 운영 중이던 7개에서 무려 4개나 늘려 총 11개를 노출해야 했으므로, 대대적인 개편 작업이 필요하게 되었다. (ㅠㅠ 분명 수정 작업이라매요) 해당 사이트의 '어떠한' 기능은 내가 여기에 입사하고 두 달쯤 된 완전 신입 개발자일 때 실무는 이런 곳이구나 ㅠㅠ 하며 피똥 싸며 개발한 기능이었다. 말만 기능이지 사실상 서비스단, 쿼리, JSTL 등 곳곳에 야무지게 삽질한 것의.. 산물이었다. AS-IS 시스템은 아래와 같다. ..
헌일