[Oracle #1] DataBase/DBMS/SQL의 정의 및 특징
Data : 어떤 자료 혹은 실제 값
정보가 되려면? 데이터를 기반으로 의미를 부여한 것.
ex) 에베레스트 산은 세계에서 가장 높은 산이다.
DataBase의 정의
한 조직에 필요한 정보를 여러 응용시스템에서 공용할 수 있도록 논리적으로 연관된 데이터를 모으고, 중복되는 데이터를 최소화하여 구조적으로 통합/저장해 놓은 것
1. 운영 데이터(Operational Data)
- 조직의 목적을 위해 사용되는 데이터
2. 공용 데이터(Shared Data)
- 공동으로 사용되는 데이터
3. 통합 데이터(Integrated Data)
-중복을 최소화하여 중복으로 인한 데이터 불일치 현상 제거
4. 저장 데이터(Stored Data)
- 컴퓨터 저장장치에 저장된 데이터
DataBase의 특징
1. 실시간 접근성(real time accessiblility)
-사용자가 데이터를 요청하면 실시간으로 결과를 서비스한다.
2. 계속적인 변화(continuous change)
- 데이터 값은 시간에 따라 항상 바뀐다.
3. 동시 공유(concurrent sharing)
-데이터 베이스는 서로 다른 업무 또는 여러 사용자에게 동시 공유된다.
4. 내용에 따른 참조(reference by content)
- 데이터베이스에 저장된 데이터는 데이터의 물리적 위치가 ㅋ아니라 데이터 값에 따라 참조된다.
DBMS(DataBase Management System)
데이터베이스에서 데이터를 추출, 조작, 정의, 제어 등을 할 수 있게 해주는 데이터 베이스 전용 관리 프로그램
ex) MySql, mssql,Oracle,Maria
DBMS의 기능
- 데이터 추출 : 사용자가 조회하는 데이터 혹은 응용 프로그램의 데이터를 추출
- 데이터 조작 : 데이터를 조작하는 소프트웨어가 요청하는 데이터의 삽입, 수정, 삭제, 작업을 지원
- 데이터 정의 : 데이터의 구조를 정의하고 데이터 구조에 대한 삭제 및 변경 기능을 수행
- 데이터 제어 : 데이터베이스 사용자를 생성하고 모니터링하며 접근을 제어 백업과 회복, 동시성 제어 등의 기능을 지원
DBMS의 사용 이점
- 데이터 독립화 : 데이터와 응용 프로그램을 분리시킴으로써 상호 영향 정도를 줄임
- 데이터 중복 최소화, 데이터 무결성 보장 : 중복되는 데이터를 최소화 시키면 무결성 손상 가능성이 줄어듬, 저장공간의 낭비를 줄임 (무결성 예) user03은 회원이 아닌데 게시판에 글을 작성했다. 이런걸 무결성이 깨졌다라고 함
- 데이터 보안 향상 : 응용프로그램은 DBMS를 통해 DBMS가 허용하는 데이터에만 접근 할 수 있음, 권한에 맞게 데이터 접근을 제한 or 암호화 시켜 저장할 수 있음
- 관리 편의성 향상 : 다양한 방법으로 백업할 수 있음, 장애 발생 시 복구 가능
SQL이란?
Structured Query Language
- 관계형 데이터베이스에서 데이터를 조회하거나 조작하기 위해 사용하는 표준 검색 언어
- 원하는 데이터를 찾는 방법이나 절차를 기술하는 것이 아닌 조건을 기술하여 작성
SQL 문법 종류
분류 | 용도 | 명령어 |
DDL(Data Definition Language) | 데이터 정의 | CREATE |
DROP | ||
ARTER | ||
TRUNCATE | ||
DML (Data Manipuation Language) |
데이터 조회(DQL) | SELECT |
데이터 조작 | INSERT | |
UPDATE | ||
DELETE | ||
DCL (Data Control Language) |
권한 설정 | GRANT |
REVOKE | ||
TCL (Transaction Control Language) |
트랜잭션 제어 | COMMIT |
ROLLBACK | ||
SAVEPOINT |
TABLE
하나의 행을 row(가로한줄)
하나의 열을 clunmn(세로한줄)
단일값 filed(한칸)
데이터 타입
구분 | 데이터 타입 | 설명 |
숫자 | NUMBER | 숫자 |
문자 | CHAR | 고정 길이 문자(최대 2000Byte) |
VARCHAR2 | 가변 길이 문자(최대 4000Byte) | |
NCHAR | CHAR과 동일하며 유니코드 문자 | |
NVARCHAR2 | VARCHAR2와 동일하며 유니코드 문자 | |
LONG | 가변길이 문자(최대 2GByte) | |
날짜 | DATE | 날짜 |
데이터 | CLOB | 가변길이 문자(최대 4GByte) |
BLOB | Binary Data |
char(5) 와 varchar2(5)의 차이점
abc라는 값을 입력했을 때
char타입은 "abc "으로 저장한다. 빈 공간은 공백 처리해서 길이가 안변함!
varchar2타입은 "abc"으로 저장한다. 빈 공간은 능동적인 삭제 처리를 함!
그럼 varchar2 쓰지 왜 char타입을 쓰냐?!
char가 속도가 빨라서
그래서 "남" "여" / "y" "n" 같이 공백의 자유도 없이 길이가 고정된 데이터를 저장하는 경우에는 char타입으로 쓰는게 빠르다!
NUMBER([P,S])
- P: 표현할 수 있는 전체 숫자 자리 수 (1~38)
- S: 소수점 이하 자리 수 (-84 ~ 127)
실제값 | 데이터 타입 | 저장되는 값 |
1234.678 | NUMBER(7,3) | 1234.678 |
NUMBER(7) | 1234 | |
NUMBER | 1234.678 | |
NUMBER(7,1) | 1234.7 | |
NUMBER(4,-2) | 1200 |
CHAR(SIZE)
- SIZE: 포함될 문자(열) 크기
- 지정한 크기보다 작은 문자(열)이 입력되고 남는 공간은 공백으로 채움
- 데이터는 "를 이용하여 표기하고 대/소문자를 구분
실제값 | 데이터 타입 | 저장되는 값 |
ORACLE | CHAR(3) | 에러 |
CHAR(6) | ORACLE | |
CHAR(9) | ORACLE + 공백 3칸 | |
오라클 | CHAR(3) | 에러 |
CHAR(6) | 에러 | |
CHAR(9) | 오라클 |
영어는 1글자 = 1byte
한글은 1글자 = 3byte(무료버전) / 1글자 = 2byte(유료버전)
VARCHAR2(SIZE)
- SIZE: 포함될 문자(열) 크기
- 지정한 크기보다 작은 문자(열)이 입력되고 남는 공간은 없앤다.
- 데이터는 "를 이용하여 표기하고 대/소문자를 구분
실제값 | 데이터 타입 | 저장되는 값 |
ORACLE | VARCHAR2(3) | 에러 |
VARCHAR2(6) | ORACLE | |
VARCHAR2(9) | ORACLE | |
오라클 | VARCHAR2(3) | 에러 |
VARCHAR2(6) | 에러 | |
VARCHAR2(9) | 오라클 |
DATE
일자(세기/년/월/일) 및 시간(시/분/초) 정보를 관리
기본적으로 화면에 년/월/일 정보만 표기
날짜의 연산 및 비교가 가능
실제 값 | 결과 타입 | 저장되는 값 |
날짜 + 숫자 | DATE | 숫자를 더한 날짜값 |
날짜 - 숫자 | DATE | 숫자를 뺀 날짜값 |
날짜 - 날짜 | NUMBER | 두 날짜의 차이(일수) |
날짜 + 숫자/24 | DATE | 날짜+시간 |