0) 테이블스페이스(TABLESPACE)
오라클은 데이터를 관리하는 시스템으로 데이터를 어딘가에 저장해 놓고 사용해야 하는데, 데이터 저장 단위 중 가장 상위 개념이 바로 테이블스페이스이다.
데이터 저장 단위는 물리적, 논리적으로 나눌 수 있고 물리적 단위는 파일이며, 논리적 단위는 크기 순으로 '데이터 블록 -> 익스텐트 -> 세그먼트 -> 테이블 스페이스'이다. 블록이 여러개 모여 익스텐트를, 여러 개의 익스텐트가 모여 세그먼트를 구성하는 식이다.
저장 단위는 4개이지만, 실제로 SQL을 이용해서 데이터를 조작하는 대상은 테이블이다. 테이블들을 담을 커다란 공간이 바로 테이블스페이스이다.
- 테이블스페이스 생성하는 방법
CREATE TABLESPACE myts DATAFILE 'C:\app\chongs\oradata\myoracle\mytx.dbf' size 100M AUTOEXTEND ON NEXT 5M; |
해석하면 테이블스페이스는 'myts'라는 이름으로 100MB 크기로 생성할 텐데, 논리적 개념이 테이블스페이스도 물리적으로는 파일로 존재하므로 실제 저장될 파일 이름과 위치가 필요하다. 여기서는 오라클이 설치된 C:\app~ 폴더에 myts.dbf라는 이름으로 생성한 것이다. 그리고 데이터가 늘어나 테이블스페이스가 꽉 찰 것을 대비해 '5MB'씩 자동 증가 옵션도 추가하였다.
1) 사용자 생성
seulgi 라는 사용자 생성하고 비밀번호는 choi로 하겠다.
=> create user seulgi identified by choi
or
CREATE USER ora_user IDENTIFIED BY hong DEFAULT TABLESPACE MYTS TEMPORARY TABLESPACE TEMP; |
여기서 TEMP는 임시 테이블스페이스이다.
2) 롤(역할) 부여하기
사용자를 생성한 뒤에 사용자에게 역할을 부여해야 한다. 현 시점에서 막 생성된 사용자인 'seulgi'는 데이터베이스에 접속할 수 조차 없어서 ‘connect’라는 롤을 부여받아야 오라클 데이터베이스에 접속할 수 있다. ‘dba’라는 롤을 부여해보자. ‘dba’의 롤을 부여 받으면 웬만한 기능은 모두 사용할 수 있다.
=> grant dba to seulgi
3) 사용자 계정으로 DB에 접속하기, 사용자 목록보기
=> connect seulgi/choi; -- 접속
=> select user from dual; -- 사용자 목록보기
* SQL이란(Structured Query Language)?
SQL을 단어 그대로 풀이하면, 구조화된 질의 언어로 DBMS상에서 데이터를 읽고 쓰고 삭제하는 등 데이터를 편리하게 관리하기 위한 일종의 프로그램 언어이다.
조금 더 깊게 설명하면 SQL은 집합적 언어이다. 우리가 흔히 알고있는 절차적 언어는 프로그래밍 순서대로 로직이 처리되는 것인데 집합적 언어는 데이터를 특정 집합 단위로 분류해 이 단위별로 한 번에 처리하는 언어이다.
SQL은 크게 DDL과 DML로 나눌 수 있는데 DDL은 데이터 정의어(Data Defintion Language)로 데이터베이스 객체를 관리하는 언어고, DML은 데이터 조작어(Data Manipulation Language)로 데이터 삽입, 조회, 삭제, 갱신 등 실제로 데이터를 조작하는 언어이다.
* DDL
DDL은 데이터베이스 객체를 생성, 삭제, 변경하는 언어로 대략 4가지 정도로 구분할 수 있다.
1) CREATE: 테이블이나 인덱스, 뷰 등 데이터베이스 객체를 생성
2) DROP: 생성된 데이터베이스 객체를 영구히 삭제
3) ALTER: 이미 생성된 데이터베이스 객체를 수정
4) TRUNCATE: 테이블이나 클러스터의 데이터를 통쨰로 삭제
* DML
DML은 실제 데이터를 조작하는 언어로 6가지 정도로 나눌 수 있다.
1) SELECT: 테이블이나 뷰에 있는 데이터를 조회
2) INSERT: 데이터를 신규로 생성
3) UPDATE: 이미 생성된 데이터를 수정
4) DELETE: 데이터를 삭제
5) COMMIT: 트랜잭션 처리 변경된 데이터를 최종 적용
6) ROLLBACK: 트랜잭션 처리 변경된 데이터를 적용하지 않고 이전으로 되돌림
(간단하게 생각하면 우리가 주로 사용할 것이 DML인데 간단히 몇 줄 부터 몇 십줄, 혹은 몇 천줄 까지 작성할 SQL문은 거의 대부분 이 6가지에 속한다.)
* DCL
DDL, DML 외에도 데이터 제어 언어라고 하는 DCL(Data Control Language)이 있는데, 사용자에게 특정 권한을 주는 grant와 회수하는 revoke문이 있다.
* 데이터베이스 객체의 종류
데이터베이스 객체란 데이터베이스 내에 존재하는 논리적인 저장 구조를 말한다.
데이터베이스 객체 | 설명 |
테이블 | 데이터를 담고 있는 객체 |
뷰 | 하나 이상의 테이블을 연결해 마치 테이블인 것처럼 사용하는 객체 |
인덱스 | 테이블에 있는 데이터를 빠르게 찾기 위한 객체 |
시노님 | 데이터베이스 객체에 대한 별칭을 부여한 객체 |
시퀀스 | 일련번호 채번을 할 때 사용되는 객체 |
함수 | 특정 연산을 하고 값을 반환하는 객체 |
프로시저 | 함수와 비슷하지만 값을 반환하지는 않는 객체 |
패키지 | 용도에 맞게 함수나 프로시저를 하나로 묶어 놓은 객체 |
오라클 SQL과 PL/SQL을 다루는 기술책을 읽고 정리하기
'DATABASE > DB study' 카테고리의 다른 글
oracle Encrypt(DigestSHA256) - 1 (0) | 2019.02.21 |
---|---|
plug-in (0) | 2019.02.20 |
sql developer 접속할 때 생기는 에러 (0) | 2019.02.07 |
oracle procedure 사용 방법 (0) | 2019.01.28 |
PL/SQL 구성, 요소, 제어문, 사용자 정의 함수 작성 방법 (0) | 2019.01.28 |
댓글