프로그래밍/SQL

SQL-19) DDL 문장 , table , view : SQL, SQLD

LeeSeunghyuk 2020. 12. 8. 10:19
반응형

안녕하세요 이승혁 입니다.

이번 시간에는 데이터베이스의 오브젝트를 생성하고 관리하는 명령어에 대해 알아보도록 하겠습니다.

 

※ DDL 문장 , Data Definition Language

 

     데이터베이스 오브젝트(object)를 생성, 변경, 삭제하는 명령어 입니다.

 

     ㆍ 데이터 베이스 오브젝트의 종류 

            1. table      : 데이터를 저장하는 기본 저장 단위입니다.

            2. view       : 복잡한 쿼리를 간단하게 해주는 DB 오브젝트

            3. index      : 검색 속도를 향상해주는 DB 오브젝트

            4. sequence : unique한 번호를 생성하는 DB 오브젝트

            5. synonym  : 테이블에 대해 다른 이름을 부여하는 DB 오브젝트

 

    위의 데이터베이스 오브젝트들을 생성, 변경, 관리하는 명령어 입니다.

 

 

    ㆍ DDL 문의 종류

            1. create    : DB 오브젝트를 생성

            2. alter       : DB 오브젝트를 변경

            3. drop      : DB 오브젝트를 삭제

            4. truncate : DB 오브젝트의 데이터를 삭제

            5. rename  : DB오브젝트의 이름 변경

 


1. Table

 

     데이터를 구성하는 기본 단위로 행(row)과 열(column)으로 구성됩니다.

 

테이블을 생성하기 위해 다음과 같은 명령어를 사용해 봅니다.

 

create table emp20(empno number(10),
		   ename varchar2(10),
		   sal number(10),
		   hiredate date);

create table emp20 : emp20 이라는 테이블을 생성한다.

( ) : 괄호 안에는 칼럼명 , 데이터유형(데이터크기)로 해당 칼럼의 데이터 유형을 정해줍니다.

 

※ 데이터 타입의 유형

  char          : 고정길이 문자 데이터 유형, 최대길이 2000

  varchar2    : 가변길이 문자 데이터 유형, 최대길이 4000

  long         : 가변길이 문자 데이터 유형, 최대 2GB까지 허용

  clob         : 문자 데이터 유형, 최대 4GB까지 허용

  blob         : 바이너리 데이터 유형, 최대 4GH까지 허용

  number     : 숫자 데이터 유형, 최대 38까지 허용

  date         : 날짜 데이터 유형, 기원전 4712년 1월 1일 ~ 기원후 9999년 12월 31일까지의 날짜를 허용

 

 

실습 1. 다음 데이터를 사용하기 위한 테이블을 생성하고 , 세계에서 근무시간이 많은 순서대로 보기

 

근로자당_연평균_실제_근로시간_OECD__20191021155649.xlsx
0.01MB

 

 

 

테이블 생성하기 

create table nation_work(nation varchar2(20),
                         y_2014 number(10),
                         y_2015 number(10),
                         y_2016 number(10),
                         y_2017 number(10),
                         y_2018 number(10));

 

데이터 임포트 하기

일치 기준을 위치로 변경하면 정상 임포트

 

데이터 타입 수정하기

 

     나라 이름의 데이터 타입을 varchar2(20)으로 지정했지만, 실제 데이터의 크기가 지정된 크기 20보다 커

     임포트가 되지 않았습니다.

 

     다음 포스팅처럼 변경을 마쳤습니다.

 

    https://lsh-story.tistory.com/34

 

SQL - 칼럼 데이터 타입 변경하기

테이블 생성 시 잘못 작성한 데이터 타입 , 혹은 사용 중 데이터 타입을 변경하기 위한 명령어는 다음과 같습니다. ALTER TABLE (테이블이름) MODIFY (변경칼럼이름) (변경데이터타입); alter table nation_wo

lsh-story.tistory.com

SQL 작성하기

 

    1. 나라별로 그룹핑할 수 있게, unpivot 하여 칼럼과 근무시간을 데이터로 변경

    2. 나라별 그룹핑 , 근무시간을 합쳐 총 근무시간을 계산

    3. 내림차순으로 순위를 부여

    4. 나라명, 총근무시간, 순위 확인

select nation, sum(근무시간) 총근무시간 , rank() over(order by sum(근무시간) desc) 순위
from(
select *
from nation_work
unpivot(근무시간 for(년도) in (y_2014,y_2015,y_2016,y_2017,y_2018)))
group by nation;

 


※ View 

 

     복잡한 SQL을 단순하게 만들기 위한 DB 오브젝트

     보안상 이유로 공개하면 안되는 데이터를 감출 때 사용하는 DB 오브젝트

 

     view를 생성하는 명령어는 다음과 같습니다.

 

   

create view emp2020
as
select empno,ename,sal,job
from emp;

emp 테이블에서 empno , ename, sal, job의 데이터로 구성된 view를 생성한 쿼리 입니다.

다른 정보(입사 날짜, 매니저 번호 등)는 보안상의 이유로 나타내고 싶지 않거나,

간단하게 데이터를 확인하기 위해 뷰를 사용합니다.

 

뷰의 데이터를 변경해도 테이블의 데이터가 변경됩니다.

테이블의 데이터를 변경해도 뷰의 데이터가 변경됩니다.

 

  ㆍ view의 종류

 

  단순 view  복합 view
table 개수 1개 2개 이상
group 함수  포함 x   포함
group by 포함 x  포함
DML 여부 가능 불가능 할 수 있다.

 

※ 단순 VIEW 생성 예제                           ※ 복합 VIEW 생성 예제

create view emp905                               create view emp906

as                                                       as

  select empno, ename, sal                         select job, sum(sal) 토탈

    from emp;                                            from emp

      group by job;

 

복합 VIEW 생성 시 함수, 그룹함수에 컬럼별칭 필수

-- 단순 VIEW 생성 예제                            복합 VIEW 생성 예제
create view emp905                               create view emp906
as                                               as
select empno, ename, sal                         select job, sum(sal) 토탈
from emp;                                        from emp
                                                 group by job;

-- 복합 VIEW 생성 시 함수, 그룹함수에 컬럼별칭 필수

 

 

 

이번 시간은 뷰와 테이블에 대해 알아보았습니다.

 

다음 포스팅에서는 검색 속도를 향상시키는 index에 대해 다루어보도록 하겠습니다.

감사합니다.

반응형