# query

회원가입 API
글의 목적은 회원가입 기능의 코드에 대해서만 다룬다. 회원가입의 이해를 위해선 crud 에 대한 이해가 필요하다 글의 목적이 crud가 아니므로 간단하게 설명하자면 c - create r - read u - update d - delete 여기서 회원가입은 사용자를 생성하기 위해서 존재하는 기능이기에 create 즉 post에 해당한다 일단 회원가입의 코드를 하나하나 분석해보자 위 코드는 우리가 일반적으로 알고있는 회원가입이 아니고, 그냥 사용자의 비밀번호와 이메일, 이름만 수집하여 데이터 베이스에 저장하는 API 코드다. 이제 코드에 대하여 분석해보자 일단 const로 회원가입 기능 함수를 선언해준다. 이후 화살표 함수로 async (req, res) =>{} 형식으로 함수를 만들어준다 위
CS 25 쿼리 최적화
쿼리 최적화에 대해 설명해주시고 방법에 대해 설명해주세요. 쿼리 최적화(Query Optimization)는 데이터베이스 시스템에서 쿼리를 실행할 때 성능을 최적화하기 위한 프로세스입니다. 쿼리 최적화의 목표는 쿼리를 빠르고 효율적으로 실행하여 데이터베이스 작업을 최적화하는 것입니다. 쿼리 최적화는 대규모 데이터베이스 시스템에서 특히 중요하며, 쿼리의 실행 계획을 최적화하는 데 다음과 같은 방법들을 사용합니다: 인덱스 생성: 데이터베이스에서 쿼리에 자주 사용되는 열(칼럼)에 인덱스를 생성합니다. 인덱스는 데이터를 빠르게 검색할 수 있게 도와주며, 쿼리의 실행 속도를 향상시킵니다. 그러나 인덱스를 생성할 때 추가적인 저장 공간이 필요하며 쓰기 작업의 성능에 영향을 미칠 수 있으므로 적절하게 관리해야 합니다. 올바른 조인 사용: 쿼리에서 조인을 사용할 때 조인 조건을 최적화해야 합니다. 조인 방식을 선택하고 조인 순서를 최적화하여 조인 연산의 비용을 최소화합니다. 부분 결과

자동으로 쿼리 작성을 해주는 langchain
데이터베이스와 상호작용할 때 가장 중요한 부분은 쿼리 작성이다. 올바른 쿼리를 작성하는 것은 데이터 검색의 정확성과 효율성에 큰 영향을 미치기때문인데 자동으로 쿼리를 작성하는 도구는 이 과정을 단순화하고, 비개발자에게도 데이터베이스에 쉽게 접근할 수 있는 기능을 제공한다. 자동 쿼리 작성의 핵심은 사용자의 요구를 정확하게 해석하고, 이를 SQL 쿼리로 변환하는 것인데, 이를 위해 자연어 처리(NLP) 알고리즘, 규칙 기반 시스템, 등을 사용해야한다. 1년전만 하더라도 이것을 하려면 엄청난 작업이 들어간다. 그러나 현재는 langchain으로 아주 간단하게 작업이 가능하다. 먼저 SQL DB에 데이터가 있다. 나의 경우 GCP 의 cloud sql을 사용하였다. > Cloud SQL은 Google Cloud Platform에서 제공하는 완전 관리형 관계형 데이터베이스 서비스로 PostgreSQL, MySQL, SQL Server 등 다양한 데이터베이스 엔진을 지원하며, 클라우드

React-query mutation 함수의 매개변수 타입 에러 (문제 해결)
개요 >react-query의 useMutation 훅을 사용하여 api 호출을 처리하려고 할 때, 에러가 발생하는 것을 발견했다. 이 에러는 mutation 함수의 매개변수에서 발생했다. 에러메세지를 보기 이전에 코드를 살펴보자. 우선, react-query 라이브러리로 api통신을 하기 위해서는 api를 통신하는 함수 코드 react-query 코드 두 가지 주요 부분이 필요하다. 우선, api를 통신하는 함수를 선언하는 코드(1번의 내용)부터 살펴보도록 하자. updateGroupApi라는 이름으로 함수를 하나 만들어 주었다. 이 함수는 그룹 이름을 업데이트하기 위한 api 호출을 수행하는 함수이다. 그룹의 기존 이름, 새 이름, 이메일을 매개변수로 받아 세 개의 파라미터를 하나의 데이터로 묶어서 서버에 전달해 patch 요청을 수행하고, 응답을 반환하거나 오류를 처리한다. 이 부분에는 아무런 문제가 없다. 문제
검색 결과 관리
서론 이 프로젝트의 검색 카테고리는 field 영역과 language 영역으로 나누어져 있다. 간단한 검색창이라면 검색창에 검색어를 입력하여 이런 방법으로 처리를 할텐데 내 프로젝트의 검색 방식은 분야 = [프론트엔드,백엔드], 언어 = [PYTHON] 이렇게 검색 결과가 저장되고 엔티티를 세분화 하여 Project Field_Project  @Query 어노테이션을 이용하면 SQL과 유사한 JPQL 객체지향 쿼리 사용 가능 SQL과 문법은 유사하지만 SQL은 데이터베이스 테이블을 대상으로 쿼리를 수행하고, JPQL은 엔티티 즉, 객체를 대상으로 쿼리를 수행한다는 점에서 차이가 존재 JPQL은 SQL을 추상화해서 사용하기 때문에 특정 데이터베이스 SQL에 의존하지 않는다. 데이터베이스를 변경해도 JPQL의 변경이 필요 없음 > Querydsl JPQL 을 문자열이 아닌 코드로 작성할 수 있도록 도와주는 빌더 API 고정된 SQL문이 아닌 조건에 맞게 동적으로 쿼리 생성 가능 소스코드로 작성하기 때문에 컴파일 시점에 오류를 발견할 수 있음
[SQL] 각 시간대에 사용자들이 얼마나 앱을 사용하였는지에 대한 전체 사용 시간 통계
요구사항 사용자들의 사용시간에 대한 통계 각 시간대에 사용자들이 얼마나 앱을 사용하였는지에 대한 전체 사용 시간 통계를 제공 각 월에 대해 시간당 사용 시간의 총합 (각 시간대에 접근한 사용자들이 얼마나 많은 시간 동안 사용했는지) 표의 형태로 X축: 시간, Y축: 월에 대한 통계 통계 기간을 자유롭게 설정 (예시. 2023-01-15 ~ 2023-03-08) | 월 | 00시 | 01시 | ... | 08시 | 09시 | ... | 23시 | |---------|----|----|-----|-----|-----|-----|-----| | 1월 | 0 | 0 | ... | 320 | 150 | ... | 0 | | ... | 10 | 30 | ... | 20 | 20 | ... | 10 | 3월 | 120 | 30 | ... | 220 | 250 | ... | 110 | 고전적인 월

[Studies] MyBatis Framework
When the scale of an application was small, using JDBC was sufficient for development. However, as the number of internet users exploded and application functionality became more complex, the limitations of developing with traditional JDBC became apparent. When developing with the traditional JDBC approach, not only did developers have to implement numerous repetitive SQL statements, but the SQL queries themselves also became intricate. As a result, naturally, database-related frameworks like M

스프링 데이터JPA
스프링 데이터 JPA 리포지토리 공통 인터페이스 분석 공통 인터페이스 설정 > 스프링부트 사용시 @SpringBootApplication 위치를 지정(해당 패키지와 하위 패키지 인식) 만약 위치가 달라지면 @EnableJpaRepositories 필요 @Repository 애노테이션 생략가능 스프링 데이터 JPA 기반 리포지토리 > JpaRepository 인터페이스 : 공통CRUD 제공 제네릭틴 설정 제네릭 타입 T: 엔티티 ID: 엔티티의 식별자 타입 S: 엔티티와 그 자식 타입 주요메서드 save(S) : 새로운 엔티티는 저장하고 이미 있는 엔티티는 병합 delete(T) : 엔티티 하나를 삭제한다. 내부에서 EntityManager.remove() 호출 findById(ID) : 엔티티 하나를 조회한다. 내부에서 EntityManager.find() 호출 get
sql 사용할때 주의하기
보면 string sql이 있는데, 여기를 아주 잘 보면 where 공백 공백 like부분을 볼 수 있다. 이게 제대로 되지 않으면 systax오류를 뿜는다 따라서 이렇게 할 때는 반드시 공백을 넣어야 하고, 이렇게 하는 이유는 칼럼은 ?로 들어가지 못하기 때문이다.
Spring Boot JPA 적용 2. JpaRepository 사용 심화
안녕하세요 이번 시간에는 JpaRepository 사용법에 대해 조금 더 깊게 알아보는 시간을 갖도록 하겠습니다. 먼저 Jpa 사용 시 FK 설정된 테이블 엔티티를 생성하는 방법에 대해 알아보겠습니다. 아래는 유저 정보와 공지사항 정보를 가지고 있는 UserAnnouncement 테이블의 Entity입니다. 테이블 내의 userID는 User 테이블의 ID와 매핑되며, announcementID는 Announcement 테이블의 ID와 매핑됩니다. FK 설정을 진행함에 있어서 컬럼의 관계를 정의하는 어노테이션은 @ManyToOne, @OneToMany 등의 어노테이션입니다. 해당 어노테이션은 일대다 혹은 다대일 관계를 정의하며 targetEntity에 정의한 엔티티와의 관계를 나타냅니다. 한 유저가 여러 공지사항을 읽을 수 있으며 한 공지사항을 여러 유저가 읽을 수 있기 때문에 UserAnnouncement 테이블 입장에서는 유저와 공지사항 테이블과 다대일 관계가 성립됩니

MYSQL 쿼리문 심화
집계 정렬 가격이 동일할때 이름으로 다시 정렬하려면 price뒤에 , name처럼 작성하면 된다. 서브쿼리 : 단순 컬럼추가가 아니고 새로운 데이터쿼리를 가져올 수 있다. ANSI(미국표준협회)-SQL : 표준 SQL / typeorm이 변환되는 쿼리  values(uuid(), '마우스', '정말 좋은 마우스입니다!!', 15000) ; insert into product (id, name, description, price) values(uuid(), '노트북', '최신 맥북!!', 20000) ; insert into product (id, name, description, price) values(uuid(), '셔츠', '깔끔한 셔
DDL, DML, DQL, DCL, TCL ?
DDL Date Definition Language 데이터베이스 객체를 다루는 언어 트랜잭션(Transaction) 대상이 아니다. (작업을 취소할 수 없다.) 종류 1) CREATE : 생성 2) ALTER : 수정 3) DROP : 삭제 4) TRUNCATE : 삭제(내용만 삭제) DML Data Manipulation Language 데이터(행, Row)를 조작(삽입, 수정, 삭제)하는 언어이다. 트랜잭션 대상이다.(작업이 완료되면 COMMIT, 작업을 취소하려면 ROLLBACK이 필요하다.) 종류 >1) 삽입 : INSERT INTO VALUES >2) 수정 : UPDATE SET WHERE 예시) DELETE FROM 테이블 WHERE 조건식 -지

DATABASE query문제 (230710)
1. 아래의 쿼리를 완성하시오. 사원들의 입사일을 출력하되, 요일까지 함께 출력하는 쿼리문 쿼리문 > 출력 > | | 입사일| > |-|-| > |1 | 1980-12-17 수요일 | > |2 | 1981-02-20 금요일 | > |3 | 1981-02-22 일요일 | > |4 | 1981-04-02 목요일 | > |5 | 1981-09-28 월요일 | > |6 | 1981-05-01 금요일 | > |7 | 1981-06-09 화요일 | > |8 | 1981-11-17 화요일 | > |9 | 1981-09-08 화요일 | > |10 | 1981-12-03 목요일 | > |11 | 1981-12-03 목요일 | > |12 | 1982-01-23 토요일 | 어제 오늘 내일 날짜를 출력 하시오. 쿼리문 > 출력 > | | 어제| 오늘|내일|

TIL#23
아래의 쿼리를 완성하시오. 사원들의 입사일을 출력하되, 요일까지 함께 출력하는 쿼리문 어제 오늘 내일 날짜를 출력 하시오. 9월에 입사한 사원을 출력하는 쿼리문 사원들이 소속되어 있는 부서의 번호를 출력하는 쿼리문 월급이 3000 이상인 사원을 이름 사전순 출력하는 쿼리문 커미션(COMM)을 받지 못하는 사원을 검색하는 쿼리문 이름에 A를 포함하지 않는 사람만 검색하는 쿼리문 주요 쿼리 (많이 쓰는 쿼리) between between은 특정 범위의 값을 조회하는 데 사용되는 키워드입니다. 예를 들어, 다음 쿼리는 age 열의 값이 18과 25 사이인 행을 조회합니다. in in은 특정 값의 집합을 조회하는 데 사용되는 키워드입니다. 예를 들어, 다음 쿼리는 gender 열의 값이 'male' 또는 'female'인 행을 조회합니다. distinct distinct는 중복을 제거하는 키워드입니다. 예

DATABASE oracle (230707)
1.아래의 쿼리를 완성하시오. 부서 번호(DEPTNO)가 20인 사원에 관한 정보만 출력 > 1982년 1월 1일 이후에 입사한 사원을 출력하는 쿼리문 > desc 명령어에 대하여 설명하시오. > desc는 내림차순으로 정렬하는 것이다. 커미션(COMM)이 300 혹은 500 혹은 1400이 아닌 사원 > 커미션(COMM)이 300 혹은 500 혹은 1400인 사원 검색 > 급여가 2000 미만이거나 3000 초과인 사원을 검색하는 쿼리문 > 급여가 2000~3000 사이의 사원을 검색하는 쿼리문 >
Comment, Query Parameter
Comment 기능 확장 Comment CRUD API CommentService CommentController CommentDto CommentEntity CommentRepository API TEST POST GET PUT DELET