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 기본 개념
- schema: 설계도, DB에서 data의 관계를 보여주는 청사진(blueprint for your database)
- entities: DB 내 존재하는 정보들의 단위
- table: header, record(data가 담김)로 구성
- 관계형 DB 구현 방법? 테이블 간 고유하게 연결되는 데이터 정보에 기반 하여 테이블 간 관계를 연결
- foreign key: 테이블 간 관계를 잇는, 절대 바뀌지 않는 값
- alias: 테이블이나 테이블 내 열(column)에 임시 이름을 생성하기 위해 사용됨
- sub-query: query문 안에 자리 잡은 또 다른 query문(WHERE 절 안에 위치함)
- join: 2개 이상의 테이블의 행을 합치는 방법
4. MVC
- MVC란? Model View Controller, 소프트웨어가 작동하는 방식에 대한 하나의 패턴
- MVC 형식으로 만들어진 라이브러리나 프레임워크들이 여럿 존재함
- MVC 사용 시 장점: 소프트웨어를 통합적으로 돌리지 않고 각 기능별로 나누어서 프로그래밍 시 정돈되고 의도된 코드를 각자 특정 역할에서 수행해 코드 가독성, 퀄리티 등을 높일 수 있음 이미지 출처: [https://cloudstudying.kr/lectures/235]
- Model: 자신이 data를 가지고 있을 수도 있고, 그렇지 않은 경우 DB에서 data를 가져오는 역할을 함
- View: 유저가 보는 화면의 영역, 유저에 의해 이벤트나 액션 등이 발생함
- Controller: model과 view 중간에서 대화하면서 작동
- 역할1: view에서 일어난 이벤트/액션을 받아서 가공하여 model로 전달
- 역할2: model이 보낸 데이터를 받아서 가공하여 view에게 전달
5. SQL 기본 작성 문법
-
SELECT
- SELECT column1, column2 FROM table_name : 특정 테이블에서 데이터를 불러옴
- SELECT DISTINCTcolumn1, column2 FROM table_name : 겹치지 않는 고유의 데이터만 불러옴
-
WEHRE
- WHERE condition : 조건을 달아서 query를 작성함, SELECT ~ FROM ~ 뒤 WHERE절이 등장
-
AND/OR
- WHERE condition1 AND/OR condition2 AND/OR condition3 ... : and/or 조건 등을 추가
-
ORDER BY
- ORDER BY column1, column2, ... ASC|DESC : query문으로 가공한 데이터를 오름/내림 정렬
-
INSERT INTO
- INSERT INTO table_name (column1, column2, column3, ...)VALUES (value1, value2, value3, ...): 특정 테이블에 데이터를 입력함
-
IS NULL / IS NOT NULL
- WHERE column_name IS NULL/IS NOT NULL : 해당하는 열에서 null 값을 포함/제거함
-
UPDATE
- UPDATE table_name SET column1 = value1, column2=value2, ...WHERE condition : 테이블에서 특정 조건을 가진 값을 수정
-
DELETE
- DELETE FROM table_name WHERE condition : 테이블에서 특정 조건을 가진 값을 삭제
- 전체 테이블 삭제(DELETE FROM table_name)도 가능하나 복구가 불가능하니 주의해야 함
-
COUNT/AVG/SUM
- SELECT COUNT/AVG/SUM (column_name) FROM table_name WHERE condition : 테이블에서 특정 조건을 가진 값들의 개수/평균/총합을 구함
-
LIKE
- WHERE columnName LIKE pattern/wildcards : query 조건으로 특정 패턴을 포함하는 값을 지정 이미지 출처: [https://www.w3schools.com/sql/sql_like.asp]
이미지 출처: [https://www.w3schools.com/sql/sql_wildcards.asp]
-
IN
- WHERE column_name IN (value1, value2, ...) 혹은 WHERE column_name IN (SELECT STATEMENT) : 특정 값이나 구문에 해당하는 값을 추출
-
BETWEEN
- WHERE column_name BETWEEN value1 AND value2 : 값1부터 값2 사이에 위치한 모든 값을 추출
-
ALIAS
- SELECT column_name AS alias_name FROM table_name : 테이블이나 테이블의 특정 열의 이름을 지정
-
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
-
CREATE DATABASE databasename : 데이터베이스를 생성
-
DROP DATABASE databasename : 데이터베이스를 삭제
-
BACKUP DATABASE databasename TO DISK = ' filepath' : 데이터베이스를 파일 경로에 백업
-
CREATE TABLE table_name (column1 datatype, column2 datatype, column3 datatype, ...) : 데이터베이스에서 테이블 생성
-
DROP TABLE table_name : 데이터베이스에서 테이블 삭제