본문 바로가기

728x90
반응형

분류 전체보기

(315)
[실습문제] 2023. 10. 30.(월) 문제 풀이(7문제) 실습문제1. PROFESSOR 테이블에서 2000년대 이전에 입사한 교수의 이름, 입사일, 이메일, 홈페이지 주소를 출력하여라. 단, 홈페이지 주소가 없는 경우 email_id를 사용하여 다음과 같이 출력되게 하라. http://www.itwill.co.kr/myprode 일단 원래라면 hpage가 빈 문자열일 경우와 null인 경우 두 개의 상황을 먼저 따져야 하지만 우리는 null이라고 이미 알고 있었다는 가정하에 풀었기 때문에, 나중에는 스스로 이런 포인트도 찾아봐야 할 것이다. 이 문제의 핵심은 nvl 사용법도 있지만 where절에 있다. 본 where 절은 hiredate < to_date('2000/01/01', 'YYYY/MM/DD/') 의 표현을 올바르게 했는지를 파악하여야 한다. to_d..
[문제풀이] 몇 가지 기초 문제 풀어보기 문제 1. 이름에 *를 왼쪽에 채워 모두 동일한 15개의 이름으로 변환하고 업무와 급여를 출력한다. lpad를 사용하여 빈 공간을 채우는 문제였다. 문제2. EMP 테이블에서 담당 업무 중 좌측에 ‘A’를 삭제하고 급여 중 좌측의 1(숫자)을 삭제하여 출력하여라. trim 을 사용하고, trim은 문자 삭제 함수니까 숫자 데이터인 sal을 문자로 치환하여 1을 삭제하였다. 문제 3. EMP 테이블에서 담당 업무 중 우측에 ‘T’를 삭제하고 급여 중 우측의 0을 삭제하여 출력하여라. 위 방법과 동일하게, 다만 방향은 반대이다. 문제 4. EMP 테이블에서 JOB에 ‘A’를 ‘$’로 바꾸어 출력하여라. replace와 translate를 사용하여 풀어보았다. 문제 5. EMP 테이블에서 현재까지 근무일수가 ..
[복습] SQL | Oracle null값 관련 함수인 일반함수(nvl, nvl2) + 복습후기(20231030) 일반함수 중 nvl 함수가 있다. 이는 null치환 함수로, nvl(대상, null치환값) 형태로 사용된다. null 치환값은 데이터 타입이 문자일 경우 문자, 숫자인 경우 숫자, 날짜인 경우 날짜이다. 즉, 대상과 null 치환값의 데이터 타입은 일치하는 것이 좋다. 참고로 null의 경우 문자의 null보다 숫자의 null이 더 위험하다. 숫자 null이 포함된 산수의 계산은 null이 리턴되므로 사전에 null이 포함되어 있는지, null로 인해 연산 결과가 잘못된 것은 없는지 꼭 확인하여야 한다. 이렇게 위의 테스트를 확인해보면 알 수 있듯이 sal+comm(null포함)은 null이 출력되므로 comm에 nvl 함수를 씌워 결과를 도출하면 된다. 즉 이런 문법은 불가하며 null값에 꼭 X를 넣..
[복습] SQL | Oracle 데이터 타입 바꾸기, 변환 함수(to_char, to_number, to_date) 데이터 타입을 변환하는 목적을 가진 함수가 변환 함수이다. 숫자, 문자, 날짜 등 간의 변환을 하겠다는 의미이다. to_char 는 숫자를 문자로, 날짜를 문자로 함수는 문자로의 타입 변환 함수이다. 1) 숫자 → 문자: 숫자의 출력 포맷 변경 보통 금액을 표기할 때 1,000원과 같이 숫자 포맷에 (,)가 있는 경우가 있다. 0 또는 9로 채울 수 있으나 이 둘은 차이가 있다. 아래처럼 실습을 해보면 알 수 있다. 9로 채우는 경우는 부족한 자리가 공백으로 채워지나 0으로 채우는 경우 부족한 자리가 0으로 채워진다. 뒤에 .99를 붙이는 경우는 뒷자리가.00으로 표시되어 나오며 $는 앞에 달러 단위가 붙은 채 출력된다. 그리고 표현하려는 포맷의 자리수가 원본보다 작은 경우에는 데이터가 *으로 표현된다...
[복습] SQL | Oracle 다양한 종류의 날짜 함수(sysdate, add_months, months_between, next_day, last_day, round/trunc) 현재 시스템 날짜 출력하는 함수는 sysdate 이다. 이러한 날짜는 연산이 가능하며, 정수를 더하고 빼면 일 단위로 연산이 된다. 두 날짜의 일 수를 리턴하고 싶다면, 말 그대로 두 날짜를 빼면 일 수가 출력된다. 만일 3개월 이전 날짜가 궁금하다고 하자. 월은 30일로, 31일로도 끝나기도 하며 어떨 땐 윤달이 끼어서 29 값을 활용해야 할 수도 있다. 이럴 때 add_months 사용하면 된다. add_months(날짜, n) 의 형태로 사용되며 아래처럼 활용하면 된다. 3개월 이후는 양수, 이전은 음수로 나타내면 된다. 오늘 날짜로부터 3년 후를 표현해보면, 위와 같이 나타낼 수 있다. 그냥 365를 냅다 3으로 곱하면 예시처럼 하루가 모자라게 나타나므로 마지막 방법으로 계산하여야 할 것이다. 다..
[복습] SQL | Oracle 숫자 함수 중 단일행 함수들(round/trunc, ceil/floor, mod, abs, sign) 앞서 함수들은 그룹함수들로 다건을 입력하면 한 행이 출력된다. 이제 볼 함수들은 단일행 함수들로 한 건 입력하면 한 건이 출력된다. 먼저 round/trunc 함수이다. round(대상[, 자릿수]) 형식으로 나타내며 자릿수 생략 시 일의 자리까지 반올림/버림 한다. 위처럼 12.3456에서 자릿수에 3을 넣으면 셋째 자리에 맞춰라는 의미이다. 그런데 숫자의 반올림과 자리수를 표현하고자 한다면 자릿수에 음의 값이 가능하다 그러나 자릿수가 음의 값인 경우 정수 자리에서 반올림/버림. 즉 세 번째 자리에서 반올림/버림 을 한다. ceil/floor 함수 중 ceil(대상) 의 경우 대상보다 크면서 가장 작은 최소 정수를 구하라는 의미이며(올림), floor(대상) 의 경우 대상보다 작으면서 가장 큰 최대 정..
[복습] SQL | Oracle 엑셀과 비슷한 숫자 함수(count, sum, avg, min/max) 여러 숫자함수 중 엑셀과 비슷한 숫자 함수가 있다. 먼저 count는 행의 수를 세어준다. count(대상) 그런데 count는 Null을 세어주지는 않는다. comm은 null이 포함되어 있으므로 14건으로 출력되지 않는다. 어떤 테이블도 전체 컬럼이 null인 컬럼은 데이터로서의 의미가 없다. 위의 상황을 살펴보면 가장 안전하게 테이블의 전체 행의 수를 세는 방법은 * 를 사용하는 것이다. 그러나 그 단점으로는 모든 컬럼을 엑세스 해야하므로 성능이 좋지 않다는 것이다. 위의 empno처럼 절대 null이 들어가지 않는 단 하나의 컬럼을 찾는 방법이 있을까? 이를 확인할 수 있는 방법이 있다. desc emp; 하면 Nullable에 NOT NULL을 찾아서 사용하면 된다. sum 함수는 간단하다. 총..
[실습문제] 2023. 10. 27.(금) 문제 풀이(5문제) 실습문제 1. STUDENT 테이블에서 각 학생의 이름, 전화번호를 출력. 단 전화번호는 다음과 같은 형태로 출력 055)381-2158 => 0553812158 나는 첫 줄의 방법대로 풀었는데 replace를 두 번 썼더니 조금 헷갈린 부분이 있었다. 선생님은 두 번째 해설을 추가해주셨는데 이 방법이 더 깔끔해보였다. translate는 치환하려는 값이 없으면 그 대상을 삭제해버리기때문이다. Oracle에서만 쓸 수 있는 방법일듯. 실습문제 2. 아래 문장을 실행한 후(기존 데이터에 특문 삽입), professor 테이블에서 각 교수의 이름, 급여, ID를 출력 단, ID에 있는 특수기호는 모두 삭제한 후 리턴 update professor set id = 'captain!!' where PROFNO ..
등원 후 맞이하는 첫 가짜 주말을 보내는 자세 이번 주말은 가짜다. 목요일에 처음 수업을 시작하였고 수업에 필요한 소프트웨어를 설치하며 오전 시간을 할애했다. 그리고 오후부터 SQL 문법에 대한 수업을 진행하였다. 금요일부터 앞으로의 수업 일정이 이렇게 될 것이라는 것을 보여주기라도 하듯 아침 9:30부터 18:20까지 수업이 굴러갔고 그렇게 맞이한 주말이 이번 주말이다. 그러하니 배운 내용은 목, 금 이틀 뿐이었고 이 내용을 주말동안에 복습하면 되었으나... 다음주부터는 월-금 5일동안 배운 내용을 이틀 동안 복습을 해야 하기 때문에 선생님께서도 이번 주말이 우리가 푹 쉴 수 있는 마지막 주말이 될 거라고 하셨다. 이러한 가짜 주말을 나는 늦게 자기, 늦잠 자기, 복습하기, 노트북, 키보드, 마우스 구매하기, 운동하기 그리고 친구 닌텐도 구매 구경..
[문제풀이] SQL | Oracle 연산자문제 1~10번 문제 1) EMP 테이블에서 급여가 1300에서 1700 사이인 사원의 성명, 업무, 급여, 부서번호(deptno)를 출력하여라. 문제 2) EMP테이블에서 사원번호(empno)가 7902, 7788, 7566 인 사원의 사원번호, 성명, 업무, 급여, 입사일자(hiredate)를 출력하여라. 문제 3) EMP테이블에서 입사일자가 82년도에 입사한 사원의 사 원번호, 성명, 담당업무, 급여, 입사일자, 부서번호를 출력하여라. 문제 4) EMP 테이블에서 이름의 첫 글자가 ‘M’인 사원의 이름, 급여를 조회하라. 문제 5) EMP 테이블에서 이름의 두 번째 글자가 ‘L’인 사원의 이 름, 업무를 조회하라. 문제 6) EMP 테이블에서 보너스(comm)가 NULL인 사원의 사원 번호, 이름, 업무, 급여, ..

728x90
반응형