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)
- Starter Line
- 해당 request 가 어떤 action을 의미하는지 정보를 담음
- request target (url) 어떤 곳에 요청하는지를 담음
- Headers
- 해당 request에 대한 추가 정보를 담고 있는 부분
Key:Value
로 되어있다.
- Request Target도 주소. Host 도 주소. 두 개를 합쳐서 보고 서버 주소를 알 수 있음.
- 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)
- Status Line
- Response 의 상태를 간략하게 나타내주는 부분
- 3 부분으로 구성
- HTTP 버전
Status code
: 응답 상태를 나타내는 코드
Status text
: 응답 상태를 간략하게 설명
- Headers
- Response의 Headers와 동일
- Response에서만 사용되는 header 값도 있음
- 예를 들어,
User-Agent
대신에 Server
헤더가 사용
- 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 서버를 만드는 것이 많다.
- 각각 CREATE는
POST
, READ는 GET
, UPDATE는 PUT
, DELETE는 DELETE
에 대응한다고 보는 것이 간단하다.
CRUD : HTTP / SQL ⇒ 직접 만든 HTTP 형식으로 비교
- CREATE(테이블) : POST / CREATE TABLE ⇒ CREATE
- SQL과 비교할 때 데이터 타입이 2개뿐이고, 조건이 획일화됨
- 조건이 NOT NULL 밖에 없으며 id를 따로 정의하지 않고 자동 생성
- CREATE(레코드) : POST / INSERT INTO ⇒ INSERT
- READ : GET / SELECT, FROM, WHERE ⇒ SELECT
- SQL과 비교할 때 SELECT, FROM, WHERE절 없이 Condition, 테이블명만 전달함
- 따라서 다중 조건이나 컬럼명 선택을 못함
- UPDATE : PUT / UPDATE, SET ⇒ UPDATE
- SQL과 비교할 때 큰 차이는 없으나, 다중 조건 등이 불가능
- DELETE(테이블) : DELETE / DROP ⇒ DROP
- DELETE(레코드) : DELETE / DELETE, WHERE ⇒ DELETE
- SQL과 비교할 때 큰 차이는 없으나, 다중 조건 등이 불가능
트랜잭션
트랜잭션 - 해시넷
트랜잭션
이란, DBMS 등에서 더 이상 쪼갤 수 없는 업무 처리의 최소 단위를 말하며, 이 단위 업무가 (에러나 해킹 등으로) 도중에 멈추면, 둘 중 하나를 수행한다.
- 완전히 완료된 경우
커밋
(COMMIT)
- 도중에 오류가 발생한 경우 원래 상태로
롤백
(ROLLBACK)
- 이를 처리하기 위해서는,
구현 방법
- 트랜잭션 처리(SQL 명령 처리) 이전의 DB를 그대로
저장
해두고, 이를 수정하는 것은 도중이 아니라, 연산이 완전히 완료된 후 한번에 파일을 Write
하는 방식으로 하면, 도중에 멈춰도 자동 롤백
된다.
- 함수형 프로그래밍의
순수함수
개념을 활용하는 등 인스턴스 내 수정이 이루어지지 않고 새로운 인스턴스
를 반환하는 형태로도 구현이 가능하겠다.
SQLite3
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)

참고 자료