TIL - Database - mySQL & MVC

김수지·2019년 12월 27일
0

TILs

목록 보기
21/39
post-custom-banner

Today What I Learned

Javascript를 배우고 있습니다. 매일 배운 것을 이해한만큼 정리해봅니다.
오늘은 SQL도 배웠습니다.


1. Database란?

  • Database: data를 관리하고 필터하는데 특화된 서버라고 볼 수 있음
  • DB 없이도 in-memory 방식이나 file I/O 방식으로도 data storage는 구현할 수 있으나 각각의 한계로 인해 DB를 사용하는 것이 좋음
    • in-memory 방식의 한계: 서버를 끄고 다시 켜는 과정에서 축적된 data가 모두 사라짐
    • file I/O(file system 등) 방식의 한계: 원하는 data만 빼올 수 없어서 전체 data를 불러서 가공하는 과정으로 인해 서버의 부하가 높아짐

2. SQL이란?

  • Structured Query Language: 구조화 된 쿼리(질의문: 검색 내용) 언어, DB용 프로그래밍 언어
  • query: db에 저장되어 있는 정보를 필터하기 위한 질문

3. SQL 기본 개념

  1. schema: 설계도, DB에서 data의 관계를 보여주는 청사진(blueprint for your database)
  2. entities: DB 내 존재하는 정보들의 단위
  3. table: header, record(data가 담김)로 구성
  4. 관계형 DB 구현 방법? 테이블 간 고유하게 연결되는 데이터 정보에 기반 하여 테이블 간 관계를 연결
  5. foreign key: 테이블 간 관계를 잇는, 절대 바뀌지 않는 값
  6. alias: 테이블이나 테이블 내 열(column)에 임시 이름을 생성하기 위해 사용됨
  7. sub-query: query문 안에 자리 잡은 또 다른 query문(WHERE 절 안에 위치함)
  8. join: 2개 이상의 테이블의 행을 합치는 방법
    • inner join(테이블 a, b의 공통 부분만 포함), left outer join(테이블 a에 해당하는 부분을 포함), right outer join(테이블 b에 해당하는 부분을 포함), full outer join(테이블 a, b에 모든 부분을 포함) 등의 방법이 있음
      image.png이미지 출처: https://www.w3schools.com/sql/sql_join.asp

4. MVC

  • MVC란? Model View Controller, 소프트웨어가 작동하는 방식에 대한 하나의 패턴
  • MVC 형식으로 만들어진 라이브러리나 프레임워크들이 여럿 존재함
  • MVC 사용 시 장점: 소프트웨어를 통합적으로 돌리지 않고 각 기능별로 나누어서 프로그래밍 시 정돈되고 의도된 코드를 각자 특정 역할에서 수행해 코드 가독성, 퀄리티 등을 높일 수 있음 image.png이미지 출처: [https://cloudstudying.kr/lectures/235]
  1. Model: 자신이 data를 가지고 있을 수도 있고, 그렇지 않은 경우 DB에서 data를 가져오는 역할을 함
  2. View: 유저가 보는 화면의 영역, 유저에 의해 이벤트나 액션 등이 발생함
  3. Controller: model과 view 중간에서 대화하면서 작동
    • 역할1: view에서 일어난 이벤트/액션을 받아서 가공하여 model로 전달
    • 역할2: model이 보낸 데이터를 받아서 가공하여 view에게 전달

5. SQL 기본 작성 문법

  1. SELECT

    • SELECT column1, column2 FROM table_name : 특정 테이블에서 데이터를 불러옴
    • SELECT DISTINCTcolumn1, column2 FROM table_name : 겹치지 않는 고유의 데이터만 불러옴
  2. WEHRE

    • WHERE condition : 조건을 달아서 query를 작성함, SELECT ~ FROM ~ 뒤 WHERE절이 등장
  3. AND/OR

    • WHERE condition1 AND/OR condition2 AND/OR condition3 ... : and/or 조건 등을 추가
  4. ORDER BY

    • ORDER BY column1, column2, ... ASC|DESC : query문으로 가공한 데이터를 오름/내림 정렬
  5. INSERT INTO

    • INSERT INTO table_name (column1, column2, column3, ...)VALUES (value1, value2, value3, ...): 특정 테이블에 데이터를 입력함
  6. IS NULL / IS NOT NULL

    • WHERE column_name IS NULL/IS NOT NULL : 해당하는 열에서 null 값을 포함/제거함
  7. UPDATE

    • UPDATE table_name SET column1 = value1, column2=value2, ...WHERE condition : 테이블에서 특정 조건을 가진 값을 수정
  8. DELETE

    • DELETE FROM table_name WHERE condition : 테이블에서 특정 조건을 가진 값을 삭제
    • 전체 테이블 삭제(DELETE FROM table_name)도 가능하나 복구가 불가능하니 주의해야 함
  9. COUNT/AVG/SUM

    • SELECT COUNT/AVG/SUM (column_name) FROM table_name WHERE condition : 테이블에서 특정 조건을 가진 값들의 개수/평균/총합을 구함
  10. LIKE

    • WHERE columnName LIKE pattern/wildcards : query 조건으로 특정 패턴을 포함하는 값을 지정 image.png 이미지 출처: [https://www.w3schools.com/sql/sql_like.asp]
      image.png이미지 출처: [https://www.w3schools.com/sql/sql_wildcards.asp]
  11. IN

    • WHERE column_name IN (value1, value2, ...) 혹은 WHERE column_name IN (SELECT STATEMENT) : 특정 값이나 구문에 해당하는 값을 추출
  12. BETWEEN

    • WHERE column_name BETWEEN value1 AND value2 : 값1부터 값2 사이에 위치한 모든 값을 추출
  13. ALIAS

    • SELECT column_name AS alias_name FROM table_name : 테이블이나 테이블의 특정 열의 이름을 지정
  14. Join : table1과 table2 사이 매치하는 값을 찾아 병합

    • 방식 :
      SELECT column_name(s)
      FROM table1
      INNER JOIN/LEFT JOIN/RIGHT JOIN/FULL JOIN table2
      ON table1.column_name = table2.column_name
  15. CREATE DATABASE databasename : 데이터베이스를 생성

  16. DROP DATABASE databasename : 데이터베이스를 삭제

  17. BACKUP DATABASE databasename TO DISK = ' filepath' : 데이터베이스를 파일 경로에 백업

  18. CREATE TABLE table_name (column1 datatype, column2 datatype, column3 datatype, ...) : 데이터베이스에서 테이블 생성

  19. DROP TABLE table_name : 데이터베이스에서 테이블 삭제

profile
선한 변화와 사회적 가치를 만들고 싶은 체인지 메이커+개발자입니다.
post-custom-banner

0개의 댓글