if( 조건문, 참일때 값, 거짓일때 값 )
select if( 1=2, '참', '거짓' );
deptno(부서번호)가 20인 사원 중 급여가 2000을 기준으로 적은지 많은지에 대해서 출력
select ename, sal, if( sal < 2000, '적음', '많음') from emp where deptno = 30;
ifnull(필드명, '치환값')
select ifnull( null, '참');
ifnull(필드명, '치환값'), null 값을 다른 숫자 또는 문자로 치환
select comm, ifnull( comm, 0) from emp;
ifnull(필드명, '치환값'), null 값을 다른 숫자 또는 문자로 치환
급여*12와 수당을 합쳐서 연봉을 출력
select sal, comm, sal*12+comm, sal*12+ifnull( comm, 0) from emp;
CASE 문법
CASE
WHEN 조건
THEN '반환 값'
WHEN 조건
THEN '반환 값'
ELSE 'WHEN 조건에 해당 안되는 경우 반환 값'
END
1번이면 'one'을 출력, 2번이면 'two'를 출력, 그 외 'more' 출력
select case 1
-> when 1 then 'one'
-> when 2 then 'two'
-> else 'more'
-> end;
sql 파일에 저장 후 실행시키기
아래와 같이 sql 파일을 C:/mariadb/2 day/ 폴더 안의 저장
source C:/mariadb/2 day/ex01.sql;
위와 같이 한글 깨짐 현상이 발생했을 때는, 아래와 같이 인코딩 방식을 변경해주면 됩니다.
다른 이름으로 저장 → 인코딩(E) 방식을 기존 UTF-8에서 ANSI로 변경
count(컬럼명) 함수, 컬럼에 존재하는 데이터 갯수(행)를 가져오고 싶을 때
select count(empno) from emp;
14개가 맞는지 확인
select empno from emp;
count(컬럼명) 함수, 컬럼에 존재하는 데이터 갯수(행)를 가져오고 싶을 때
select count( sal ), count( comm ) from emp;
null 값을 제외하고 데이터 개수 출력
select count(comm), count(ifnull(comm,0)) from emp;
group by 컬럼명, 유형별로 갯수를 알고 싶을 때는 컬럼에 데이터를 그룹화
select count( * ) from emp group by deptno;
group by 컬럼명, 부서번호(deptno)를 그룹화 하여 최고 급여를 출력
select deptno, max(sal) from emp group by deptno;
group by 컬럼명, 직업을 그룹화하여 평균 연봉을 출력
select job, avg(sal) from emp group by job;
부서번호(deptno)로 정렬, 그다음 직업(job)을 기준으로 정렬 후 부서번호, 직업, 급여(sal) 출력
select deptno, job, sal
-> from emp
-> order by deptno, job;
부서번호(deptno)을 그룹화 후 직업(job)을 그룹화 한 후 detpno, job, 합산된 급여 출력
select deptno, job, sum(sal)
-> from emp
-> group by deptno, job;
부서번호를 그룹화 후 직업을 그룹화하여 급여가 2000이 이상인 사원의 부서번호, 직업, 합산된 급여를 출력
select deptno, job, sum(sal)
-> from emp
-> where sal >= 2000
-> group by deptno, job;
부서번호를 그룹화 후 직업을 그룹화하여 합사된 급여가가 2000이 이상인 사원의 부서번호, 직업, 합산된 급여를 출력
select deptno, job, sum(sal)
-> from emp
-> where sum(sal) >= 2000
-> group by deptno, job;
해결방법은, Having 함수를 사용.
select deptno, job, sum(sal)
-> from emp
-> group by deptno, job
-> having sum(sal) >= 2000;
댓글