으쌰으쌰💪/SQL

SQL기본 - 관계형 데이터베이스 개요

_꼬마돌 2023. 8. 23. 00:42
반응형

데이터베이스

1. 넓은 의미에서의 데이터베이스는 일상적인 정보들을 모아 놓은 것 자체를 의미한다. 

2. 일반적으로 데이터베이스라고 말할 때는 특정 기업이나 조직 또는 개인이 필요에 의해 (예: 부가가치가 발생하는) 데이터를 일정한 형태로 저장해 놓은 것을 의미한다. 

3. 사용자들은 보다 효율적인 데이터의 관리 뿐만 아니라 예기치 못 한 사건으로 인한 데이터의 손상을 피하고, 필요시 필요한 데이터를 복구하기 위한 강력한 기능의 소프트웨어를 필요로 하게 되었고, 이러한 기본적인 요구사항을 만족시켜주는 시스템을 DBMS(Database Management System)라고 한다. 

 

관계형 데이터베이스 (Relational Database)

1. 관계형 데이터베이스는 정규화를 통한 합리적인 테이블 모델링을 통해 이상(Anomaly) 현상을 제거하고 데이터 중복을 피할 수 있으며, 동시성 관리, 병행 제어를 통해 많은 사용자들이 동시에 데이터를 공유 및 조작할 수 있는 기능을 제공한다. 

2. 관계형 데이터베이스는 메타 데이터를 총괄 관리할 수 있기 때문에 데이터의 성격, 속성 또는 표현 방법 등을 체계화할 수 있고, 데이터 표준화를 통한 데이터 품질을 확보할 수 있는 장점을 가지고 있다. 

3. DBMS는 인증된 사용자만이 참조할 수 있도록 보안 기능을 제공하고 있다. 테이블 생성 시에 사용할 수 있는 다양한 제약조선을 이용하여 사용자가 실수로 조건에 위배되는 데이터를 입력한다든지, 관계를 연결하는 중요 데이터를 삭제하는 것을 방지하여 데이터 무결성(Integrity)을 보장한다. 

4. DBMS는 시스템의 갑작스런 장애로부터 사용자가 입력, 수정, 삭제하던 데이터가 제대로 반영될 수 있도록 보장해주는 기능과, 시스템 다운, 재해 등의 상황에서도 데이터를 회복/복구할 수 있는 기능을 제공한다. 

 

SQL (Structured Query Language)

1. SQL은 관계형 데이터베이스에서 데이터 정의, 데이터 조작, 데이터 제어를 하기 위해 사용하는 언어이다. 

2. 특정 데이터들의 집합에서 필요로 하는 데이터를 꺼내서 조회하고 새로운 데이터를 입력/수정/삭제하는 행위를 통해서 사용자는 데이터베이스와 대화하게 된다. 

 

SQL문의 종류

데이터 조작어 (DML: Data Manipulation Language)

- SELECT : 데이터베이스에 들어있는 데이터를 조회하거나 검색하기 위한 명령어

- INSERT, UPDATE, DELETE : 데이터베이스에 들어있는 데이터에 변형을 가하는데 사용되는 명령어

 

데이터 정의어 (DDL: Data Definition Language)

- CREATE, ALTER, DROP, RENAME

테이블과 같은 데이터 구조를 정의하는데 사용되는 명령어들로, 그러한 구조를 생성하거나 변경하거나 삭제하거나 이름을 바꾸는 데이터 구조와 관련된 명령어

 

데이터 제어어 (DCL: Data Control Language)

- GRANT, REVOKE : 데이터베이스에 접근하고 객체들을 사용하도록 권한 부여 및 회수하는 명령어

 

트랜잭션 제어어 (TCL: Transaction Control Language)

- COMMIT, ROLLBACK : 논리적인 작업 단위를 묶어서 DML에 의해 조작된 결과를 작업 단위 별로 적용 및 취소하는 명령어

 

테이블 (Table)

1. 데이터는 관계형 데이터베이스의 기본 단위인 테이블 형태로 저장된다. 모든 자료는 테이블에 등록이 되고, 우리는 테이블로부터 원하는 자료를 꺼내올 수 있다.

2. 테이블은 데이터를 저장하는 객체(Object)로서 관계형 데이터베이스의 기본 단위이다. 

3. 관계형 데이터베이스에서는 모든 데이터를 컬럼(열)과 로우(행)의 2차원 구조로 나타낸다. 세로 방향을 컬럼(Column), 가로 방향을 로우(Row)라고 하고, 컬럼과 로우가 겹치는 하나의 공간을 필드(Field)라고 한다. 

 

 

항상 헷갈리는 행과 열 쉽게 외우기

 

좀 웃기긴 한데 나는 행의 'ㅎ'의 모자부분을 옆으로 길게 늘리고, 열의 'ㅕ' 부분을 아래로 늘려서 외우면 쉽게 기억할 수 있었다.

영어로 열은 Column, 행은 Row이다.

먼저 Column은 '기둥'이라는 뜻을 갖고 있는데, 기둥은 세로로 서있다는 걸 떠올리면 된다.

Row는 '노를 젓다'는 뜻도 있다. 노를 저으면 배가 가로방향으로 움직인다는 걸 기억하면 된다!

 

테이블 용어

테이블 (Table)

- 컬럼과 로우의 2차원 구조를 가진 데이터의 저장소

 

컬럼 (Column)

- 테이블에서 세로방향으로 이루어진 하나하나의 속성(더이상 나눌 수 없는 것)

 

로우 (Row)

- 테이블에서 가로방향으로 이루어진 데이터

 

정규화 (Normalization)

- 테이블을 분할하여 데이터의 정합성을 확보하고, 불필요한 중복을 줄이는 프로세스

 

기본키 (Primary Key)

- 테이블에 존재하는 각 행을 한가지 의미로 특정할 수 있는 한 개 이상의 컬럼

 

외부키 (Foreign Key)

- 다른 테이블의 기본키로 사용되고 있는 관계를 연결하는 컬럼

 

ERD (Entity Relationship Diagram)

1. 테이블 간 서로의 상관 관계를 그림으로 도식화한 것을 E-R 다이어그램이라고 하며, 간략히 ERD라고 한다. 

2. ERD의 구성 요소는 엔티티(Entity), 관계(Relationship), 속성(Attribute) 3가지이며, 현실 세계의 데이터는 이 3가지 구성 요소로 모두 표현이 가능하다. 

반응형