모든 설명은 주석으로 확인할 수 있어요.
하나씩 따라해 보세요. ^^
lan이라는 테이블에
uname, kor, eng, mat, sum, avg, sno, wdate, addr 칼럼에
아래와 같은 값이 들어있다고 가정합시다앙
사랑해 90 85 95 270 90 1 20/09/15 Seoul
무궁화 40 50 20 110 37 2 20/09/15 Seoul
진달래 90 50 90 230 77 3 20/09/15 Jeju
개나리 20 50 20 90 30 4 20/09/15 Jeju
봉선화 90 90 90 270 90 5 20/09/15 Seoul
나팔꽃 50 50 90 190 63 6 20/09/15 Suwon
선인장 70 50 20 140 47 7 20/09/15 Seoul
소나무 90 60 90 240 80 8 20/09/15 Busan
참나무 20 20 20 60 20 9 20/09/15 Jeju
홍길동 90 90 90 270 90 10 20/09/15 Suwon
무궁화 80 80 90 250 83 11 20/09/15 Suwon
-----------------------------------------------------------------------
-- 오라클 함수!!!
-----------------------------------------------------------------------
-- nvl() 함수 - null 값을 다른 값으로 바꿈
-- nvl(a, b) - a가 null일 때 b를 출력
-- 활용) 행을 추가하면서 nvl(), max()함수를 이용해서 sno 일련번호를 뒤어어 붙여보기
insert into lan(sno, uname, kor, eng, mat, addr)
values((select nvl(max(sno), 0) + 1 from lan), '사랑해', 90, 90, 90, 'Seoul');
--------------------------------------------------------------------
-- ASCII 문자 함수
select chr(65) from dual; -- dual은 가상의 임시 테이블, 테이블 생성 없이 결과를 출력해보고 싶을 때 사용
select chr(97) from dual;
--------------------------------------------------------------------
-- || 결합 연산자
select uname || '의 평균은 ' || aver || '입니다'
from lan;
---------------------------------------------------------------------
-- concat 문자열을 붙이기, ||와 유사
select concat('로미오와 ', '줄리엣') from dual;
select concat(uname, '의 평균은'), aver from lan;
---------------------------------------------------------------------
-- 날짜 관련 함수
-- sysdate - 시스템 날짜 리턴 함수, 괄호가 ㅇ벗음
select sysdate from dual;
select sysdate+100 from dual; -- date에 연산
select sysdate-366 from dual; -- 366을 빼야 오늘 날짜가 나오는 거 보니 올해는 윤년이구만!
-- 두 날짜 사이의 개월 수 계산 함수
select months_between('2020-09-01', '2020-10-01') from dual;
select months_between('2020-10-01', '2020-09-01') from dual;
select months_between('2020-03-01', '2020-02-01') from dual; -- 2월 28인 것도 한달 차이로 인식
-- to_date('날짜문자열')_ - 문자열을 날짜형으로 변환
select to_date('2020-10-05') from dual;
select to_date('20201005') from dual;
select to_date('2020 10 05') from dual;
select to_date('2020 / 10 / 05') from dual;
select to_date('2020-03-01') - to_date('2020-02-01') from dual; -- 일수로 계산
------------------------------------------------------------------
-- row 관련 함수
-- rownum - 행 번호
-- rowid - 행 주소값
select uname, addr, rownum, rowid
from lan;
---------------------------------------------------------------------
-- to_number('숫자 형태의 문자열') - 정수 > 숫자 변환 함수
select to_number('100') + 1 from dual;
select '100' + 1 from dual; -- 에러 없음 > 오라클은 이 경우 to_number가 자동으로 붙음
----------------------------------------------------------------------
-- 올림, 반올림, 버림 함수
select avg(kor),
round(avg(kor)), -- 소수점 반올림
ceil(avg(kor)), -- 소수점 올림
trunc(avg(kor)) -- 소수점 버림
from lan;
----------------------------------------------------------------------
-- substr() - 인덱스가 1부터 시작
select substr('8712345', 7, 1) from dual; -- '8912304'의 7번째 글자부터 1개 출력
select substr('8712345', 6, 2) from dual; -- '8912304'의 6번째 글자부터 2개 출력
select substr('8712345', 5) from dual; -- '8912304'의 5번째 글자부터 끝까지 출력
select substr('8712345', 5, 100) from dual; -- '8912304'의 5번째 글자부터 100개까지 출력
-- lpad() - 출력서식 함수
select uname, lpad(kor, 5, '*') -- kor의 값을 5 자리수로 하되 빈칸은 *로 채움
from lan;
commit;
영어를 어느 정도 잘하면 프로그래밍에도 많은 도움이 되더군요.
영어를 배울 수밖에 없다면... ^_^
댓글