일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | ||
6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 | 17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | 25 | 26 |
27 | 28 | 29 | 30 |
- SQL가이드
- 영월카페
- 조인
- 안양
- 수원
- sqlp
- 단일행함수
- 속초여행
- 데이터모델링의이해
- 부산여행
- sql
- 부산숙소
- 영월여행
- 의왕맛집
- sql 전문가 가이드
- 부산맛집
- SQL전문가가이드
- 남원맛집
- 속초카페
- 남원여행
- 해운대
- SQLD
- 부산
- 신멘
- join
- 의왕
- 부산카페
- 코트야드메리어트호텔 서울판교
- 속초
- 삼겹살
- Today
- Total
지지 On Air
2-1-1. 관계형 데이터베이스 개요 [ SQLD / SQLP / SQL 전문가 가이드 ] 본문
드디어 2과목이 시작되었습니다!
1과목이 이론 암기 위주였다면, 2과목은 SQL문을 보고 이해할수 있어야 하며 SQL문을 작성할 수 있어야 합니다.
그 첫번째로 제1절 관계형 데이터베이스 개요 인데, SQL전문가 가이드에는 DB의 발전 배경과 같은 이론설명이 많습니다만 최대한 시험에 필요한 부분을 요약하여 포스팅했습니다 :)
과목 II. SQL 기본과 활용
- 제1장 SQL 기본
> 제1절 관계형 데이터베이스 개요
1. 데이터베이스
효율적인 데이터의 관리와 데이터 손상을 피하고 데이터 복구를 위한 시스템을 DBMS(Database Management System)라고 한다.
현재 기업에서 사용하고 있는 대부분의 데이터베이스는 기존 관계형 데이터베이스에 객체 지원 기능을 추가한 객체 관계형 데이터베이스이다. 하지만 현실적으로 기업의 핵심 데이터는 대부분 관계형 데이터베이스 구조로 저장되괴, 관계형 데이터베이스를 조작할 수 있는 SQL문장에 의해 관리되고 있으므로 관계형 데이터베이스와 SQL은 상당히 중요하다고 할 수 있다.
파일시스템은 하나의 파일을 많은 사용자가 동시에 검색은 가능하나, 입력/수정/삭제 할 수 없기 때문에 관리가 어렵다.
하나의 파일을 여러 사용자나 애플리케이션에서 동시에 사용하기 위해 원래의 데이터파일을 여러개 복사해 사용하게 된다.
하지만 여러개의 데이터파일이 존재하면서 동일한 데이터가 여러 곳에 저장되는 문제가 발생하고, 하나의 원본 파일에 대한 변경작업이 발생했을때 모든 복사본 파일에 변경 작업을 병행처리하지 않으면 서로 다른 정보 파일이 존재하므로 데이터 불일치성이 발생한다.
결과적으로 파일 시스템은 분산된 데이터 간 정합성을 유지하는데 과다한 노력이 필요하고, 정합성을 보장하기 힘들게 된다.
이러한 문제에 대해 관계형 데이터베이스는 정규화를 통한 합리적인 테이블 모델링을 통해 이상현상을 제거하고 데이터 중복을 피할 수 있으며 동시성 관리와 병행제어를 통해 많은 사용자가 동시에 데이터 공유 및 조작 할 수 있는 기능을 제공한다.
또한 관계형 데이터베이스는 메타 데이터를 총괄 관리할 수 있으므로 데이터의 성격/속성 또는 표현 방법 등을 체계화 할 수 있고 데이터 표중화를 통한 데이터 품질을 확보 할 수 있는 장점을 갖고 있다.
여기에 DBMS는 인증된 사용자만 참조할 수 있도록 보안 기능도 제공한다. 테이블 생성 시에 사용할 수 있는 다양한 제약조건을 이용해 데이터 무결성을 보장할 수 있다.
2. SQL
SQL(Structured Query Language)은 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터를 제어하기 위해 사용하는 언어이다.
DML (데이터 조작어, Data Manipulation Language)
데이터베이스의 테이블에 들어있는 데이터에 변형을 가하는 종류의 명령어
- INSERT : 데이터 추가
- UPDATE : 데이터 수정
- DELETE : 데이터 삭제
DDL (데이터 정의어, Data Definition Language)
테이블과 같은 데이터 구조를 정의하는 데 사용하는 명령어
- CREATE : 테이블 생성
- ALTER : 테이블 변경
- DROP : 테이블 삭제
- RENAME : 테이블명 재정의
DCL (데이터 제어어, Data Control Language)
데이터베이스에 접근하고 객체들을 사용하도록 권한을 주고 회수하는 명령어
- GRANT : 권한 부여
- REVOKE : 권한 회수
TCL (트랜잭션 제어어, Transaction Control Language)
논리적인 작업 단위를 묶어서 DML에 의해 조작된 결과를 작업단위로 제어하는 명령어. 일부에서 DCL로 나누기도 하지만 다소 성격이 다르기에 별도의 그룹으로 분리할 것을 권고한다.
- COMMIT
- ROLLBACK
3. STANDARD SQL 개요
1970년 E.F.Codd 박사의 논문에서 처음 관계형 DBMS를 발표한 이후로 여러 새로운 기능들이 꾸준히 추가되고 있다. 현재 기업형 DBMS는 순수 관계형 데이터베이스가 아닌, 객체 지원 기능이 포함된 객체관계형 데이터베이스가 대부분이다.
대표적인 ANSI/ISO 표준 SQL기능은 다음 내용을 포함한다.
- STANDARD JOIN 기능 추가(CROSS, OUTER JOIN 등 새로운 FROM절 JOIN 기능들)
- SCALAR SUBQUERY, TOP-N QUERY 등의 새로운 SUBQUERY 기능들
- ROLLUP, CUBE, GROUPING SETS 등의 새로운 리포팅 기능
- WINDOW FUNCTION 같은 새로운 개념의 분석 기능들
일반 집합 연산자
일반 집합 연산자를 SQL과 비교하면 다음과 같다
1. UNION (합집합) 연산 -> UNION 기능
2. INTERSECTION (교집합) 연산 -> INTERSECT 기능
3. DIFFERENCE (차집합) 연산 -> EXCEPT (Oracle은 MINUS) 기능
4. PRODUCT (곱집합 / JOIN 조건이 없는 경우 생길 수 있는 모든 데이터의 조합) 연산 -> CROSS JOIN 기능
순수 관계 연산자
순수 관계 연산자를 SQL과 비교하면 다음과 같다.
1. SELECT 연산 (SELECT절과 다름) -> WHERE절
2. PROJECT연산 -> SELECT절
3. (NATURAL) JOIN 연산 -> 다양한 JOIN 기능
4. DIVIDE -> 현재 사용되지 않음
4. 테이블
데이터는 관게형 데이터베이스의 기본단위인 테이블(TABLE) 형태로 저장된다. 모든 자료는 테이블에 등록되고, 우리는 테이블로부터 원하는 자료를 꺼내올 수 있다.
- 테이블 : 행과 칼럼의 2차원 구조를 가진 데이터의 저장장소이며, 데이터베이스의 가장 기본적인 개념
- 칼럼·열 : 2차원 구조를 가진 테이블에서 세로방향으로 이루어진 하나 하나의 특정 속성 (더이상 나눌 수 없는 특성)
- 행 : 2차원 구조를 가진 테이블에서 가로방향으로 연결된 데이터
그림으로 나타내면 다음과 같다.
데이터를 저장할때, 모든 데이터를 하나의 테이블로 저장하지 않는다.
다음과 그림에서는 선수 테이블과 팀 테이블을 분할 저장 하고 있는데, 분할된 테이블은 그 칼럼의 값에 의해 연결된다.
이렇게 테이블을 분할해 불필요한 중복을 줄이는 것을 정규화(Normalization)라고 한다.
- 정규화 : 테이블을 분할해 데이터의 정합성을 확보하고 불필요한 중복을 줄이는 프로세스
- 기본키 : 테이블에 존재하는 각 행을 한 가지 의미로 특정할 수 있는 한개 이상의 칼럼
- 외부키 : 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 칼럼
5. ERD
테이블 간에는 어떤 의미의 관계가 존재하며, 다른 테이블과도 어떤 의미의 연관성이나 관계를 갖고있다.
ERD(Entity Relationship Diagram)는 이와같은 관계의 의미를 직관적으로 표현한다.
위 선수테이블-팀테이블 과 같은 경우에 팀과 선수 간에는 '소속'이라는 관계가 맺어져 있다. 서로의 상관관계를 도식화 한것을 E-R다이어그램 이라고 하며, 간략히 ERD라고 한다.
ERD의 구성요소는 엔터티(Entity), 관계(Relationship), 속성(Attribute) 3가지 이며, 현실세계의 데이터는 이 세가지 구성 요소로 모두 표현할 수 있다.
6. 데이터 유형
데이터 유형은 데이터베이스의 테이블에 특정 자료를 입력할 때, 그 자료를 받아들일 공간을 자료의 유형별로 나누는 기준이다.
즉, 특정 칼럼을 정의할 때 선언한 데이터 유형은 그 칼럼이 받아들일 수 있는 자료의 유형을 규정한다.
따라서 선언한 유형이 아닌 다른 종류의 데이터는 들어올 수 없다.
자주 쓰는 데이터 유형은 다음과 같다
데이터 유형 | 설명 |
CHARACTER(s) | - 고정 길이 문자열 정보 - s는 기본 길이 1바이트, 최대길이 oracle 2000바이트, SQL Server 8000바이트 - s만큼 최대 길이/고정길이를 갖고 있으므로 할당된 변수 값의 길이가 s보다 작을 경우에는 그 차이 길이만큼 공간으로 채워진다. |
VARCHAR(s) | - CHARACTER VARYING의 약자로 가변 길이 문자열 정보 (Oracle은 VARCHAR2로 표현, SQL Server는 VARCHAR로 표현) - s는 최소 길이 1바이트, 최대 길이 Oracle 4000바이트, SQL Server 8000바이트 - s만큼의 최대 길이를 갖지만 가변 길이로 조정이 되기 때문에 할당 된 변수값의 바이트만 적용. (limit 개념) |
NUMERIC | - 정수, 실수 등 숫자 정보 (Oracle은 NUMBER로, SQL Server는 10가지 이상의 숫자 타입을 갖고 있음) - Oracle은 처음에 전체 자리 수를 지정하고 그 다음 소수 부분의 자리수를 지정한다. (예를들어 정수부분이 6자리이고 소수점부분이 2자리인 경우에는 'NUMBER(8,2)'와 같이 된다.) |
DATETIME | - 날짜와 시각 정보 (Oracle은 DATE 로 표현, SQL Server는 DATATIME으로 표현) - Oracle은 1초 단위, SQL Server는 3.33ms(millisecond) 단위 관리 |
관계형데이터베이스데 대한 전반적인 설명이 담긴 절이다 보니 내용이 좀 길어졌습니다.
중요한것은 DML, DDL, DCL, TCL의 의미와 종류를 알고 계셔야 하고 (주관식 단골입니다 ㅎㅎ)
기본적으로는 테이블에 관한 용어와 데이터 유형의 종류에 대해 알고 계셔야 다음 절에서 계속 SQL문을 작성하고 읽을수 있습니다.
이번 포스팅도 SQL 자격증 공부에 도움이 되셨길 바라며
하트와 구독, 댓글은 큰힘이 됩니다 :)
본 포스팅은 '한국데이터산업진흥원' 에서 발행한 'SQL 전문가 가이드' 를 참고/인용 하였음을 밝힙니다.
'개발 > SQL [SQLD&SQLP]' 카테고리의 다른 글
2-1-3. 함수(1) (4) | 2022.07.21 |
---|---|
2-1-2. SELECT문 (6) | 2022.07.18 |
1-2-5. 본질식별자 vs 인조식별자 [ SQLD / SQLP / SQL 가이드 ] (8) | 2022.07.16 |
1-2-4. Null 속성의 이해 [ SQLD / SQLP / SQL 가이드 ] (4) | 2022.07.14 |
1-2-3. 모델이 표현하는 트랜잭션의 이해 [ SQLD / SQLP / SQL 가이드 ] (4) | 2022.07.13 |