안녕하세요 이승혁 입니다.
이번 시간에는 데이터베이스의 오브젝트를 생성하고 관리하는 명령어에 대해 알아보도록 하겠습니다.
※ 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. 다음 데이터를 사용하기 위한 테이블을 생성하고 , 세계에서 근무시간이 많은 순서대로 보기
테이블 생성하기
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 작성하기
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에 대해 다루어보도록 하겠습니다.
감사합니다.
'프로그래밍 > SQL' 카테고리의 다른 글
SQL-20) Index : SQL 속도 향상, SQL index, SQL 인덱스 (0) | 2020.12.11 |
---|---|
SQL - 칼럼 데이터 타입 변경하기 (0) | 2020.12.08 |
SQL-18) TCL - commit, rollback, savepoint : SQL,SQLD,SQLD 자격증 (0) | 2020.11.10 |
SQL-17) DML - Insert, update, delete, merge : SQL, SQLD, SQLD 자격증, Oracle (0) | 2020.11.09 |
SQL-16) exist , with , 계층형 질의 : SQl, SQLD 자격증, ADsP, 함수 (0) | 2020.11.05 |
SQL-15)집합연산자 - UNION, UNION ALL, INTERSECT, MINUS : sqld, sqld 자격증 (0) | 2020.11.05 |
SQL-14 ) 서브쿼리(Sub Query) - 2 : SQL, SQLD, SQLD자격증, 서브 쿼리, 오라클 (0) | 2020.11.05 |
SQL-13) 서브 쿼리(Sub Query) : SQL문, SQLD, SQLD 자격증, DB , database (0) | 2020.10.30 |