- 오라클 [select 기본 구분, 주요 내장함수, 집계함수]
1. SELECT 기본구문
● scott User로 로그인
SQL> conn scott/tiger
● 접속되어있는 계정이 관리하는 Table목록
SQL> select * from tab;
● 테이블 구조
SQL> desc dept;
SQL> describe dept;
● 중복제거 출력
SQL> select distinct job from emp;
● 특정 날짜 이후의 데이터 출력
SQL> select * from hiredate >= '2015/01/01';
● not: 부서 번호가 10이 아닌 사원
SQL> select * from emp where deptno <> 10;
SQL> select * from emp where not(deptno = 10);
●between: 급여가 1000 ~ 3000 사이인 사원
SQL> select * from emp where sal >= 1000 and sal <= 3000;
SQL> select * from emp where sal between 1000 and 3000;
●이름이 'K'로 끝나는 사원
SQL> select * from emp where ename like '%K';
●이름에 'K'가 들어가는 사원
SQL> select * from emp where ename like '%K%';
●두번째 글자에'K'가 들어가는 사원
SQL> select * from emp where ename like '_K%';
●컬럼 값이 null 인 데이터, null 이 아닌 데이터
SQL> select a from emp where comm is null;
SQL> select a from emp where comm is not null;
2. 주요 내장함수
● 샘플 테이블
SQL> select * from dual;
● 임시 계산 결과 출력
SQL> select 200*30 < 오류
SQL> select 200*30 from dual;
● 반올림: round()
SQL> select round(12.34567, 3) from dual;
● 소문자: lower()
SQL> select lower('Java') as "소문자" from dual;
● 대문자: upper()
SQL> select upper('Java') as "대문자" from dual;
● 단어의 첫자만 대문자: Initcap()
SQL> select initcap('java') as "첫글자만" from dual;
● 문자열 연결: concat()
SQL> select concat('ja','va') from dual;
● 문자열 길이: length(), lengthb()
SQL> select length('JavaEx'),length('자바익스'),lengthb('자바익스프레스') from dual;
● 문자열의 추출: substr()
SQL> select substr('JavaEx', 1, 3) from dual;
● 인덱스 추출: instr()
SQL> select instr('JavaEx','Ex') from dual;
● 자리 채우기 : lpad()
SQL> select lpad('RedPlus', 10, '@') as "자리채우기" from dual;
SQL> select rpad('RedPlus', 10, '@') as "자리채우기" from dual;
● 공백(특정 문자)제거: trim()
SQL> select trim(' ' from ' red plus ') from dual;
● 절대값: abs()
SQL> select abs(-10) as "절대값" from dual;
● 소수점 자리 버리기(절삭): floor()
SQL> select floor(12.34) from dual;
● 원하는 위치까지 삭제: trunc()
SQL> select trunc(12.3456, 3) from dual;
● 나머지 : mod()
SQL> select mod(3,5) from dual;
● 현재날짜: sysdate
SQL> select sysdate from dual;
● 개월수 구하기 : months_between()
SQL> select ename, months_between(sysdate, hiredate)
from emp
where deptno = 10;
● 개월수 더하기: add_months()
SQL> select add_months(sysdate, 4) from dual;
● 다가올 요일에 해당하는 날짜 : next_day(sysdate, '일요일')
SQL> select next_day(sysdate, '일요일') from dual;
● 이번달/특정달의 마지막 일수: last_day()
SQL> select last_day(sysdate) from dual;
● 문자열 변환: to_char()
SQL> select to_char(sysdate, 'yyyy-mm-dd') from dual;
● 날짜형 변환: to_date()
SQL> select to_date('2008-01-01', 'yyyy/mm/dd') from dual;
● null값 처리: nvl()
SQL> select count(comm) from emp;
SQL> select nvl(comm,0) from emp;
● switch 문: decode
SQL> select distinct deptno from emp;
SQL> select ename, decode(deptno, 10, 'Accounting', 20, 'Reasearch', 30, 'Sales') from emp;
SQL> select ename, decode(deptno, 10, 'Accounting', 20, '기타') from emp;
● if~else문: case~when
SQL> select ename, deptno,
case
when deptno=10 then 'Account'
when deptno=20 then 'Research'
when deptno=30 then 'Sales'
end as dname
from emp;
3. 집계 함수
●합계
SQL> select sum(sal) from emp;
●카운트
SQL> select count(*) from emp;
●평균
SQL> select avg(sal) from emp;
●최대값
SQL> select max(sal) from emp;
●최소값
SQL> select min(sal) from emp;
----------------------------------------------------------------------------
**기본 조건은 where
group의 조건은 having
중복제거의 조건은 distinct
**테이블 복사
employees 테이블을 복사하여 emp라는 테이블을 생성
SQL> create table emp as select * from employees;