12.26.월(CRUD)

유희선·2022년 12월 26일
0

TIL

목록 보기
20/29

금일 목표
1. CRUD
2. GET, POST, PUT, DELETE


1. SQL & CRUD
1) SQL (Structured Query Language)
-DB와 사람이 소통할 때 사용하는 언어
-언어로 전달되는 SQL 명령 > Query
-기본적인 기능들을 CRUD라 총칭


2. CRUD
1) 정의
-대부분의 컴퓨터 소프트웨어가 가지는 기본적인 데이터 처리 기능
-DB를 사용하기 위한 기초적인 4가지 QUERY 형식
-사용자 인터페이스가 갖추어야 할 기능을 가리키는 용어로 사용
2) 개념

3) 진행 순서
[ D 담는 그릇, table 데이터에 사용 ]
(1) CREATE (테이블 생성)
① 레코드 추가 : INSERT INTO [테이블명] VALUES ([값1],[값2],...);

② 특정 레코드 추가 : INSERT INTO [테이블명]([컬럼명1],[컬럼명2], ...) VALURES([값1],[값2], ...);

③ 저장 : commit, 마지막 저장상태로 돌아가기(실행취소) : ROLLBACK;

(2) READ (조회)
① 모든 레코드 보기 : SELECT * FROM [테이블명];

② 콘솔창의 칸 조절 : COL [항목명(컬럼명)] FOR A[사이즈(정수)];
-실제로 DB의 메모리가 변동되는 것이 아닌 콘솔창의 화면만 조절

③ 모든 레코드의 특정 항목만 보기 : SELECT [항목명1], [항목명2], ... FROM[테이블명]

④ 오름차순/내림차순 정렬 : ORDER BY [항목명][ASC/DESC];
ASC: 오름차순 (ascending) , DESC: 내림차순 (decending)
*예시) 오름차순

(3) 수정 (Update)
① 모든 레코드의 특정 항목 수정 : UPDATE [테이블명] SET [컬럼명] = [수정할 값]

(4) 삭제 (DELETE)
① 모든 레코드 삭제 : DELETE FROM [테이블명];

(5) 특정 조건
① SELECT, UPDATE, DELETE 명령 마지막 부분 + WHERE [컬럼명][조건]

② 문자열의 경우, 특정문자를 가지고 있다는 조건
WHERE [컬럼명] LIKE '[원하는문자]%' -> 원하는 문자로 시작하는 문자열
WHERE [컬럼명] LIKE '%[원하는문자]%' -> 원하는 문자가 중간에 존재하는 문자열
WHERE [컬럼명] LIKE '%[원하는문자]' -> 원하는 문자가 마지막에 존재하는 문자열
③ NULL의 경우를 조건을 넣을 때 : WHERE [컬럼명] IS NULL


4) SQL 기본 문법
-Oracle, MSSQL, MySQL 등에 기본 문법 동일
(다만, 디테일한 부분은 조금 다를 수 있음)

  • '*' > 테이블에 모든 컬럼을 보여줌,
  • 실제 개발 시, 각 테이블의 컬럼을 적어 주는 것이 좋음

(1) SELET
① 개념
② 문법

SELECT *FROM TABLE 

SELECT *FROM TB_BOARD;

(2) INSERT
① 개념
-컬럼 1, 값 1에 각각 1:1로 대응
② 문법

INSERT INTO TABLE (
컬럼 1, 컬럼 2
)VALUES(
값1, 값2);

INSERT INTO TB_BOARD (
NAME, TEL
)VALUES(
'철수', '010-1234-5678');

(3) UPDATE
① 개념
-WHERE 1=1 AND 컬럼=값 사용
-AND 조건에 값이 없는 경우, 전체 컬럼이 update 되는 경우 발생
-update 문의 경우, 절대 WHERE 1=1 사용하지 않는 것을 추천
② 문법

UPDATE TABLE
SET
컬럼='값'
WHERE 컬럼='값'

UPDATE TB_BOARD
SET
NAME='철수'
WHERE NAME='영희'

(4) DELETE
① 개념
-UPDATE문에서 말씀드린 것처럼
DELET문에도 WHERE 1=1의 조건은 사용하지 않는 것을 추천
② 문법

DELETE FROM TABLE
WHERE 컬럼=값 ;

DELETE FROM TB_BOARD
WHERE NAME='철수';

2. GET, POST, PUT, DELETE (* HTTP method 기준)

*해당 내용을 설명하기 전, 알아야할 개념
1) RESTful API
Representational State Transfer의 약자

  • 자원(Resource) : URI
  • 행위(Verb) : HTTP Method
  • 표현 (Representations)
    RESTful API를 지키면서 행위를 전달하는 방법

2) 전체 종류 of HTTP Method

1) GET: 서버로 데이터 취득
2) POST: 서버에 데이터 추가, 작성 등
3) PUT: 서버 데이터 갱신, 작성 등
4) DELETE: 서버 데이터 삭제
5) HEAD: 서버 리소스의 헤더(메타 데이터의 취득)
6) OPTIONS: 리소스가 지원하고 있는 메소드 취득
7) PATCH: 리소스의 일부분 수정
8) CONNECT: 프록시 동작의 터널 접속 변경

PUT 또는 Patch를 활용해서
변경, 업데이트 될 새 정보를 body에 실어보냄
PUT = 정보를 통째로 갈아끼울 때
PATCH = 정보 중 일부를 특정 방식으로 변경할 때


1. GET 방식 [요청]
서버로 정보를 가지고 오는 것
(1) 정의
-요청을 전송할 때 필요한 데이터를 Body에 담지 않고,
쿼리스트링을 통해 전송

(2) 특징
①GET 요청은 캐시 가능

-서버에 리소스를 요청할 때, 웹 캐시가 요청을 가로채 서버로부터 리소스를 다시 다운로드하는 대시 리소스의 복사본 반환
HTTP 헤더에서 cache-control 헤더를 통해 캐시 옵션 지정
②브라우저 히스토리에 남음
③길이 제한이 있음
④중요한 정보를 다루면 안 됨 (보안)

3) 기타
-프론트엔드 개발을 하다보면 정적 컨텐츠가 캐시 되어 변경해도 내용이 바뀌지 않는 경우가 종종 발생

*쿼리스트링
-URL의 끝에 ?와 함께 이름과 값으로 쌍을 이루는 요청 parameter
www.example-url.com/resources?name1=value1&name2=value2

*resource : 사용될 수 있는 어떤 항목
-시스템의 일부를 이루는 하드웨어, 소프트웨어, 또는 데이터의 한 구성요소
-네트워크 리소스 : 네트워크 상태에서 활용 가능한 서버나 프린트
-소프트웨어 리소스 : 프로그렘, 유틸리티, 프로그램 내의 작은 구성요소
-데이터 리소스 : 액세스 할 수 있는 파일이나 데이터베이스 등


2. POST 방식 [요청]
리소스를 생성/업데이트하기 위해 서버에 데이터를 담아서 보낸 것
1) 정의
-리소스를 생성/변경하기 위해 설계
-GET과 달리 전송해야 될 데이터를 HTTP 메세지의 Body에 담아 전송
-POST 요청도 '크롬 개발자 도구, Fiddler' 같은 툴로 요청 내용을 확인할 수 있기 때문에
민감한 데이터의 경우에는 반드시 암호화해 전송해야 함
-POST로 요청을 보낼 때, 요청 헤더의 Content-Type에 요청 데이터의 타입 표시 요망
2) 타입 종류
application/x-www-form-urlencoded, text/plain, multipart/form-data 등
3) 특징
① POST 요청은 캐시되지 않음
② 브라우저 히스토리에 남지 않음
③ 데이터 길이에 제한이 없음


3. GET, POST 차이점
1) 사용목적

GET > 서버의 리소스에서 데이터를 요청할 때
<링크에 데이터의 정보가 보이기 때문에 데이터 유출 위험 존재>
POST > 서버의 리소스를 새로 생성하거나 업데이트 할 때
2) DB 기준으로
GET > SELECT , POST > CREATE
3) 요청에 body 유무
GET > URL 파라미터에 요청하는 데이터를 담아 보내기 때문에 HTTP 메시지에 body가 없음
POST > body에 데이터를 담아 보내기 때문에 당연히 HTTP 메시지에 body 존재
4) 멱등성 (idempotent)
-연산을 여러 번 적용하더라도 결과가 달라지지 않는 성질 의미
GET > 멱등, 리소스를 조회한다는 점에서 여러 번 요청해도 응답 동일
POST > 멱등 X, 리소스를 생로 생성하거나 업데이트할 때 사용되기 때문에 멱등 X


  1. 참고
    1) CRUD
    https://heekng.tistory.com/30
    2) GET,POST
    https://memostack.tistory.com/180

0개의 댓글