1. SQL

1.1 SQL이란
: 관계형 데이터베이스에서 데이터를 다루는데 강력한 언어
- SQL을 사용하여 테이블에서 데이터를 생성, 삽입, 업데이트, 삭제 등을 할 수 있다.
1.2 기본문법
1.2.1 CREATE
: 데이터베이스에 데이터를 삽입, 업데이트 또는 삭제하려면 데이터를 저장할 테이블이 필요한데 이를 만드는 명령문
- CREATE TABLE 문을 사용
- 테이블 이름, 열 및 해당 데이터 유형, 테이블의 제약 조건 또는 인덱스를 정의한다
CREATE TABLE customers(
id INT PRIMARY KEY,
이름 VARCHAR ( 50 ) NOT NULL ,
이메일 VARCHAR ( 50 ) UNIQUE ,
전화 VARCHAR ( 15 )
);
- CREATE TABLE 문 실행시 데이터베이스 시스템 수행 과정
- 테이블이 존재하는지, 테이블을 만들 수 있는 권한이 있는지 확인
- 테이블 데이터와 메타데이터를 저장하기 위해 디스크에 물리적 파일 또는 여러 파일을 만든다
- 메타데이터 => 열 이름, 데이터 유형, 제약 조건, 인덱스 등과 같은 테이블 구조에 대한 정보가 포함
1.2.2 INSERT
: 데이터를 삽입하기 위한 명령어
- 테이블 이름과 각 행의 각 열에 대한 값을 지정
INSERT INTO customers (id, name, email, phone)
VALUES ( 1 , '감자' , 'potato@example.com' , '123-456-7890' );
- INSERT 문을 실행시 데이터베이스 시스템 수행 과정
- 테이블이 존재하는지, 테이블에 삽입할 수 있는 권한이 있는지 확인
- 각 열의 값을 테이블의 데이터 유형 및 제약 조건에 대해 검증
- 디스크에 공간을 할당하고 여기에 새 행을 저장
- 테이블에 연결된 모든 인덱스나 통계를 업데이트해서 새 행을 반영
- 삽입이 성공했는지 여부에 따라 확인 메시지나 오류 메시지를 반환
1.2.3 DELETE
: 필요 없거나 유효하지 않은 테이블에서 일부 데이터를 제거하기 위한 명령어
- 테이블 이름과 삭제할 행을 필터링하는 선택적 조건을 지정
DELETE FROM customers
WHERE name LIKE 'B%';
- 패턴 'B%'와 일치하는 열이 customers있는 테이블 의 모든 행을 삭제
- DELETE 문을 실행시 데이터베이스 시스템 수행 과정
- 테이블이 존재하는지, 테이블을 삭제할 수 있는 권한이 있는지 확인
- 조건(있는 경우)을 찾기 시작하고 해당 조건과 일치하는 행을 찾는다
- 일치하는 행을 제거하고 재사용을 위해 공간을 확보한다.
- 테이블과 연관된 모든 인덱스나 통계를 업데이트해서 삭제된 행을 반영
- 삭제가 성공했는지 여부에 따라 확인 메시지나 오류 메시지가 반환
1.2.4 UPDATE
: 기존 데이터를 새 값으로 업데이트
- 테이블 이름, 업데이트할 열과 새 값, 업데이트할 행을 필터링하는 선택적 조건을 지정
UPDATE customers
SET phone = '206-' || SUBSTR(phone, 5 )
WHERE phone LIKE '123-%' ;
- UPDATE 문을 실행시 데이터베이스 시스템 수행 과정
- 테이블이 존재하는지, 테이블을 업데이트할 수 있는 권한이 있는지 확인
- 조건이 있는 경우 해당 조건과 일치하는 행을 찾는다
- 각 열의 새 값을 테이블의 데이터 유형 및 제약 조건에 대해 검증
- 디스크의 이전 값을 새 값으로 바꾸고 테이블에 연관된 모든 인덱스나 통계를 업데이트하여 변경사항을 반영
- 업데이트가 성공했는지 여부에 따라 확인 메시지나 오류 메시지가 반환
2. HTTP
2.1 HTTP란
: HTTP는 HTML 문서와 같은 리소스들을 가져올 수 있도록 해주는 프로토콜
- 웹에서 이루어지는 모든 데이터 교환의 기초이며, 클라이언트-서버 프로토콜이기도 하다
- 클라이언트-서버 프로토콜 : (보통 웹브라우저인) 수신자 측에 의해 요청이 초기화되는 프로토콜
- 클라이언트와 서버들은 개별적인 메시지 교환에 의해 통신한다
- 보통 브라우저인 클라이언트에 의해 전송되는 메시지를 요청(requests)이라고 부르고, 그에 대해 서버에서 응답으로 전송되는 메시지를 응답(responses)이라고 부른다

2.2 HTTP 메시지

: HTTP 응답 상태 코드는 특정 HTTP 요청이 성공적으로 완료되었는지 여부를 나타냅니다. 응답은 5가지 클래스로 그룹화된다
- 5가지 그룹
- Informational responses (100 – 199)
- Successful responses (200 – 299)
- Redirection messages (300 – 399)
- Client error responses (400 – 499)
- Server error responses (500 – 599)
-
100 Continue
- 이 중간 응답은 클라이언트가 요청을 계속 진행해야 하고, 요청이 이미 완료된 경우 응답을 무시해야 함을 나타냄
-
101 Switching Protocols
- 이 코드는 Upgrade클라이언트의 요청 헤더에 대한 응답으로 전송되며 서버가 전환하는 프로토콜을 나타냄
-
102 Processing
- 이 코드는 서버가 요청을 받고 처리 중이지만 아직 응답이 없음을 나타냄
2.2.2 Successful responses (200 – 299)
- 200 OK
- 요청이 성공했습니다. "성공"의 결과 의미는 HTTP 메서드에 따라 달라짐
- GET: 리소스를 가져와서 메시지 본문에 담아 전송했다
- HEAD: 표현 헤더는 메시지 본문 없이 응답에 포함된다
- PUT또는 POST: 작업 결과를 설명하는 리소스가 메시지 본문에 포함되어 전송된다
- TRACE: 메시지 본문에는 서버가 수신한 요청 메시지가 포함
- 201 Created
- 요청이 성공했고, 그 결과 새로운 리소스가 생성되었다
- 일반적으로 POST요청 또는 일부 PUT요청 후에 전송된 응답이다
2.2.3 Redirection messages (300 – 399)
- 300 Multiple Choices
- 요청에는 두 개 이상의 가능한 응답이 있다.
- 사용자 에이전트 또는 사용자는 그 중 하나를 선택해야 한다
2.2.4 Client error responses (400 – 499)
-
400 Bad Request
- 서버가 클라이언트 오류로 인식되는 사항(예: 잘못된 요청 구문, 잘못된 요청 메시지 프레이밍 또는 사기성 요청 라우팅)으로 인해 요청을 처리할 수 없거나 처리하지 않는다
-
401 Unauthorized
- HTTP 표준은 "인증되지 않음"을 명시하지만, 의미적으로 이 응답은 "인증되지 않음"을 의미
- 클라이언트는 요청된 응답을 받으려면 자신을 인증해야 한다
-
403 Forbidden
- 클라이언트는 콘텐츠에 대한 액세스 권한이 없다
-
404 Not Found
- 서버가 요청한 리소스를 찾을 수 없다
- 브라우저에서 이는 URL이 인식되지 않음을 의미
- API에서 이는 엔드포인트가 유효하지만 리소스 자체가 존재하지 않음을 의미할 수도 있음
2.2.5 Server error responses (500 – 599)
- 500 Internal Server Error
- 서버에서 어떻게 처리해야 할지 모르는 상황이 발생
- 502 Bad Gateway
- 이 오류 응답은 서버가 요청을 처리하는 데 필요한 응답을 얻기 위한 게이트웨이 역할을 했지만 잘못된 응답을 받았음을 나타냄