좋은 코드

MySQL 곱씹기

nayoon 2022. 10. 31. 20:37

MySQL에 대해 궁금했던 점들 위주로 공부하였다.

 

MySQL은 세계에서 가장 널리 쓰이고 있는 관계형 데이터베이스 관리 시스템이다.

 

관계형 데이터베이스 관리 시스템은 Relational Database Management System이라고 해서 흔히 RDBMS라고 불린다.

 

MySQL은 오픈소스이며 다중 사용자, 다중 스레드를 지원한다.

또한, C, Java, PHP 등의 여러 프로그래밍 언어를 위한 다양한 API 서비스를 제공한다.

 

MySQL의 장점은 아래와 같은데

 

널리 사용되는 SQL을 사용하고 있고,

오픈 소스이기 때문에 무료로 사용할 수 있다.

또한, 다양한 운영체제에서 사용할 수 있고 여러 프로그래밍 언어를 지원한다.

 

 

<SQL은 Structured Query Language의 줄임말로 구조화된 질의어이다>

 

 

데이터베이스란 무엇일까

= 데이터의 집합체 + 통합 관리되고 있는

 

데이터베이스 등장 전에는 파일 시스템에 데이터를 저장해두고 있었는데

동일한 데이터를 각기 다른 곳에 저장해두고 있었기 때문에 데이터의 중복과 불일치가 발생하였고 수정하려고 하면

데이터 수정을 위해 모든 파일을 열고 수정해야한다는 문제점이 있었다.

 

중복 데이터를 처리하고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리하기 때문에 여러 업무에서 효율적으로 데이터베이스를 사용할 수 있다.

 

 

이러한 데이터베이스는 별도의 미들웨어에서 따로 관리되어지는데, 데이터베이스를 관리하는 미들웨어를 DBMS라고 한다.

 

 

 

 

위에서 이야기했던 관계형 데이터베이스

Relational Database인데 현재 가장 많이 사용되고 있는 데이터베이스의 종류이다.

 

관계형 데이터베이스는 테이블(table)로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타낸다.

특징 중 하나는 데이터의 종속성을 관계(relationship)로 표현한다.

 

테이블은 다른 테이블들과 관계를 맺고 모여있는 집합체이다.

 

 

관계형 데이터베이스의 특징은 아래와 같다.

 

데이터의 분류, 정렬, 탐색 속도가 빠르다.

또한, 오래 사용된 만큼 신뢰도가 높고, 어떤 상황에서도 데이터의 무결성을 보장한다.

기존에 작성된 스키마를 수정하기 어렵고, 데이터베이스의 부하를 분석하는 것이 어렵다.

 

 

관계형 데이터베이스의 용어는 아래와 같다.

1. 열(column)

필드(field) 또는 속성(attribute)이라고도 불린다.

각각의 열은 유일한 이름을 가지고 있으며 자신만의 타입을 가진다.

 

2. 행(row)

관계된 데이터의 묶음으로 보면 된다.

한 테이블의 모든 행은 같은 수의 열을 가진다.

이러한 행은 튜플(tuple) 또는 레코드(record)라고도 불린다.

 

3. 값(value)

테이블은 각각의 행과 열에 대응하는 값을 가져야 한다.

이러한 값은 열의 타입에 맞는 값을 가져야 한다.

 

4. 키(key)

테이블에서 행의 식별자로 사용되는 열을 키(key) 또는 기본 키(primary key)라고 한다.

즉, 테이블에 저장된 레코드를 고유하게 식별하는 후보 키(candidate key) 중에서 데이터베이스 설계자가 지정한 속성을 의미합니다.

 

5. 관계(relationshop)

테이블이 관계를 맺는 테이블의 수에 따라 아래와 같이 나눌 수 있다.

 

- 일대일(one-to-one) 관계

- 일대다(one-to-many) 관계

- 다대다(many-to-many) 관계

 

 

관계형 데이터베이스에서는 이러한 관계를 나타내기 위해 외래 키(foreign key)라는 것을 사용합니다.

외래 키는 한 테이블의 키 중에서 다른 테이블의 행(row)을 식별할 수 있는 키를 의미합니다.

 

 

참고1 사이트

 

6. 스키마(schema)

테이블을 그리기 위한 청사진이라고 보면 된다.

스키마에는 테이블의 각 열에 대한 이름, 타입 뿐만 아니라 기본 키, 외래 키에 대한 표시도 남겨야한다.

 

스키마는 E-R 다이어그램(Entity-Relationship Diagram)이나 문자열로 표현할 수 있다.

 

 

 

 

 

그렇다면..!

 

MySQL을 설치했다고 하면.. 그건 데이터베이스 서버를 설치했다고 생각하면 된다.

 

MySQL을 방금..설치해서 처음 접했으면.. 이게 서버..? 왜 이게 서버..? 으잉..? 싶을 수도 있는데,

 

AWS와 같은 클라우드 서비스에서 rds를 빌려보았거나 아니면 ecs 내에 MySQL을 설치한 후에

MySQL workbench에서 접근할 때 주소와 포트를 입력하다보면 대략 알 수 있다.

 

외부에 있는 데이터베이스 서버에 MySQL workbench라는 클라이언트 프로그램을 통해 접근하는 것이다.

 

위에 적어놓은 설명과 동일하게 SQL라는 널리 사용되고 있는 쿼리를 MySQL에서는 사용중인데, 이것을 가지고 서버에 요청을 보낸다고 생각하면 된다.

 

아래와 같은 명령문이 주석과 같은 명령을 날리는 거라고 보면 된다.

create database apple; # apple 이라는 데이터베이스를 만들어줘
use apple; # apple 이라는 데이터베이스를 사용할래

create table starbucks
(
    rid bigint primary key auto_increment not null,
    name varchar(20) not null
); # starbucks라고 하는 테이블 생성해줘

 

 

 

 

 

 

 

 

 

 

참고

http://www.tcpschool.com/mysql/mysql_intro_relationalDB

'좋은 코드' 카테고리의 다른 글

디자인 패턴  (0) 2022.11.10
String과 char  (0) 2022.10.14