01.Mysql 기초 - 관계형 데이터베이스 구조
![post-thumbnail](https://velog.velcdn.com/images/jewon119/post/bd35690b-c438-4450-bf61-582916a54916/mysql-thumbnail.png)
🌈 데이터베이스와 RDBMS란?
- DBMS : 체계화된 데이터를 저장하고 관리하는 데이터베이스 프로그램
- 여러 응용 시스템들의 통합된 정보를 저장하여, 운영할 수 있는 공용 데이터의 묶음
- 논리적으로 연관된 자료 모음으로, 데이터를 고도로 구조화함으로써 검색/갱신등의 데이터 관리를 효율화함
- RDBMS : 데이터베이스 중 관계형 데이터베이스를 RDBMS라 부르고, 대표적인 관계형 RDBMS는 Oracle, mysql 등이 있음
- 최근 트렌드에서 빅데이터나 데이터 과학을 다룰 때 RDBMS가 아닌 타입들을 쓰기도 함(Document형 => MongoDB 대표적)
- 다만, 아직까지는 RDBMS를 가장 많이 사용하고 있음
1. RDBMS(Relational Database Management System)
- 데이터베이스의 한 종류로, 가장 많이 사용됨
- 역사가 오래되어, 가장 신뢰성이 높고, 데이터 분류, 정렬, 탐색 속도가 빠름
- 관계형 데이터베이스는 테이블로 데이터를 관리함
- 2차원 테이블(Table) 형식을 이용하여 데이터를 정의하고 설명하는 데이터 모델
- 테이블에서 셀을 컬럼, 필드, 속성이라고 표현함
- 테이블에서 로우를 레코드, 튜플이라 표현
![](https://velog.velcdn.com/images%2Fjewon119%2Fpost%2Fef03f0de-d6c4-43ed-935e-f0fc83ae9d27%2F11.png)
2. Primary Key and Foreign Key
- Primary Key(기본키): 한 테이블(Table)의 각 로우(Row)를 유일하게 식별해주는 컬럼(Column)
- 각 테이블마다 Primary Key가 존재해야 하며, NULL 값을 허용하지 않고, 각 로우(Row)마다 유일한 값이어야 한다.
- Foreign Key(외래키 또는 외부키): Foreign Key는 한 테이블의 필드(Attribute) 중 다른 테이블의 행(Row)을 식별할 수 있는 키
![](https://velog.velcdn.com/images%2Fjewon119%2Fpost%2F7b46e325-3078-4939-afcd-0be71d6d3d63%2F22.gif)
3. 데이터베이스 스키마(Schema)
- 데이터베이스의 테이블 구조 및 형식, 관계 등의 정보를 기술한 것
- 관계형 데이터베이스를 사용하여 데이터를 저장할 때 가장 먼저 할 일은 데이터의 공통 속성을 식별하여 컬럼(Column)으로 정의하고, 테이블(Table)을 만드는 것
- 하나의 테이블이 아닌 여러 개의 테이블로 만들고, 각 테이블 구조, 형식, 관계를 정의함
- 이를 스키마라고 하며, 일종의 데이터베이스 설계도로 이해하면 됨
- 데이터베이스마다 스키마를 만드는 언어가 존재하며, 해당 스키마만 있으면 동일한 구조의 데이터베이스를 만들 수 있음
![](https://images.velog.io/images/jewon119/post/9f8eccf7-6e20-4a7e-b7b8-9163b5504367/111.png)
4. SQL(Structured Query Language) 이란?
- 관계형 데이터베이스에서 데이터를 관리하기 위해 사용되는 표준 프로그래밍 언어(Language)
- SQL은 스키마 생성 및 수정, 테이블 관리, 데이터 추가, 수정, 삭제, 조회 등, 데이터베이스와 관련된 거의 모든 작업을 위해 사용되는 언어
- 데이터베이스마다 문법에 약간의 차이가 있지만, 표준 SQL을 기본으로 하므로, 관계형 데이터베이스를 다루기 위해서는 필수적으로 알아야 함
- SQL은 크게 세 가지 종류로 나뉨
- 데이터 정의 언어(DDL, Data Definition Language)
- 데이터 처리 언어(DML, Data Manipulation Language)
- 데이터 제어 언어(DCL, Data Control Language)
1) 데이터 정의 언어(DDL, Data Definition Language)
- 데이터 구조 정의함(테이블 및 스키마 생성)
- 테이블(TABLE), 인덱스(INDEX) 등의 개체를 만들고 관리하는데 사용되는 명령
- CREATE, ALTER, DROP 등이 있음
2) 데이터 처리 언어(DML, Data Manipulation Language)
- CRUD [Create(생성), Read(읽기), Update(갱신), Delete(삭제)]를 하기 위한 명령
- INSERT : 테이블(Table)에 하나 이상의 데이터 추가
- UPDATE : 테이블(Table)에 저장된 하나 이상의 데이터 수정
- DELETE : 테이블(Table)의 데이터 삭제
- SELECT : 테이블(Table)에 저장된 데이터 조회
3) 데이터 제어 언어(DCL, Data Control Language)
- 데이터 핸들링 권한 설정, 데이터 무결성 처리 등을 수행하는 명령으로 데이터 전문가들 주로 사용
- GRANT : 데이터베이스 개체(테이블, 인덱스 등)에 대한 사용 권한 설정
- BEGIN : 트랜잭션(Transaction) 시작
- COMMIT : 트랜잭션(Transaction) 내의 실행 결과 적용
- ROLLBACK : 트랜잭션(Transaction)의 실행 취소