코드 스테이츠

관계형 데이터 베이스 - SQL

한휘용 2023. 5. 24. 15:31
728x90

데이터베이스란?

전자적으로 저장되고 체계적인 데이터 집합이다. 여기에는 단어, 숫자, 이미지, 비디오 및 파일을 포함한 모든 유형의 데이터가 포함될 수 있다. DBMS (데이터베이스 관리 시스템) 라는 소프트웨어를 사용하여 데이터를 저장, 검색 및 편집할 수 있다.

 

 

데이터베이스의 필요성

 

1. In-Memory

 

Java에서 데이터를 다룰 때에는 프로그램이 실행될 때에만 존재하는 데이터가 있다.

 

Java에서 변수를 만들어 저장한 경우, 프로그램이 종료될 때 해당 프로그램이 사용하던 데이터도 사라진다.

이 말은 변수 등에 저장한 데이터가 프로그램의 실행에 의존한다는 말이다. 예기치 못한 상황으로부터 데이터를 보호할 수 없고, 프로그램이 종료된 상태라면 데이터를 원하는 시간에 받아올 수 없으며, 데이터의 수명이 프로그램의 수명에 의존하게 된다.

 

2. File I/O

파일을 읽는 방식으로 작동하는 형태를 말한다. 엑셀 시트나 CSV 같은 파일의 형태는 In-Memory에 비해 데이터를 저장하는 방식으로 적절해 보인다. 그러나 한계가 분명히 존재한다.

  • 데이터가 필요할 때마다 전체 파일을 매번 읽어야 한다. 파일의 크기가 커질수록 이 작업은 버겁고, 비효율적이어서 File I/O 방식의 큰 단점이다.
  • 파일이 손상되거나 여러 개의 파일들을 동시에 다뤄야 하거나 하는 등 복잡하고 데이터량이 많아질수록 데이터를 불러들이는 작업이 점점 힘들어진다.

반면에 관계형 데이터베이스에서는 하나의 CSV 파일이나 엑셀 시트를 한 개의 테이블로 저장할 수 있다.

한 번에 여러 개의 테이블을 가질 수 있기 때문에 SQL을 활용해 데이터를 불러오기 수월하다. 또한, 엑셀 시트와 CSV 파일 등처럼 특정 형태의 파일은 대용량의 데이터를 저장하기 위한 목적이 아니다.

 

 

SQL 이란?

SQL은 데이터베이스용 프로그래밍 언어이다.

Structured Query Language 의 약자로 직역하면 "구조화된 Query 언어" 로 해석된다.

데이터 베이스에 query를 보내 원하는 데이터를 뽑아올 수 있다.

 

Query 란?

직역으로는 '질의문'

가장 친숙한 예시로 검색창에 적는 검색어 또한 Query의 일종

 

 

데이터베이스 관련 명령어

 

데이터베이스 생성

데이터 베이스를 생성할때 사용하며 CREATE DATABASE 뒤에 데이터베이스의 이름을 붙여 사용한다.

CREATE DATABASE 데이터베이스_이름;

 

데이터베이스 사용

데이터베이스를 이용해 테이블을 만들거나 수정하거나 삭제하는 등의 작업을 하려면, 먼저 데이터베이스를 사용하겠다는 명령을 전달해야 한다.

USE 데이터베이스_이름;

 

테이블 생성

USE를 이용해 데이터베이스를 선택했다면, 이제 테이블을 만들 수 있다.

아래 user라는 테이블을 만드는 예제를 확인해보자.

테이블은 필드(표의 열)와 함께 만들어야 한다. 다음과 같은 필드 조건이 있다고 가정한다.

필드 이름 필드 타입 그 외의 속성
id 숫자 Primary key이면서 자동 증가되도록 설정
name 문자열 (최대 255개의 문자)  
email 문자열 (최대 255개의 문자)  
CREATE TABLE user (
  id int PRIMARY KEY AUTO_INCREMENT,
  name varchar(255),
  email varchar(255)
);

 

테이블 정보 확인

 

다음의 명령어를 통해 테이블 정보를 확인할 수 있다.

DESCRIBE user;

mysql> describe user;
+-------+--------------+------+-----+---------+----------------+
| Field | Type         | Null | Key | Default | Extra          |
+-------+--------------+------+-----+---------+----------------+
| id    | int          | NO   | PRI | NULL    | auto_increment |
| name  | varchar(255) | YES  |     | NULL    |                |
| email | varchar(255) | YES  |     | NULL    |                |
+-------+--------------+------+-----+---------+----------------+
3 rows in set (0.00 sec)

 

 

 

아래 사이트를 참고하면 데이터베이스와, SQL 명령어를 학습하는데 많은 도움이 된다.

https://www.w3schools.com/mysql/default.asp

728x90