실습문제 1. STUDENT 테이블에서 각 학생의 이름, 전화번호를 출력.
단 전화번호는 다음과 같은 형태로 출력
055)381-2158 => 0553812158
나는 첫 줄의 방법대로 풀었는데 replace를 두 번 썼더니 조금 헷갈린 부분이 있었다.
선생님은 두 번째 해설을 추가해주셨는데 이 방법이 더 깔끔해보였다.
translate는 치환하려는 값이 없으면 그 대상을 삭제해버리기때문이다.
Oracle에서만 쓸 수 있는 방법일듯.
실습문제 2. 아래 문장을 실행한 후(기존 데이터에 특문 삽입), professor 테이블에서 각 교수의 이름, 급여, ID를 출력
단, ID에 있는 특수기호는 모두 삭제한 후 리턴
update professor set id = 'captain!!' where PROFNO = 1001;
update professor set id = 'go_go_go' where PROFNO = 4002;
update professor set id = 'simson?' where PROFNO = 4001;
commit;
어떤 특수기호가 들어가있는지 안다면 1번처럼 replace를 사용할 수 있겠으나
특수기호가 어떤 것이 있는지 모른다면 translate를 쓰는 것이 좋겠다.
그러나 추후 정규식 표현을 배울 때 또 다른 좋은 방법이 있다고 하시니 그건 그 때 배우는 걸로.
실습문제 3. student 테이블에서 각 학생의 이름, 전화번호를 출력
단, 전화번호는 다음과 같은 형태로 출력
055)381-2158 => 055)XXX-2158
055)3811-2158 => 055)XXXX-2158
02)3811-2158 => 02)XXXX-2158
개인적으로 많이 헷갈리면서 어려웠던 문제다.
다른 언어를 생각해보면 자꾸 머리속으로 loop문을 사용하고 싶다는 생각이 들었는데 replce와 lpad를 이용하면 해결할 수 있는 문제였다.
국번1은 내가 해결해본 방법이고 국번2는 선생님이 하신 방법이다.
실습문제 4. STUDENT 테이블에서 ㅅ성을 가진 학생의 이름, 출생연도, 학년 출력하라.
이 문제는 집에 가는 버스 안에서, 샤워하면서, 자기 전에 계속 고민해본 문제였다.
선생님이 이 문제는 몇 줄이면 해결되는 것이라고 하셨기 때문에 오기가 생겼던 것 같다.
문자에서도 순서가 존재한다는 생각을 못했기 때문에 접근하지 못한 문제였다.
실습문제 5.(HR계정) EMPLOYEES 테이블에서 EMAIL에 LAST_NAME이 포함되어 있는 직원의 EMPLOYEE_ID, LAST_NAME, EMAIL 출력(대소 구분X) (총 85건)
--OConnell DOCONNEL (X)
--Grant DGRANT (O)
--Whalen JWHALEN (O)
--De Haan LDEHAAN (X)
지난주 금요일 실습문제 풀이 끝.
'배우기 > 복습노트[oracle sql]' 카테고리의 다른 글
[복습] SQL | Oracle 숫자 함수 중 단일행 함수들(round/trunc, ceil/floor, mod, abs, sign) (0) | 2023.10.30 |
---|---|
[복습] SQL | Oracle 엑셀과 비슷한 숫자 함수(count, sum, avg, min/max) (0) | 2023.10.30 |
[문제풀이] SQL | Oracle 연산자문제 1~10번 (0) | 2023.10.29 |
[복습] SQL | Oracle 엑셀 데이터를 DB에 import하는 방법(DB화) + 복습후기(20231027) (0) | 2023.10.28 |
[복습] SQL | Oracle 날짜 함수: 날짜 추출 함수(extract, to_char) (0) | 2023.10.28 |