본문 바로가기

DB와 SQL

Part 1. 데이터베이스(DB)와 SQL이란?

728x90

이전에 DB와 SQL을 공부했었지만, 꾸준히 접하지않으면 기억이 나지않아 새로 쭉 정리하며 공부하려고 합니다.

 

데이터베이스(DB, DataBase)

데이터를 저장하는 장소를 의미하며, MySQL, MSSQL, ORACLE, BigQuery 등 다양한 종류가 있습니다.

 

데이터베이스 관리 시스템(DBMS, DataBase Management System)

말 그대로 데이터베이스를 관리하는 시스템을 의미합니다.

 

데이터베이스에 대해 공부하면서 가장 많이 접하게되는 것이 SQL, RDBMS 입니다.

SQL는 RDBMS의 데이터를 관리하기 위해 설계된 특수 목적의 프로그래밍 언어이고,

RDBMS는 데이터를 관계로 표현하며, 모든 데이터를 마치 엑셀과 유사한 2차원으로 표현합니다.

 

각 종류별로 장단점이 있지만, 기본 문법은 SQL DB 종류와 상관없이 같이 때문에 MySQL을 주로 하며 나중에 필요하다면 세부적인 차이점을 그때 그때 공부하는 것으로 할 예정입니다.

 

이제 본격적으로 SQL을 공부하고 정리하겠습니다.

DATABASE 구조
릴레이션 (relation) RDBMS에선 테이블(table)이라고 불리며, 같은 성격의 데이터들의 집합을 의미하며 튜플과 에트리뷰트로 데이터를 정렬하여 관리합니다. 
튜플(tuple) RDBMS에선 레코드(record) 또는 로우(row)라고 불리며, 릴레이션의 각 행을 의미합니다.
속성(attribute) RDBMS에선 칼럼(column) 또는 필드라고 불리며, 릴레이션에서 이름을 가진 하나의 열을 의미합니다.
디그리(degree) 에트리뷰트의 수를 말합니다.
카디널러티(cardinality) 튜플들의 수를 말합니다.

 

각 테이블은 키(key)값을 기준으로 서로 연결되어 있습니다. 데이터베이스의 테이블끼리 관계가 있기 때문에 관계형(Relational) 데이터베이스라고 불립니다. 

 

key는 데이터베이스에서 조건을 만족하는 튜플을 찾거나, 정렬할 때 다른 튜플들과 구별할 수 있는 기준이 되는 에트리뷰트의 수를 말합니다.

키의 종류
후보키 (Candidate Key) 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별할 수 있는 속성들의 부분집합을 의미하며, 모든 릴레이션은 반드시 하나 이상의 후보키를 가져야합니다. 

릴레이션에 있는 모든 튜플에 대해서 유일성최소성을 만족시켜야 합니다.
기본키 (Primary Key) 후보키 중 선택한 주키(Main Key)로, 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성입니다. 

Null 값을 가질 수 없고, 중복될 수 없습니다.
대체키 (Alternate Key) 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말합니다.
슈퍼키 (Super Key) 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플 중 슈퍼키로 구성된 속성의 집합과 동일한 값은 나타내지 않습니다.
즉 '학번' + '주민번호' + '성명'을 하나의 슈퍼키로 만드는 것 입니다.

릴레이션을 구성하는 모든 튜플에 대해 유일성은 만족하지만, 최소성은 만족시키지 못합니다.
외래키 (Foreign Key) 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조 관계를 표현하는데 중요한 도구로 사용됩니다.
즉, 관계를 맺고있는 릴레이션 R1, R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 의미합니다.

외래키로 지정되면 참조 테이블의 기본키에 없는 값을 입력할 수 없습니다.

 

이와 관련하여, 정규화(Normalization)과 반정규화(Denormalization)이라는 릴레이션을 설계하기 위한 과정에서 사용되는 개념과 인덱스, , 클러스터, 파티션 등 방대한 개념이 있지만, 공부하는 과정에서 필요하다면 정리해야 겠습니다.

 

데이터를 관리하기 위한 언어인 SQL은 정의어, 조작어, 제어어로 나뉩니다.

SQL 종류
DDL (데이터 정의어) SELECT, INSERT, UPDATE, DELETE
DML (데이터 조작어) CREATE, ALTER, DROP, RENAME, TRUNCATE
DCL (데이터 제어어) GRANT, REVOKE
TCL (트랜잭션 제어어) COMMIT, ROLLBACK, SAVEPOINT 

 

이제 실습을 통해 SQL을 활용하기 위해 DB와 DB 서버가 필요한데, 생활코딩님의 영상을 통해 필요한 사항들을 준비했습니다.

 

www.youtube.com/watch?v=pX0cs1fADtU&list=PLuHgQVnccGMCgrP_9HL3dAcvdt8qOZxjW&index=3

 

 

MYSQL과 Bitnami를 설치해두었고, CMD에서 Bitnami 내부의 mysql\bin 경로에 이동한 후 mysql -uroot -p를 입력하고 패스워드를 입력해 접속합니다.

 

DATABASE 명령어
데이터베이스 목록 확인 SHOW DATABASES;
데이터베이스 생성 / 삭제 CREATE DATABASE db_name;   /   DROP DATABASE db_name;
사용 할 데이터베이스로 접근 USE db_name;
테이블 목록 출력 SHOW TABLES;
테이블 구조 출력 DESC table_name;

 

여기까지 DB와 SQL을 공부할때 기본적인 개념과 준비를 마쳤습니다.