전체 글 205

[혼공SQL] 혼공단 11기 - 4주차 미션 인증

이번 주는 지원서도 제출하고... 이런 저런 일들로(사실 핑계지만..) 혼공S를 끝까지 미루다가 드디어 했다. 조금은 양심에 찔리긴 하는데...ㅎ 이번 주는 DB의 세가지 핵심 개체..? 중 하나인 뷰에 대해서 학습한다. 어려운 개념은 아니었어서 정리하면서 빠르게 흡수되는 느낌이 좋았다. 내일이면 SQLD 신청도 해야하는데, 다시 마음 다잡고 5주차 미션을 진행하도록 하겠어! 4주차 학습 내용 공유합니다. 2024.01.29 - [CS/DB] - [혼공SQL] 제약 조건 2024.01.29 - [CS/DB] - [혼공SQL] 뷰 4주차 기본 미션 p.226의 market_db의 회원 테이블(member) 생성하고, p.229 데이터 입력한 후 인증하기 4주차 선택 미션 p.271 확인 문제 4번 풀고 ..

CS/DB 2024.01.28

[Spring] @RequestBody와 @RequestParam

프로젝트를 진행하던 중, form-Data와 json을 서버에서 처리하는 방식에 대한 오류를 다루던 중 알게된 @RequestBody와 @RequestParam의 명확한 차이를 정리해보자. @ReqeustBody 조금 쉽게 설명하면 클라이언트가 전송하는 JSON을 받아오기 위해 특화된 어노테이션이라고 이해해도 좋다. 나는 Body에 있는 데이터 중 JSON이 아닌 바이트나 스트링이여도 알아서 되는 줄 알았던 바보같은 생각을 했던 것이다... 그래서 Multipart와 같이 바이트로 전달되는 것들은 파싱할 수 없다. 만약 클라이언트에서 "/nickname" 경로로 POST 요청을 보낸다고 해보자. body에 아래와 같은 JSON 형태를 전송하게 된다면 { "nickname": "dd", "token": "..

Spring 2024.01.22

모각코 3회차(240116)

[백준/BOJ] 14890번 경사로 (자바/Java) https://www.acmicpc.net/problem/14890 14890번: 경사로 첫째 줄에 N (2 ≤ N ≤ 100)과 L (1 ≤ L ≤ N)이 주어진다. 둘째 줄부터 N개의 줄에 지도가 주어진다. 각 칸의 높이는 10보다 작거나 같은 자연수이다. www.acmicpc.net 1. 문제 크기가 N×N인 지도가 있다. 지도의 각 칸에는 그 곳의 높이가 적혀져 있다. 오늘은 이 지도에서 지나갈 수 있는 길이 몇 개 있는지 알아보려고 한다. 길이란 한 행 또는 한 열 전부를 나타내며, 한쪽 끝에서 다른쪽 끝까지 지나가는 것이다. 다음과 같은 N=6인 경우 지도를 살펴보자. 이때, 길은 총 2N개가 있으며, 아래와 같다. 길을 지나갈 수 있으려면..

모각코 2024.01.20

[혼공SQL] 혼공단 11기 - 3주차 미션 인증

생각보다 많은 내용을 배워서 정리할 것도 많았던 3주차.. 그래도 SQL에 대해서 감을 많이 잡은 것 같아서 좋다! 이번 3주차에 진행하면서 정리한 내용들을 링크로 공유합니다! 2024.01.15 - [CS/DB] - [혼공SQL] MySQL의 데이터 형식 2024.01.15 - [CS/DB] - [혼공SQL] 변수의 종류와 사용 2024.01.15 - [CS/DB] - [혼공SQL] 데이터의 형 변환 2024.01.17 - [CS/DB] - [혼공SQL] 두 테이블을 묶는 JOIN 2024.01.17 - [CS/DB] - [혼공SQL] SQL 프로그래밍 3주차 기본 미션 p.195의 확인 문제 4번 풀고 인증하기 정답 : 4 해설: LEFT JOIN을 수행하게 된다면, member 테이블의 모든 값이..

CS/DB 2024.01.17

[혼공SQL] SQL 프로그래밍

스토어드 프로시저 MySQL에서 프로그래밍 기능이 필요할 때 사용하는 데이터베이스 개체를 의미합니다. 스토어드 프로시저의 형식은 아래와 같습니다. DELIMITER $$ CREATE PROCEDURE 스토어드_프로시저_이름() BEGIN -- SQL 프로그래밍 구문들 END $$ DELIMITER ; CALL 스토어드_프로시저_이름(); -- 스토어드 프로시저 호출 여기서 DELIMITER를 사용하는 것을 알 수 있습니다. DELIMITER는 문장을 구분자를 지정하는 키워드입니다. 만약 우리가 스토어드 프로시저에서 문장 구분자를 변경하지 않는다면, 스토어드 프로시저 내에서 작성하는 SQL문이 서버로 끊어져서 전송되게 됩니다. 만약 문장 구분자를 변경하여 진행한다면, 스토어드 프로시저의 전체를 한번에 보낼..

CS/DB 2024.01.17

[혼공SQL] 두 테이블을 묶는 JOIN

JOIN 두 개의 테이블을 묶어서 하나의 결과를 내는 것을 말합니다. 두 개뿐만 아니라 3개, 4개도 가능하지만 2개가 통상적으로 사용됩니다. 예를 들어 회원 테이블에는 회원 이름과 연락처, 주소 정보가 있고 구매 테이블에는 회원이 구매한 물건의 정보가 있다고 해봅시다. 물건 배송을 위해서는 각 물건에 따른 회원의 주소 정보가 필요합니다. 따라서 이러한 경우에 두 테이블을 묶는 JOIN이 필요하게 됩니다. JOIN에는 내부 조인, 외부 조인, 상호 조인, 자체 조인이 있으며 이에 대해서 다뤄보겠습니다. 내부 조인 내부 조인은 두 테이블 사이에 어느 열에 공통된 데이터가 있을 때 사용할 수 있습니다. 또한 내부 조인을 위해서는 두 테이블이 일대다 관계로 연결되어 있어야합니다. 내부 조인의 형식은 아래와 같..

CS/DB 2024.01.17

[혼공SQL] 데이터의 형 변환

데이터의 형변환 데이터베이스의 데이터 타입 중 문자형을 정수형으로 바꾸거나 정수형을 문자형으로 바꾸는 것처럼 데이터의 형을 변경하는 행위를 형 변환이라고 합니다. 형 변환에는 함수를 사용해 직접 데이터의 타입을 변경하는 명시적 형 변환과 별도의 작업 없이 자연스럽게 변환되는 암시적 형 변환이 있습니다. 이 두 가지에 대해서 알아봅시다. 명시적 형 변환 명시적 형 변환에서는 CAST()와 CONVERT() 함수를 사용하여 데이터의 형 변환을 수행할 수 있습니다. 두 함수는 아래와 같이 사용할 수 있습니다. CAST(값 AS 데이터 형식[(길이)]) CONVERT(값, 데이터 형식[(길이)]) 실제 사용되는 경우를 확인해봅시다. SELECT AVC(price) AS '평균 가격' FROM buy; -- 수행..

CS/DB 2024.01.15

[혼공SQL] 변수의 종류와 사용

오늘은 MySQL에서 변수를 사용하는 방법에 대해서 알아봅니다. 사용자 정의 변수 변수의 선언 및 초기화 SQL 문에서 변수는 아래와 같이 선언 및 초기화를 진행할 수 있습니다. SET @변수이름 = 대입값; SELECT @변수이름 := 대입값; SQL에서는 SET을 제외한 나머지에서 등호(=)는 비교연산자로 취급됩니다. 따라서 SELECT에서는 콜론과 등호를 합쳐(:=) 사용하여 변수에 값을 대입해줄 수 있습니다. 변수 호출 SELECT @변수이름; -- 변수 호출 이렇게 변수에 어떤 값이 대입되었는지 출력 결과를 통해서 확인할 수도 있습니다. 변수의 사용 SET @txt = '가수 이름 ==> '; SET @height : 166; SELECT @txt, mem_name FROM member WHER..

CS/DB 2024.01.15

[혼공SQL] MySQL의 데이터 형식

데이터베이스에 값을 저장하기 위해서는 데이터를 저장할 공간이 필요합니다. 하지만 데이터베이스에서 우리가 어떤 값을 입력하냐에 따라서 항상 고정된 크기만큼을 할당하거나, 항상 데이터의 길이를 체크해서 공간을 할당하는 것은 상당히 비효율적으로 보입니다. 따라서 사용자가 데이터베이스의 테이블을 구성할 때, 각 열에 입력할 데이터의 형식을 지정해주어, 데이터를 효율적으로 저장할 수 있습니다. 그 중에서도 MySQL에는 어떤 데이터 형식이 있는지를 알아보겠습니다. 데이터 형식 MySQL에서는 데이터의 형식이 크게 정수형, 문자형, 실수형, 날짜형, 대규모 데이터 전용 형식이 존재합니다. 이에 대해 자세하게 알아봅시다. 정수형 데이터 형식 바이트 수 숫자 범위 TINYINT 1 -128 ~ 127 SMALLINT ..

CS/DB 2024.01.15

[JPA] 변경 감지와 병합

준영속 엔티티 변경 감지와 병합을 이해하기 위해서는 준영속 엔티티를 이해해야 합니다. 준영속 엔티티란 영속 상태였다가 영속 상태를 벗어난 엔티티를 의미합니다. 그래서 JPA가 더이상 관리하지 않는 것을 의미합니다. JPA가 관리하는 엔티티인 영속 엔티티는 JPA가 엔티티의 변경분을 자동 감지하여 하나의 트랜잭션이 종료될 때 자동으로 변경분을 DB에 반영해줍니다. 하지만 준영속 상태는 그러한 관리를 받을 수 없기 때문에 이러한 준영속 상태를 영속 상태로 바꾸는 등의 처리가 필요합니다. 이런 상황을 가정해봅시다. 게시판에 존재하는 글을 수정하는 상황입니다. 해당 글은 DB에 이미 등록되어 있으며, 수정하고자 하는 게시글의 정보들이 함께 서버로 넘어옵니다. 이 때, 서버에서는 어떠한 로직으로 처리해야할까요??..

JPA 2024.01.15