[BE Study] #1. DB & 쿼리문 이해

kiteB·2021년 8월 10일
4

BE-Study

목록 보기
1/3
post-thumbnail

멋쟁이사자처럼 정규 세션이 끝나고, 8월부터는 Front-End, Back-End 분야를 나누어서 스터디를 진행하게 되었다.

스터디는 주마다 주어지는 키워드와 질문에 대해 각자 공부해서 발표를 하는 방식으로 진행된다.

📌 1주차 스터디 키워드 및 질문


[키워드]

  • Database
  • Database Query (select, insert, update, delete)
  • NoSQL
  • ORM

[질문 리스트]

  • Database가 필요한 이유는 무엇일까요?
  • RDBNoSQL의 개념과 특징을 설명해주세요.
  • 4개의 DB 쿼리문에 대해 설명해주세요. (select, insert, update, delete)
  • ORM이 무엇인지 설명해주세요.

흠,,, 내가 Database에 대한 공부를 제대로 해본 적이 없어서 처음 들어보는 용어가 조금 있다.

Database 기초부터 공부해보자!

Database


데이터베이스(DB: Database)란?

여러 사람에 의해 공유되어 사용될 목적으로 체계화하여 통합하여 관리되는 데이터의 집합체

데이터베이스중복된 데이터를 없애고, 자료를 구조화하여, 효율적인 처리를 할 수 있도록 관리되어, 여러 업무에 여러 사용자가 데이터베이스를 사용할 수 있다.

데이터베이스 관리 시스템(DBMS: Database Management System)이란?

데이터베이스는 응용 프로그램과는 다른 별도의 미들웨어에 의해 관리되는데, 이러한 미들웨어를 DBMS라고 한다.

DBMS는 응용 프로그램을 대신하여 DB에 존재하는 데이터의 검색, 삭제, 삽입, 수정을 가능하게 하고, 모든 응용 프로그램이 DB를 공유할 수 있게 한다.

DBMS의 특징

  1. 데이터 공유 : 데이터베이스의 정확성과 안정성을 위해 일정한 형식을 필터링하여 저장하거나, 여러 명이 데이터를 동시 공유할 수 있도록 하는 등이 있다.
  2. 데이터 중복의 최소화 : 하나의 데이터베이스에 여러 응용 프로그램이 접근 가능할 수 있어서 경제성, 조작성등의 장점이 있다.
  3. 계속적 변화에 대한 적응 : 한 속성의 데이터가 여러군데에 산재해 있으면 동시다발적인 업데이트가 어려울 뿐 아니라 착오가 생길 우려가 많아 무결성을 유지하기 어렵다. 동적인 데이터는 여러군데에 있을수록 수정에 비례해서 복잡해지고 착오가 많아지만, DBMS를 통하여 쉽게 할 수 있다.
  4. 보안성 : 데이터의 분산적인 관리가 아니라, 한군데만 집중관리할 수있으므로 보안성 향상, 보안비용 절감이 된다.

RDB


RDB(Relational Database)란?

  • 관계형 데이터베이스란 테이블(table)로 이루어져 있으며, 이 테이블은 키(key)와 값(value)의 관계를 나타낸다.
  • 이처럼 데이터의 종속성을 관계(relationship)로 표현하는 것이 관계형 데이터베이스의 특징!
  • 현재 가장 많이 사용되고 있는 데이터베이스의 한 종류이다.

RDB의 특징

  1. 데이터의 분류, 정렬, 탐색 속도가 빠르다.
  2. 오랫동안 사용된 만큼 신뢰성이 높고, 어떤 상황에서도 데이터의 무결성을 보장한다.
  3. 기존에 작성된 스키마를 수정하기가 어렵다.
  4. 데이터베이스의 부하를 분석하는 것이 어렵다.

NoSQL


NoSQL이란?

  • NoSQL의 약자에 대해서는 No SQL, Not Only SQL, Non-Relational Operational Database SQL로 의견이 엇갈리지만, 현재는 Not Only SQL로 풀어서 설명하는 것이 다수를 차지하고 있다.
  • Not Only SQL을 풀어보면, 단순히 기존 관계형 DBMS가 가지고 있는 특성뿐만 아니라, 다른 특성들을 부가적으로 지원한다는 것을 의미한다.

NoSQL 특징

  1. NoSQLRDBMS와 달리 데이터 간의 관계를 정의하지 않는다.
    → 데이터 테이블은 그냥 하나의 테이블이며, 각 테이블간의 관계를 정의하지 않고 테이블간의 join도 불가능하다.

  2. RDBMS에 비해 훨씬 더 대용량의 데이터를 저장할 수 있다.
    RDBMS의 복잡도와 용량의 한계를 극복하기 위한 목적으로 등장한 만큼 페타바이트급의 대용량 데이터를 저장할 수 있다.

  3. 분산형 구조이다.
    NoSQL은 기존의 RDBMS와는 다르게 하나의 고성능 머신에 데이터를 저장하는 것이 아니라 분산형 구조를 통해 데이터를 여러 대의 서버에 분산하여 저장한다. 분산 시에 데이터를 상호 복제하여 특정 서버에 장애가 발생했을 때에도 데이터 유실이나 서비스 중지가 없는 구조의 형태를 가진다.

  4. 고정되지 않은 테이블 스키마를 갖는다.
    RDBMS와는 다르게 테이블의 스키마가 유동적이다. 데이터를 저장하는 column은 각기 다른 이름과 다른 데이터 타입을 갖는 것이 허용된다.

📌 RDBMSNoSQL 비교

RDBMS클라이언트/서버 환경에 맞는 데이터 저장 기술이라고 한다면, NoSQL클라우드 환경에 맞는 저장 기술이다.


Database Query (select, insert, update, delete)


Database Query란?

Query : '질문, 문의하다'
Database Query: 데이터베이스에 정보를 요청하는 것

흔히 쿼리문을 작성한다는 말은 데이터베이스에서 원하는 정보를 가져오는 코드를 작성한다 정도로 이해하면 된다.

1. SELECT

  • 가장 기본이 되는 데이터를 불러오는 쿼리문
  • 단순히 DB의 데이터를 일정 조건으로 조회할 때 사용함.

SELECT 사용법

  • SELECT * FROM [테이블명] : [테이블명]의 모든 필드, 모든 데이터를 조회한다.
  • SELECT * FROM [테이블명] WHERE [필드명] = [필드값] : [테이블명]의 모든 필드, [필드명]이 [필드값]인 데이터를 조회한다.
  • SELECT * FROM [테이블명] WHERE [필드명1] = [필드값1] AND [필드명2] = [필드값2] : [테이블명]의 모든 필드, [필드명1]이 [필드값1]이고, [필드명2]이 [필드값2]인 데이터를 조회한다.
  • SELECT [필드명3], [필드명2] FROM [테이블명] WHERER [필드명1] = [필드값1] AND [필드명2] = [필드값2] : [테이블명]의 [필드명3], [필드명2] 필드를 출력, [필드명1]이 [필드값1]이고 [필드명2]이 [필드값2]이고 데이터를 조회한다.

2. INSERT

DB에 원하는 값을 삽입하는 쿼리.

INSERT 사용법

  • INSERT INTO[테이블명] (필드명1, 필드명2, ... ) VALUES(필드값1, 필드값2, ...): [테이블명]에 필드값 1을 필드명 1에, 필드값 2를 필드명 2에 삽입한다. INSERT문을 실행하면 결과에 따라 레코드의 수가 추가된다.

  • INSERT INTO[테이블명] VALUES(필드값1, 필드값2, ... ): [테이블명]에 필드의 순서대로 필드값1, 필드값2를 삽입한다. 테이블 필드의 개수에 맞게 필드값1, 필드값2, ... 가 설정되어야 한다.

3. UPDATE

원하는 조건에 맞는 필드의 값을 수정하는 쿼리.

  • UPDATE [테이블명] SET [필드명1] = [수정할 값] : [테이블명]의 필드명1의 모든 필드를 [수정할 값]으로 수정한다.
  • UPDATE [테이블명] SET [필드명1] = [수정할 값] WHERE [필드명2] = [필드값2]: [테이블명]의 필드명2가 필드값2인 필드명1의 필드를 [수정할 값]으로 수정한다. (SELECT 절과 동일하게 WHERE 절을 사용하여 수정할 값의 조건 설정 가능하다.)
  • UPDATE [테이블명] SET [필드명1] = [수정할 값1], [필드명2] = [수정할 값2] WHERE [필드명2] = [필드값2] AND [필드명3] = [필드값3]]: [테이블명]의 필드명2가 필드값2이고 필드명3이 필드값3인 필드명1과 필드명2를 각각 수정할값1, 수정할값2로 수정한다.

4. DELETE

원하는 조건에 맞는 필드의 값을 삭제하는 쿼리.

  • DELETE FROM [테이블명]: [테이블명]의 모든 데이터를 삭제한다.
  • DELETE FROM [테이블명] WHERE [필드명2] = [필드값2] AND [필드명3] = [필드값3]]: 필드명2가 필드값2이고, 필드명3이 필드값3인 [테이블명]의 데이터를 삭제한다.

ORM


ORM이란?

ORM(Object Relational Mapping, 객체-관계 매핑)

  • 단순하게 표현하자면 객체와 관계와의 설정.
  • 우리가 OOP(Object Oriented Programming)에서 쓰이는 객체라는 개념을 구현한 클래스RDB(Relational DataBase`)에서 쓰이는 데이터인 테이블자동으로 매핑(연결)하는 것을 의미한다.
  • 그러나 클래스와 테이블은 서로가 호환가능성을 두고 만들어진 것이 아니기 때문에 불일치가 발생하는데, 이를 ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결한다.
  • 따라서 ORM을 이용하면 따로 SQL문을 짤 필요없이 객체를 통해 간접적으로 데이터베이스를 조작할 수 있게 된다.

ORM의 장단점

장점
1. 완벽한 객체지향적인 코드
2. 재사용, 유지보수, 리팩토링 용이성
3. DBMS 종속성 하락
4. 별도 SQL을 사용하지 않고 OOP 언어 그대로를 사용할 수 있다.

단점
1. ORM이 모든 것을 해결해줄 수 없다.
2. 속도나 생산성이 저하될 수 있다.


참고 자료


http://www.tcpschool.com/mysql/DB
https://codedragon.tistory.com/3802

https://sosobaba.tistory.com/124
https://hengbokhan.tistory.com/133

http://tcpschool.com/mysql/mysql_intro_relationalDB
https://helloworld-88.tistory.com/18

http://www.incodom.kr/ORM
https://miaow-miaow.tistory.com/46

profile
🚧 https://coji.tistory.com/ 🏠

5개의 댓글

comment-user-thumbnail
2021년 8월 11일

글이 굉장히 읽기 편하게 되어있네요 덕분에 잘 읽었습니다!!

1개의 답글
comment-user-thumbnail
2021년 8월 11일

ORM을 통해 객체 간의 관계를 바탕으로 SQL문을 자동으로 생성하여 불일치를 해결하는 군요 ! 새로운 것을 알아갑니다 ~

1개의 답글
comment-user-thumbnail
2021년 8월 12일

정리가 굿이네용 >ㅁ<

답글 달기