CS와 Node.js 11. DBMS, 표준 SQL 문법, JOIN, HTTP Request & Response, TypeScript 리팩토링

박재하·2023년 11월 3일
0

CS와 Node.js

목록 보기
11/12

SQL 표준 문법

표준 SQL 문법

  • SELECT [컬럼명1, 컬럼명2, …] FROM [데이터베이스명].[테이블명]
    • 해당 테이블에서 원하는 컬럼 출력
    • 컬럼명 대신 *를 입력하면 전체 컬럼 출력
  • WHERE [조건식]
    • SELECT ~ FROM과 함께 사용하여 조건에 맞는 레코드만 출력
    • 조건식에 AND, OR 연산자를 사용하면 여러 조건식을 복합적으로 사용 가능
  • GROUP BY [컬럼명]
    • 특정 컬럼에 대해 원하는 집계값을 보여줌.
    • SELECT에 컬럼명과 더불어 SUM(컬럼명)과 같은 함수를 쓸 수 있음.
      • SUM, COUNT, MIN, MAX, AVG, …
  • ORDER BY [컬럼명]
    • ASC(오름차순), DESC(내림차순)으로 정렬해줌.

[ORACLE, MYSQL, SQL] CREATE TABLE 테이블 생성하고 주키(기본키) 지정하기, 테이블생성법, 제약조건 설정(NOT NULL)

  • CREATE TABLE [테이블명] (컬럼명, 데이터타입, 조건)
    • 데이터타입은 주로 다음 중 하나를 사용한다.
      • CHAR (특정 문자열 개수를 지정할 때)
      • VARCHAR (가변 길이의 문자열을 저장할 때)
      • NUMBER (숫자 저장에 사용)
      • DATE (날짜 저장에 사용)
    • 조건은 주로 다음 중 다음 중 하나를 사용한다.
      • NOT NULL (값이 꼭 입력되어야 할 때, NULL 금지)
      • UNIQUE (중복 값 금지)
      • INDEX (인덱스 지정)
      • PRIMARY KEY (기본 키 지정)
CREATE TABLE 테이블이름 (
	컬럼명 데이터타입 조건,
	컬럼명 데이터타입 조건,
	...
	컬럼명 데이터타입 조건
);

[MySQL] CRUD - Create, Select, Insert, Update, Delete

[MS-SQL]기본 (CRUD)쿼리 (CREATE,INSERT,SELECT,UPDATE,DELETE)

  • INSERT INTO 테이블명 (컬럼명) VALUES(데이터)
    • 데이터 레코드 추가
  • DELETE 테이블명 WHERE 조건컬럼 = 조건데이터
    • 조건에 맞는 데이터 삭제
  • UPDATE 테이블 SET 변경할컬럼 = 변경할 데이터 WHERE 조건컬럼 = 조건데이터
    • 조건에 맞는 데이터 변경

HTTP 요청과 응답

HTTP, 요청과 응답

요청 (REQUEST)

  1. Starter Line
    • 해당 request 가 어떤 action을 의미하는지 정보를 담음
    • request target (url) 어떤 곳에 요청하는지를 담음
  2. Headers
    • 해당 request에 대한 추가 정보를 담고 있는 부분
    • Key:Value 로 되어있다.
    • Request Target도 주소. Host 도 주소. 두 개를 합쳐서 보고 서버 주소를 알 수 있음.
  3. Body
    • 데이터가 담겨있는 부분이다.

예시

POST /payment-sync HTTP/1.1

Accept: application/json
Accept-Encoding: gzip, deflate
Connection: keep-alive
Content-Length: 83
Content-Type: application/json
Host: intropython.com
User-Agent: HTTPie/0.9.3

{
    "imp_uid": "imp_1234567890",
    "merchant_uid": "order_id_8237352",
    "status": "paid"
}

응답 (RESPONSE)

  1. Status Line
    • Response 의 상태를 간략하게 나타내주는 부분
    • 3 부분으로 구성
      • HTTP 버전
      • Status code: 응답 상태를 나타내는 코드
      • Status text: 응답 상태를 간략하게 설명
  2. Headers
    • Response의 Headers와 동일
    • Response에서만 사용되는 header 값도 있음
    • 예를 들어, User-Agent 대신에 Server 헤더가 사용
  3. Body
    • Response의 body와 일반적으로 동일
    • 데이터를 전송할 필요가 없을 경우 body가 비어있음

HTTP Method

  • HTTP request가 의도하는 action을 정의
  • GET
    • 요청 입장에서 데이터 가져올 때
    • 이름 그대로 어떠한 데이터를 서버로부터 받아(GET)올 때 주로 사용하는 Method
  • POST
    • 요청 입장에서 데이터를 포스팅할 때
    • 데이터를 생성/수정/삭제 할 때 주로 사용
  • PUT
    • 데이터를 생성 (POST 와 비슷)
    • 주로 UPDATE를 위해 사용
  • DELETE
    • 데이터를 서버에서 삭제 요청할 때

직접 만든 HTTP와 비교

[개발상식] CRUD란?

CRUD

  • HTTP Method와 비교하는 것이 적당하다.
  • 일반적으로 블로그 서비스 등 간단한 DB연동 백엔드를 만들때, CRUD라고 부르는 CREATE, READ, UPDATE, ****DELETE**** 기능을 제공하는 API 서버를 만드는 것이 많다.
  • 각각 CREATEPOST, READGET, UPDATEPUT, DELETEDELETE 에 대응한다고 보는 것이 간단하다.

CRUD : HTTP / SQL ⇒ 직접 만든 HTTP 형식으로 비교

  • CREATE(테이블) : POST / CREATE TABLE ⇒ CREATE
    • SQL과 비교할 때 데이터 타입이 2개뿐이고, 조건이 획일화됨
    • 조건이 NOT NULL 밖에 없으며 id를 따로 정의하지 않고 자동 생성
  • CREATE(레코드) : POST / INSERT INTO ⇒ INSERT
    • SQL과 비교할 때 큰 차이는 없음
  • READ : GET / SELECT, FROM, WHERE ⇒ SELECT
    • SQL과 비교할 때 SELECT, FROM, WHERE절 없이 Condition, 테이블명만 전달함
    • 따라서 다중 조건이나 컬럼명 선택을 못함
  • UPDATE : PUT / UPDATE, SET ⇒ UPDATE
    • SQL과 비교할 때 큰 차이는 없으나, 다중 조건 등이 불가능
  • DELETE(테이블) : DELETE / DROP ⇒ DROP
    • SQL과 비교할 때 큰 차이는 없음
  • DELETE(레코드) : DELETE / DELETE, WHERE ⇒ DELETE
    • SQL과 비교할 때 큰 차이는 없으나, 다중 조건 등이 불가능

트랜잭션

트랜잭션 - 해시넷

  • 트랜잭션이란, DBMS 등에서 더 이상 쪼갤 수 없는 업무 처리의 최소 단위를 말하며, 이 단위 업무가 (에러나 해킹 등으로) 도중에 멈추면, 둘 중 하나를 수행한다.
    • 완전히 완료된 경우 커밋(COMMIT)
    • 도중에 오류가 발생한 경우 원래 상태로 롤백(ROLLBACK)
  • 이를 처리하기 위해서는,

구현 방법

  • 트랜잭션 처리(SQL 명령 처리) 이전의 DB를 그대로 저장해두고, 이를 수정하는 것은 도중이 아니라, 연산이 완전히 완료된 후 한번에 파일을 Write하는 방식으로 하면, 도중에 멈춰도 자동 롤백 된다.
  • 함수형 프로그래밍의 순수함수 개념을 활용하는 등 인스턴스 내 수정이 이루어지지 않고 새로운 인스턴스를 반환하는 형태로도 구현이 가능하겠다.

SQLite3

SQLite 개념/구조/멀티 DB 실사용기

SQLite DB 흐름도

  • SQLITE는 경량화된 DB를 지향하므로 꼭 필요한 것만 있다.
  • 앞서 미션에서 구현한 것 처럼, API 서버와 그에 따른 구문 해석기, 실제 파일을 처리하는 Backend의 총 3단계로 구성되어 있다.
    • API (API 요청 처리 및 응답)
    • Compiler and VM (구문 해석 및 가상화)
    • Backend (파일 시스템)

SELECT & JOIN

SQL 기본 문법: JOIN(INNER, OUTER, CROSS, SELF JOIN)

[MSSQL] 조인 방법 쉽게 정리 (INNER JOIN, OUTER JOIN)

Inner Join

  • 보통 JOIN을 대표하는 INNER JOIN을 기준으로, 문법은 다음과 같다.
    SELECT <열 목록>
    FROM <첫 번째 테이블>
        INNER JOIN <두 번째 테이블>
        ON <조인 조건>
    [WHERE 검색 조건]
    
    #INNER JOIN을 JOIN이라고만 써도 INNER JOIN으로 인식합니다.
  • 이를 구현하려면
    • 서로 다른 두 테이블에서 기존에 구현한 SELECT 함수로 값들을 filter된 배열로 가져온 후
    • 한 배열을 순회하며 검색 조건에 맞는 경우가 있는지를 다른 한 배열을 계속 filter 또는 find로 검색한다.
    • 일치하면 그 값들을 가져와서 object key를 추가해서 생성된 joined object array를리턴하면 된다.
    • 쉽다.

참고 자료

profile
해커 출신 개발자

0개의 댓글