1) SQL select 문

2019. 4. 15. 17:14빅데이터 머신러닝 전문가 양성과정/1.SQL

1. SQL SELECT 문

■ 기본 select 문

SELECT 검색하고 싶은 컬럼 명
        FROM 테이블 명;

예제 :

select ename, sal
        from emp;

문제1. 우리반 테이블에서 이름, 나이를 출력하시오.

select ename, age 
    from emp9;

문제2. 우리반 테이블에서 이름, 전공, 통신사를 출력하시오.

select ename, major, telecom 
    from emp9;

문제3. 우리반 테이블에서 이름과 주소를 출력하시오.

select ename, address
    from emp9;

projection column 선택 / select row 선택

■ DESCRIBE/DESC

TABLE을 이루고 있는 열에 대한 검색

describe dept;
desc dept;

문제4. emp 테이블에 컬럼들이 무엇이 있는지 조회하시오.

describe emp; 
desc emp;

문제5. 사원이름, 직업과 부서번호를 출력하시오

select ename, job, deptno
    from emp;

■ 모든 열 선택

Asterist * : 모든 컬럼

문제 6. EMP테이블의 모든 컬럼들과 모든 데이터를 다 검색하시오

select *
    from emp;

□ SQL PLUS 명령어

sqlplus 유저명/패스워드

sqlplus scott/tiger

sql plus는 오라클에서 만든 소프트웨어 이름이다.

Set / Show 명령

EMP 테이블의 행과 열이 많아서 한번에 잘 출력하기 위해

set pages 400
set lines 300

column 명령어

column 열 이름 format 형식
column major format a10

■ 특정 열 선택

문제7. 우리반 테이블에서 이름과 전공과 이메일을 출력하시오

select ename, major, email
    from emp9;

문제8. 이름, 통신사, 주소를 출력하시오

select ename, telecom, address
    from emp9;
  • SQL 작성시 가이드 라인

    1. SQL 문은 대소문자를 구분하지 않습니다.

    2. SQL 은 한 줄 또는 여러줄로 입력할 수 있다.

      select ename, telecom, address from emp9;

      권장 SQL 줄 바꿈과 들여쓰기

      select ename, telecom, address

       from emp9;
    3. 키워드나 약어로 표기하거나 여러 줄에 걸쳐 입력할 수 없습니다.

    4. 절은 대개 별도의 줄에 입력합니다.

      select
      from
      where
      group by
      having

5.가독성을 높이기 위해 들여쓰기를 사용한다.

select ename, sal, job
	from empwhere deptno = 10;

6.SQL은 반드시 세미콜론(;) 으로 종료를 해야한다.

  • 산술식

    문제 9.
    이름, 월급, 월급에 300을 더한 값을 출력하시오.

      select ename, sal, sal+300
          from emp;

    예.

      select 3000 + 2 * 4
          from dual;

    문제10. 위의 SQL이 + 부터 시행되게 하시오

      select (3000 + 2) * 4
      from dual;
  • ■ null 값의 정의

    문제11. 커미션이 할당된 사람들의 직업이 무엇인지 확인하시오.

결론 : 직업이 salesman인 경우만 comm 할당되었다.

문제 12. 이름, 월급, 커미션, 월급 + 커미션을 출력하시오.

    select ename, sal, comm, sal+comm
        from emp;

※ 알수 없는 값을 더 할 수 없다.

문제 13. 위의 결과에서 커미션이 null로 출력되는 사원들은 null이 아니라 
              숫자 0으로 출력되게 하시오.

    nvl(column이름, null 값을 대체할 값)

    select ename, comm, nvl(comm,0)
    from emp;

문제14. 이름, 월급, 커미션, 월급+커미션을 출력하는데 
              월급 + 커미션에 null이 출력되지 않게 하시오.

    select ename, sal, comm, sal+nvl(comm,0)
        from emp;
  • ■ 컬럼 별칭(alias)

    예.

      select ename as 이름, sal + 300 as 월급
          from emp;

    ※ 컬럼별칭(alias)

    1. 열 머리글의 이름을 변경한다.
    2. 계산식에 유용하다.
    3. as는 생략 가능하다.
    4. 컬럼별칭이 공백이나 특수문자를 포함하려면 양쪽에 더블쿼테이션마크(")를 사용해야 한다.
    5. 컬럼별칭이 대소문자를 구분하고자 하면 양쪽에 더블쿼테이션 마크를 사용해야한다.

    *이경우를 제외하고 오라클에서는 싱글쿼테이션마크를 사용한다.

    예.

      select ename as "Employee name", (sal + 300)*12 as "Y_salary"
          from emp;

    문제 15. 우리반 테이블에서 ename, major, age를 출력하는데 컬럼명이 한글로 이름, 전공, 나이로 출력되게 하시오.

      select ename as 이름, major as 전공, age as 나이
          from emp9;

    ※ 컬럼별칭을 사용한 이후 별칭의 이름을 사용해야 한다.

      column 이름 format a10
      column 전공 format a15
      column 나이 format 999

■연결 연산자 ( || )

"열이나 문자열을 다른 열에 연결할 때 사용하는 키워드"

예.

select ename || sal 
    from emp;

예.

select ename || ' 의 월급은 ' || sal || ' 이다.'
    from emp;

문제 17. 우리반 테이블을 가지고 아래와 같이 결과가 출력되게 하시오

example 백정아 학생의 전공은 수학과 입니다.

select ename || ' 학생의 전공은 ' || major || '과 입니다.' 
    from emp9;

■ 대체 인용(q) 연산자

"문자열 안에
싱글 쿼테이션 마크를 넣어서 출력하고자 할때는 대체 인용 연산자를 사용한다"

q'[ 싱글 쿼테이션 마크가 들어가는 문자열 ]'

예제. 아래와 같이 결과를 출력하려면 어떻게 SQL을 작성해야 하는가?

SCOTT's deptno : 10

Select ename|| q'[ 's deptno : ]' || deptno
    from emp;

■ 중복행을 제거하는 distinct

문제 18. 우리반의 나이를 중복제거해서 출력하시오.

select distinct age
    from emp9;

■ describe 명령어

"테이블의 구조를 표시하는 명령어이다."

예. emp테이블의 구조를 확신하시오.

describe emp;
desc emp;