[SQL] SQL 함수
함수의 용어
-
인자(argument) : 입력되는 실제값, 함수를 호출 할 때 함수로 전달되는 값, 인자를 이용하여 작업을 수행하고 결과를 반환한다.
-
파라미터(parameter) : 함수를 정의 할 때 함수 내에서 사용할 값을 받아들이기 위해 사용되는 변수를 말한다.// 함수를 호출할 때 입력되는 변수이다. // 이제부터 매개변수가 아닌 파라미터라고 한다. : 외부와 연결하게 되면 파라미터라고 한다. (내부에서 연결은 매개변수였어) // 함수가 호출 될 때 파라미터는 인자로 전달 된다.
자바에서는 “=” 는 할당이다.
데이터베이스는 “=” 같다 // 앞을 기준으로 같다
함수의 입력 행수에 따라 단일행 함수와 다중행 함수로 구분하고 있다.
단일행 함수
-
단일행 함수 (한개의 행만 사용하겠다.) select…from, select…from…where, order 가 사용될 수 있으며, 중첩될 수 있다.
-
결과물을 한 개의 행만 출력한다.
select * from table명;
= 해당하는 테이블의 모든 row와 column를 검색한다.
select column명1, column명2, column3명, .... from table명;
= 해당하는 테이블의 칼럼 1~3까지 검색한다.
select column명1, column명2 from table명 where 조건내용;
= 해당하는 테이블의 칼럼 1~2까지의 내용을 찾아서 조건에 맞는 값만 검색한다.
단일행 함수의 종류
단일행 함수에는 다음과 같은 종류가 있다.
- 문자 함수
- 숫자 함수
- 날짜 함수
- 변환 함수
문자함수
-- 사원 테이블에서 FORD라는 사원명을 소문자로 변환한다 라고 써있어야함
select empno, ename, hiredate from emp
where lower (ename) = 'ford'; -- where 절로 조건을 확인한다.(ename을 소문자로 바꿔서 검색)
-- 사원테이블에서 영문인 ford 사원 명을 대문자로 변환하여 조회한다.
select empno, ename, hiredate from emp
where ename = upper ('ford'); -- where 절로 조건을 확인한다.(ford를 대문자로 바꿔서 검색)
-- dept테이블에서 deptno가 10인 값을 찾는다. 칼럼 3가지에서 검색하낟.
--부서 테이블에서 부서 번호가 10인 부서 번호와 부서명을 연결하여 문자열로 반환한다.
select deptno, dname, concat(deptno, dname) from dept
where deptno = 10;
-- 부서 테이블에서 부서 번호기 10인 어카운팅 부서명의 G 문자 위치를 숫자로 표기한다.
select deptno, dname, instr(dname, 'G')from dept
where deptno = 10;
-- 부서 테이블에서 부서번호가 10인 부서명의 길이를 15로 설정하고 나머지 왼족 공간을 * 문자열로 채우고 표현한다.
select deptno, dname, lpad(dname, 15, '*') from dept
where deptno = 10;
-- 부서 테이블에서 부서 번호가 10인 부서명의 양 끝 공백 문자를 제거하고 반환한다.
-- 공백을 제거한 이유는 trim에 ''사이에 공백을 넣어줬기 때문이다.(A를 넣으면 A가 제거됨)
select deptno, dname, trim(both' 'from dname)from dept
where deptno = 10;
숫자함수
-- 모든 계정이 액세스 할 수 있는 가상 테이블인 dual 테이블에서 45.926을 소수점 두 자리에서 반올림한다.
select ROUND(45.926,2)from dual;
--dual 테이블에서 45.926을 소수점 두자리에서 절삭한다.
select trunc(45.926,2)from dual;
--dual 테이블에서 1600을 300으로 나눈 나머지를 반환하낟.
select mod(1600, 300)from dual;
날짜함수
-- dual테이블에서 시스템의 현재 날짜를 조회한다.
select sysdate from dual;
-- 사원테이블에서 부서 번호가 10인 사원의 입사 날짜와 현재 날짜로 근무 개월 수를 조회한다.
select ename, hiredate, sysdate, months_between(sysdate, hiredate) from emp
where deptno = 10;
-- 사원테이블에서 사원 번호가 10인 사원의 입사 날짜와 현재날짜로 근무 개월 수를 반올림하여 조회한다.
select ename, hiredate, sysdate,round(months_between(sysdate, hiredate)) 월수 from emp
where deptno = 10;
--사원테이블에서 부서 번호가 10인 사원의 입사 날짜로부터 5개월이 지난 후의 날짜를 조회한다.
select ename, hiredate, add_months(hiredate, 5) from emp
where deptno = 10;
--사원테이블에서 부서 번호가 10인 사원의 입사일로부터 돌아오는 금요일을 조회한다.
select ename, hiredate, next_day(hiredate, '금요일') as 월 from emp
where deptno = 10;
댓글남기기