본문 바로가기
카테고리 없음

오라클 DB | select 문 총 정리

by easy투자 2022. 4. 13.

[1] 사용자가 관리하는 테이블 목록


SQL>select * from tab;

 

※ select는 선발하다 선택하다 라는 의미의 영단어입니다. 

 

 

select

 

 

[2] 특정 테이블의 data 표시

 

SQL>select * from dept;

 

 

select * from dept

 

 

 

[3] 모든 컬럼(필드명)이 아닌, 필요한 컬럼(필드명) 내용만 출력

 

SQL>select dname, loc from dept;

select dname, loc from dept

 

 

[4] 각각의 필드명에 별칭을 주어서 출력

 

SQL>select deptno as "부서번호" from dept;

 

 

 

select deptno as "부서번호" from dept

 

 

[5] 사원들의 직업명(job)을 중복 제거 후 출력

 

SQL>select distinct job from emp;

 

select distinct job from emp

 

 

[6] 급여가 3000 이상인 사원 정보 출력

 

SQL>select empno, ename, sal from emp where sal>= 3000;

 

 

select empno, ename, sal from emp where sal>= 3000

 

[7] 이름이 scott인 사원의 정보 출력

 

    단, data의 경우는 대/소문자를 구별
SQL>select empno, ename, sal from emp where ename = 'scott'; (x)
SQL>select empno, ename, sal from emp where ename = 'SCOTT';

 

 

select

 

[8]1985년도 이후로 입사한 사원 정보

 

SQL>select empno, ename, hiredate from emp where hiredate >= '85/01/01';

select
select

 

[0] 부서번호가 10이고, 그리고 직업이 'MANAGER'인 사원 출력

 

SQL>select empno, ename, deptno, job from emp where deptno = 10 and job = 'MANAGER';

 

select

 

 

 

[10]부서번호가 10이거나 또는 직업이 'MANAGER'인 사원 출력

 

SQL>select empno, ename, deptno, job from emp where deptno 10 or job = 'MANAGER';

 

 

 

[11] 부서번호가 10이 아닌 사원

 

SQL>select deptno, ename from emp where not (deptno = 10);
SQL>select deptno, ename from emp where deptno <> 10;
not = <>

 

select

 

[12] 급여가 1000~3000사이인 사원을 출력

 

SQL>select ename, sal from emp where sal >=1000 and sal <= 3000;

 

select

 

 

SQL>select ename, sal from emp where sal between 1000 and 3000;

 

select

 

 

[13] 급여가 1300 또는 1500 또는 1600인 사원 정보 출력


SQL>select ename, sal
    from emp
    where sal = 1300 or sal = 1500 or sal = 1600;

 

 

select

 

SQL>select ename, sal
    from emp
    where sal in (1300, 1500, 1600);

 

 

select

 

 

 

 

[14] 이름이 'k'로 시작하는 사원 출력
SQL>select empno, ename
    from emp
    where ename like 'K%';

 

 

 

[15] 이름이 'k'로 끝나는 사원 출력   
SQL>select empno, ename
    from emp
    where ename like '%K';

 

select

 

 

[16] 이름이 'K'가 포함된 사원 출력
SQL>select empno, ename
    from emp
    where ename like '%K%';

% 어떤 문자라도 상관 없다. 아예 문자가 없다라는 의미도 포함되어 있다.

 

 

select

 

검색시 문자열의 대소문자를 구별하는 것 같다. 소문자 k를 조건에 넣으니 아무 것도 검색되지 않는다.  

 

 

select

 

 

 

[17] 2번째에 'A'가 들어가는 사원 출력
SQL>select empno, ename
    from emp
    where ename like '_A%';

 

select

 

 

[18] 커미션을 받지않는 사원
SQL>select empno, ename, comm
    from emp
    where comm is null;

 

select

is 대신 = 을 넣으면 선택이 되지 않는다. 왜일까? 
알 수 없는 값이라서 연산 기능이 지원되지 않는듯 하다. 

 

 

select

 

 

 

[19] 커미션을 받은 사원
SQL>select empno, ename, comm
    from emp
    where comm is not null;

 

select

 

 

 

[20] 사번의 정렬(오름차순)으로 출력
SQl>select empno, ename, comm
    from emp
    order by empno (asc);
오름차순이 디폴트 , asc 생략 가능

ascending 미국·영국 [əséndiŋ] 영국식 다른 뜻(1건) 예문보기 오르는, 상승적인; 위를 향한

 

select

 

 

[21] 사번의 정렬(내림차순)으로 출력
SQL>select empno, ename
    from emp
    order by empno desc;

descending 미국·영국 [diséndiŋ] 영국식 다른 뜻(1건) 예문보기 내려가는, 강하하는, 하향의(opp. ascending); 내림차순의

 

select

 

[22] 사원의 연봉 계산 출력
SQL>select ename, sal, sal*12
    from emp;

 

 

select

 

 

SQL>select ename, sal, sal*12 "연봉"
    from emp;

 

 

select

 

 

 

 

[23] 커미션을 포함한 최종 연봉 출력
SQL>select ename, sal, comm, sal*12+comm "연봉"
    from emp;

null을 + 연산으로 더하면 연산을 수행하지 못해서 빈칸으로 결과가 출력된다.

 

 

 

select

 

 

[24][23]번의 오류 해결법
SQL>select ename, sal, comm, nvl(comm, 0), sal*12 + nvl(comm, 0) "연봉"
    from emp;


nvl(comm, 0) 컴이라는 필드명에 null값이 있으면 0으로 채워주겠다. 테이블 값 자체를 변경하는 것은 아니다.
내가 원하는 데이터도 끄집어 내어올 수 있고 정렬의 기능, 조건식 안에 연산식을 넣어서 가공 가능
함수도 제공하고 있다.

 

 

select

 

NVL(Null값인 칼럼, 대체하고 싶은 값)
nvl => Null Value

 

 

댓글