DataBase

[MariaDB] and(&&) 연산자 / or(||) 연산자 / between(and 대체) / in(or 대체) / is null / 특정 단어로 시작하는, 끝나는 데이터 출력 / like "%" / like "_" / 중복제거 distinct / limit 출력 제한 / 지정구간 출력 / order..

bkuk 2022. 10. 14. 16:49

 

 

직책(job)이 "clerk" 이거나 "salesman"인 사원에 대한 사원번호(empno), 사원이름(ename), 직책(job), 부서번호(deptno)을 출력

select empno, ename, job, deptno
    -> from emp
    -> where job = "clerk" or job="salesman";

 


직책(job)이 "clerk" 이거나 "salesman"인 사원부서번호(deptno)가 10번이 아닌 사원에 대한 사원번호, 사원이름, 직책, 부서번호을 출력

select empno, ename, job, deptno
    -> from emp
    -> where (job = "clerk" or job = "salesman") and deptno != 10;

 

급여(sal)가 1000원 이상 2000원 이하인 사원에 대한 사원번호, 사원이름, 급여를 출력 1

select empno, ename, sal
    -> from emp
    -> where sal >= 1000 and sal <=2000;

 

급여(sal)가 1000원 이상 2000원 이하인 사원에 대한 사원번호, 사원이름, 급여를 출력 2, between 함수 사용

select empno, ename, sal
    -> from emp
    -> where sal between 1000 and 2000;

(단, 'between 2000 and 1000' 와 같이 사용한다면 출력이 안됨. 항상 작은 수 부터 명시해줄 것)

 

 

직책(job)이 "clerk" 이거나 "salesman" 이거나 "manager"인 사원사원번호, 사원이름, 직책 출력 1

select empno, ename, job
    -> from emp
    -> where job = "clerk" or job = "salesan" or job = "manager";

 

직책(job)이 "clerk" 이거나 "salesman" 이거나 "manager"인 사원사원번호, 사원이름, 직책 출력 2, in 함수 사용

select empno, ename, job
    -> from emp
    -> where job in ( "clerk", "salesman", "manager");

 

 

comm(commission)이 null 값(미정) 설정된 사원사원번호, 사원이름, 수당 출력, is null 사용

select empno, ename, comm
    -> from emp
    -> where comm is null;

 

 

아래 몇개의 예제는 Java에서 String 클래스의 StartWith, endWith를 생각하시면 됩니다.

 

사원이름(ename)이 's'로 시작하는 사원에 대한 사원번호, 사원이름을 출력

select empno, ename
    -> from emp
    -> where ename like 's%';

 

 

사원이름(ename)이 's'로 끝나는 사원에 대한 사원번호, 사원이름을 출력

select empno, ename
    -> from emp
    -> where ename like '%s';

 

 

사원이름에 "CO"가 들어가 있는 사원에 대한 사원번호, 사원이름을 출력

select empno, ename
    -> from emp
    -> where ename like "%CO%";

 

 

2011년 입사한 사원에 대한 사원번호 , 사원이름, 급여, 입사일 출력, like 사용

select empno, ename, sal, hiredate
    -> from emp
    -> where hiredate like "2011%";

 

 

2월 달에 입사한 사원에 대한 사원번호 , 사원이름, 급여, 입사일 출력

select empno, ename, sal, hiredate
    -> from emp
    -> where hiredate like "%02%";

위 결과를 통해 알 수 있듯이 2월달 뿐만 아니라 2일에 입사한 사원까지 같이 출력된 것을 확인할 수 있습니다.

따라서 아래와 같이 코드를 수정해야합니다.

select empno, ename, sal, hiredate
    -> from emp
    -> where hiredate like "%-02-%";

 

 

사원이름이 4자인 사원에 대한 사원번호 , 사원이름, 급여, 입사일 출력

select empno, ename, sal, hiredate
    -> from emp
    -> where ename like "____";

 

(위 예제 부정) 사원이름이 4자가 아닌 사원에 대한 사원번호 , 사원이름, 급여, 입사일 출력

select empno, ename, sal, hiredate
    -> from emp
    -> where not ename like "____";

 


job 데이터 리스트를 중복없이 출력

select distinct job from emp;

 

deptno(부서번호) 데이터 리스트를 중복없이 출력

select distinct deptno from emp;

 

job, deptno 데이터 리스트를 중복없이 출력

select distinct job, deptno from emp;

 

emp 테이블의 데이터 전체를 선택 후 출력

select * from emp;

 

지정한 숫자만큼의 데이터 출력 (출력제한)

select * from emp limit 3;

 

지정한 구간만큼의 데이터 출력(출력 구간 제한)

*단, Java에서 사용하는 Index와 동일한 구조, 0번부터 시작

select * from emp limit 1, 3;


order dy 출력 정렬(오름차순 asc, 내림차순 desc)

* 차순을 명시를 하지않을 경우 기본 값은 오름차순(asc)

 

부서 번호를 기준으로 오름차순으로 정렬해서 사원번호, 사원이름,  부서번호, 직책을 출력

select empno, ename, deptno, job
    -> from emp
    -> order by deptno;

 

사원이름을 기준으로 오름차순으로 정렬해서 사원번호, 사원이름 출력

select empno, ename
    -> from emp
    -> order by ename;

 

사원이름을 기준으로 내림차순으로 정렬해서 사원번호, 사원이름 출력

select empno, ename
    -> from emp
    -> order by ename desc;

 

부서 번호를 먼저 정렬한 후 직책으로 다시 정렬해서 사원번호, 사원이름,  부서번호, 직책 출력

정렬한 부서 번호는 유지한 채, job의 알파벳 순서대로 한번 더 정렬한다는 개념

select empno, ename, deptno, job
    -> from emp
    -> order by deptno, job;

 


컬럼명을 넣지않고 컬럼의 순서(숫자) 표기해서 정렬

select empno, ename, deptno, job
    -> from emp
    -> order by 3;

 

새이름을 통해서 정렬이 가능하다.

select empno, ename, deptno no, jo
    -> from emp
    -> order by no;