SQL,Database 9

h2 데이터베이스 스프링에서 테스트코드용으로 인메모리형식으로 사용할때

spring.datasource.url=jdbc:h2:mem:testdb;DB_CLOSE_DELAY=-1;DATABASE_TO_UPPER=falsespring.datasource.driverClassName=org.h2.Driverspring.datasource.username=saspring.datasource.password=spring.jpa.database-platform=org.hibernate.dialect.H2Dialectspring.jpa.hibernate.ddl-auto=createspring.jpa.show-sql=trueapplication.properties 파일을 테스트쪽에도 resources 패키지를 만들어 이런식으로 작성해 넣어준다. spring.datasource.url=jd..

SQL,Database 2025.03.07

H2 Database 웹 콘솔 실행방법(윈도우)

h2 데이터베이스 설치한 폴더 들어가서 bin 폴더 들어감 거기서 h2.bat 실행  2. 그럼 cmd 창과 함께 인터넷창이 뜸주소창의 맨 앞자리 주소만 localhost로 변경  3.JDBC URL에 jdbc:h2:~/test` 라 써있으면 처음엔 그냥 연결하면 됨.(파일에 직접 연결하는 방법)위 방법으로 연결하면 내pc -> 로컬 디스크(C) -> 사용자 -> 사용자명 -> test.mv.db라는 파일이 생성된다. 4.두번째 연결부터는 JDBC URL에 jdbc:h2:tcp://localhost/~/test 라 적고 연결을 한다.(파일 주소에 연결하는 방법)

SQL,Database 2025.02.03

window function, 포맷 함수

각 행의 관계를 정의하기 위한 함수로 그룹 내의 연산을 쉽게 만들어 준다.기본 구조WINDOW_FUNCTION(ARGUMENT) OVER( PARTITION BY 그룹 기준 컬럼 ORDER BY 정렬 기준)WINDOW_FUNCTION : 기능 명을 사용해준다.(SUM,AVG 등등)ARGUMENT : 함수에 따라 작성하거나 생략한다.PARTITION BY : 그룹을 나누기 위한 기준이다. GROUP BY 절과 유사하다.ORDER BY : WINDOW FUNCTION을 적용할 때 정렬 할 컬럼 기준을 적어준다. RANK특정 기준으로 순위를 매겨주는 기능이다.음식 타입별, 음식점별 주문 건수 집계 후 RANK 함수 적용3위까지 조회하고, 음식 타입별, 순위별로 정렬하는 예시 코드SELECT CUISINE_T..

SQL,Database 2024.11.29

mysql에서 사용할 수 없는 값이 있을 때 / Pivot Table처럼 만들기

SELECT RESTAURANT_NAME, AVG(RATING) AS AVG_RATING, AVG(IF(RATING 'Not given', RATING, NULL)) AS AVG_RATING2FROM food_ordersGROUP BY 1평균 값이 다르게 나오는데 그 이유는 Not given 같이 계산할 수 없는 값일땐 mysql에서는 알아서 0으로 처리하기 때문에 평균을 구할때 총합/총 개수 에서 총 개수가 포함되기 때문이고우리가 if문을 사용하여 사용할 수 없는 값을 null 처리 해버리면 아예 없는 데이터 취급이 되기 때문에 평균 구할때 총 개수가 적어져 AVG_RATING2의 값이 더 높게 나온 것이다.  COALESCEselect a.order_id, a.customer_id, ..

SQL,Database 2024.11.28

Database,FIrestore

DATABASE데이터를 저장하고 여러 사람이 관리하는 데이터의 모음이다.데이터베이스를 사용하면 정보를 쉽게 찾고 업데이트할 수 있고, 많은 양의 정보를 효율적으로 관리할 수 있다. 관계형 데이터베이스 (SQL)정리된 정보를 다룰 때 사용은행, 대기업 비관계형 데이터베이스(NoSQL)복잡하거나 유연한 정보를 다룰 때 사용스타트업   Firestore데이터베이스도 원래 프로그램을 다운받아서 컴퓨터에 저장하는 식으로 사용 가능한데 요즘은 클라우드 기반의 데이터베이스들도 생겨나고 있다.구글 클라우드 기반 NoSQL 데이터베이스 // Firebase SDK 라이브러리 가져오기import { initializeApp } from "https://www.gstatic.com/firebasejs/9.22.0/fireb..

SQL,Database 2024.11.27

subquery, JOIN

SUBQUERY여러번의 연산을 해야할 때조건문이 연산결과를 사용해야할 때조건에 쿼리결과를 사용해야할 때 사용한다고 한다.FROM 절 뒤에 괄호로 SELECT FROM을 한번더 감싸는 형식으로 쓴다. select order_id, restaurant_name, if(over_time>=0, over_time, 0) over_timefrom (select order_id, restaurant_name, food_preparation_time-25 over_timefrom food_orders) a 음식 준비시간이 25분이 넘어가면 오버타임으로 설정하고 싶을때서브쿼리없이 FOOD_PREPARATION_TIME-25만 적게 되면 준비시간이 25분 미만인 가게들은 마이너스분이라는 시간이 나와버리니서브쿼리..

SQL,Database 2024.11.26

IF, CASE

IF어떤 조건에 의하여 나타내는 데이터를 변경하고 싶을 때 사용IF (조건, 조건을 충족할 때, 조건을 충족하지 못할 때) select substring(if(email like '%gmail%', replace(email, 'gmail', '@gmail'), email), 10) "이메일 도메인", count(customer_id) "고객 수", avg(age) "평균 연령"from customersgroup by 1글자를 추출하여 보여주는데 안의 조건이 있고 (IF문 시작부터 끝까지. 즉  'IF ~ EMAIL)' 까지가 조건), 시작은 10번째 글자부터, 끝까지 보여주고 (몇글자까지 추출할지 생략 가능한데 시작인 10만 써놓았고 마지막을 적지 않았음 이처럼 생략할 경우에는 ..

SQL,Database 2024.11.25

집계 함수, 범주별 연산(GROUP BY), 정렬(ORDER BY), 정보수정

숫자 연산 예시select food_preparation_time, delivery_time, food_preparation_time + delivery_time as total_timefrom food_orders 이런식으로 컬럼명 + 컬럼명 해도 SUM 함수처럼 나오긴 함.  SUM, AVGselect sum(food_preparation_time) total_food_preparation_time, avg(delivery_time) avg_delivery_timefrom food_ordersSUM(컬럼명)은 컬럼 데이터의 총합을 알려달라는 뜻. SUM함수 안에 컬럼명을 적고 뒤에 원하는 별명을 설정한 모습이렇게 하면 FOOD_PREPARATION_TIME 컬럼의 총합..

SQL,Database 2024.11.22

별명 붙이기, WHERE, 논리연산자

sql이란 데이터베이스와 대화하기 위한 언어이다.query란 sql을 사용하여 데이터베이스에 요청하는 질의를 의미한다. 별명 붙이기SELECT//전부는 *EMAIL AS "E-MAIL", //하이푼 특수기호로 인해 ""사용 AS는 써도되고 안써도 됨NAME "이름", //한글이라 ""사용AGE NA_E //영어와 언더바는 그냥 써도 됨.FROM CUSTOMER WHERE조건을 줄 때 사용 FROM 절 뒤에 옴(필터링)비교연산자 사용 가능한데 같지 않다는 로 표현.ex)  age 21  BETWEENA와 B 사이WHERE ??? BETWEEN ?? AND ??SELECT*FROM customersWHERE age BETWEEN 21 AND 23CUSTOMERS 테이블의 모든 컬럼을 보여줘.조건은 AG..

SQL,Database 2024.11.21