분류 전체보기
-
폼 데이터 주고 받기Back end/SpringBoot 2023. 11. 29. 14:59
{{>layouts/header}} 제목 내용 Submit {{>layouts/footer}} => new 라는 전송폼을 만들어 주고 controller에 전달하기 위해 action값 및 method값 설정 @PostMapping("articles/create") public String createArticle(ArticleForm form){ // DTO의 AriticleForm으로 전달 System.out.println(form.toString()); return""; => getmapping이 아닌 postmapping 값으로 DTO의 폼으로 전달하기, system.out의 form.toString으로 전달 값 잘 전달 되었는지 확인하기 package com.example.fir..
-
뷰 템플릿과 MVC 패턴Back end/SpringBoot 2023. 11. 29. 13:15
- MVC 패턴 (Model-View-Controller): MVC는 소프트웨어 디자인 패턴으로, 소프트웨어를 세 가지 구성 요소로 분리하여 개발하는 방법론입니다. 각 구성 요소는 다음과 같습니다: 1. Model (모델):** 데이터와 비즈니스 로직을 담당합니다. 데이터의 상태를 유지하고, 변경에 따라 뷰와 컨트롤러에 통지합니다. 2. View (뷰):** 사용자 인터페이스와 관련이 있습니다. 모델의 데이터를 표시하고 사용자의 입력을 받아 컨트롤러에 전달합니다. 3. Controller (컨트롤러):** 사용자의 입력을 받아 모델과 뷰를 업데이트합니다. 모델의 상태를 변경하고, 이 변경을 뷰에 알리는 역할을 합니다. 이렇게 구성된 MVC 패턴은 소프트웨어의 유지보수성과 확장성을 높일 수 있습니다. - ..
-
필터링과 서브쿼리(IN.ALL.ANY)DB/Postgresql(DB) 2023. 11. 28. 19:30
쿼리 예시! 더보기 -- 1. 판매량 상위 3개 음료를 다음과 같이 조회하려 한다. 주어진 두 쿼리를 조합하여 이를 구하시오. -- 메인 쿼리 ( 판매량 상위 3개의 음료 정보) SELECT id AS "ID", name AS "음료명" FROM beverages WHERE id IN ( -- 음료 id 별, 판매량 SELECT beverage_id FROM order_details GROUP BY beverage_id ORDER BY SUM(COUNT) DESC LIMIT 3 ) ; -- 음료 id 별, 판매량 -- 판매량 상위 3개 음료의 판매량 SELECT beverage_id FROM order_details GROUP BY beverage_id ORDER BY SUM(COUNT) DESC LIM..
-
서브쿼리DB/Postgresql(DB) 2023. 11. 28. 18:57
더보기 -- 1. 음료(beverages)의 이름 및 가격과 함께, 가장 비싼 음료와의 가격 차이를 조사하려 한다.주어진 두 쿼리를 조합하여 이를 구하시오. -- (SELECT 절 서브쿼리를 사용할 것SELECT -- outter query(main query) -- 음료명,가격,가격 차이 조회 SELECT name AS "음료명", price AS "가격", price - ( -- 가장 비싼 음료의 가격 (단일값 결과 생성, 1x1열만 가능) SELECT -- Inner query(sub query) MAX(price),123 FROM beverages -- 5800원 ) AS "최대 가격과의 차이" FROM beverages ; -- 2. 주문내역(order_details)로부터 주문 별 음료 개수의..
-
그룹필터링 , 정렬, 조회 개수 지정DB/Postgresql(DB) 2023. 11. 28. 15:59
1. HAVING: 분류된 그룹들중 특정 그룹만 가져옴 2. ORDERBY: ASC(오름차순 정렬), DESC (내림차순 정렬) 3. LIMIT: 가져올 레코드를 제한하는 구문 더보기 -- 36000원 이상인 결제 수단 조회! SELECT ptype AS "결제 수단", -- 복습: GROUP BY는 그룹화된 컬럼만 할수 있다. ROUND(AVG(amount),2) AS" 평균 결제 금액" FROM payments GROUP BY ptype HAVING -- 그룹 필터링: 그룹화된 것들을 조건으로 선별! AVG(amount) >= 36000 ; -- 상품 이름과 가격을 기준으로, 누적 판매정보(판매량, 매출)를 조회 SELECT -- 4 products.name AS "상품명", products.pric..
-
그룹화(Group By 와 집계 함수)DB/Postgresql(DB) 2023. 11. 28. 14:00
- Group By 실습 더보기 -- 결제(payments) 테이블을 결제 방법에 따라 분류하고, 각각의 결제횟수를 조회하시오. SELECT ptype AS "결제방법", COUNT(ptype)AS"결제횟수" FROM payments -- 1 GROUP BY ptype -- 2 ; -- 상품(products) 테이블을 보관타입에 따라 분류하고, 각각의 상품 개수와 평균 가격을 조회 하시오. SELECT -- 3 ptype AS "상품 보관 타입", count(ptype) AS "상품 개수", ROUND(AVG(price),-1) AS "평균가격" FROM -- 1 products GROUP BY -- 2 ptype ; -- 사용자(users)와 주문(orders) 테이블을 조인하고, 사용자 닉네임별 배송..
-
JoinDB/Postgresql(DB) 2023. 11. 28. 00:11
출저: 홍팍 (https://www.youtube.com/@hongpark) 이 블로그 기록은 개인 공부용 기록입니다. - INNER JOIN 예시 모음 더보기 1. 예시 사진#1에 달린 모든 댓글내용 과 작성자 닉네임을 조회하시오 SELECT comments.body, -- 댓글 내용 users.nickname -- 작성자 네임 FROM comments Join users on -- users를 붙임 users.id = comments.user_id WHERE comments.photo_id = 1 ; 2. 사진#5의 파일명과 사진 게시자 닉네임을 조회하시오. SELECT photos.filename, users.nickname FROM photos Join users ON users.id = phot..
-
primary key & Foreign KeyDB/Postgresql(DB) 2023. 11. 27. 17:05
1. Primary Key - FK - 코드 정리 더보기 // 회원 조회 SELECT * FROM USERS; -- users 테이블 CREATE TABLE users( id SERIAL PRIMARY KEY, -- PK 선언(SERIAL:자동 생성 타입) nickname VARCHAR(50), email VARCHAR(100) ); -- users 레코드 등록 INSERT INTO users(nickname,email) VALUES ('cloudstudying_kr', 'mail@cloudstudying.kr'), ('hongpark_cs', 'sehongpark@cloudstudying.kr'), ('haesamq', 'haesamq@naver.com') ; -- photos 테이블 생성 CREATE..