본문 바로가기

728x90
반응형

배우기/복습노트[oracle sql]

(70)
[복습] 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 | 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인 사원의 사원 번호, 이름, 업무, 급여, ..
[복습] SQL | Oracle 엑셀 데이터를 DB에 import하는 방법(DB화) + 복습후기(20231027) 마지막으로 엑셀 데이터를 DB화 하는 법을 배웠다. 1. table 생성하기 미리 선생님이 공유해주신 화면으로 엑셀에 저장된 데이터 형태를 파악했기에 아래와 같이 작성할 수 있었다. 이렇게 작성한 후 실행하면 테이블이 만들어진다. 만일 실수로 생성하여 지우고 싶다면 drop table movie_table; 하면 생성된 테이블을 지울 수 있다. 그리고 생성된 table에 실데이터 값을 넣어보자. 2) table에 데이터 값 넣기 위 메뉴에 Tools 로 들어가 Load Tool 을 클릭한다. Load 탭이 생성된 것을 확인할 수 있으며 접속한 계정으로 Connect 한다. table에서 생성했던 MOVIE_TABLE을 찾을 수 있으며 이 table을 선택하면 우측 화면이 아래와 같이 나타난다. 일단 아까..
[복습] SQL | Oracle 날짜 함수: 날짜 추출 함수(extract, to_char) 앞선 글에서 emp 테이블에서 각 직원의 이름과 입사연도를 출력하라는 연습문제가 있었다. 이제까지 배운 문자 함수로는 풀 수가 없었다. 특히 substr로 풀기에는 아래처럼 접근이 적절치 않았다. 이러한 결말은 바로 다음과 같기 때문이다. 날짜 타입은 각 DBMS마다 기본 저장 포맷이 있다. 내가 테스트하고 있는 orcl이라는 현 DB는 YY/MM/DD라는 포맷을 가지고 있으며, 날짜 데이터 출력 시 사용한 개발 툴의 날짜 출력 포맷에 따라 출력된다. 내가 사용하는 개발 툴은 orange이며 이 경우는 YYYY/MM/DD 이다. 따라서 substr을 쓰면 원하는 포맷대로 출력이 되지 않는다. 먼저 내가 현 DB에 저장된 날짜 포맷이 YY/MM/DD임을 아는 경우 월을 추출하는 방법을 써보겠다. 우선 이 ..
[복습] SQL | Oracle 문자 함수: 문자열 치환(삭제) 함수(replace) 그리고 translate 문자열 치환(삭제) 함수인 replace는 replace(원본대상, 찾을 문자열[, 바꿀 문자열]) 형태로 변형된다. 아래 여러가지 방법으로 실습을 해보았다. replace('abcba', 'ab', 'AB') 는 abcba에서 앞의 ab를 AB로 바뀌었다. 여기서 보면 ab는 바꾸었으나 ba는 바꾸지 않았다. 즉 같은 문자열인 ab에만 영향이 간 것을 알 수 있다. replace('abcba', 'ab')는 바꿀 문자열을 생략한 것으로 바꿀 문자열을 생략하면 ab를 없앤다는 의미가 되므로 ab가 삭제된다. replace('abcba', 'ab', '')는 바로 직전 실습과 마찬가지로 ab를 작은따옴표 안으로 바꾼다는 의미인데 작은 따옴표 안에는 아무 내용도 없으므로(스페이스바로 띄운 공란 조차 없음) ..
[복습] SQL | Oracle 문자 함수: 문자열 삽입 함수(lpad, rpad), 문자열 삭제 함수(trim, ltrim, rtrim) 문자열 삽입 함수로 lpad, rpad가 있다. 활용 예시를 보면 아래와 같다. abcd라는 네 글자의 단어 길이를 10길이로 만들고 그 빈 공간을 *로 채워서 총 10길이로 만들 수 있다. lpad는 왼쪽, rpad는 오른쪽 공간을 채우게 된다. 잘 쓰지 않는 기능이나, 주로 줄맞추기 할 때 사용된다. orange에서는 공백과 영문 글자 사이즈가 달라 정렬이 잘 보이지 않으므로 cmd 창에서 실습해보면 아래와 같다. orange에서는 위와 같이 오른쪽 정렬이 잘 보이지 않고, 이렇게 cmd에서 보면 오른쪽 정렬이 되어있다. 이렇게 왼쪽정렬, 오른쪽 정렬할 때 사용하기도 하나 ★다음 활용 예시가 매우 중요하다. 예를들어 년: 2018 월: 2 일: 1 인 자료가 있다고 하자. 이 자료를 || 를 사용하여..

728x90
반응형