본문 바로가기

MySQL

[MySQL]사용자변수, 지역변수 MySQL에서 변수를 사용할 수 있다. 변수는 사용자변수, 지역변수, 글로별 변수가 있다. 사용자 변수 사용자변수는 사용자가 편의에 맞게 변수를 선언할 수 있게 해준다. 사용자변수를 사용하고자 할 때는 접두사로 @를 붙이고 아래와 같이 사용하면 된다. SET @name = 'Hong kil dong'; SET @name := 'Hong kil dong'; SELECT @name := 'Hong kil dong'; SET 명령문에서는 등호('=') 표시로 변수에 값을 할당할 수 있다. 그러나 MySQL에서 등호는 비교연산자로 사용되는 것이 기본 스펙이기 때문에 ":=" 를 사용하여 값을 할당하는 것이 기본 문법이다. 할당한 사용자변수를 쿼리에서 이용하는 것이 가능하다. SET @fromDay = '2023.. 더보기
[JAVA]순수 JDBC multiQueries 실행 및 결과 받기 RAW 데이터 기반으로 통계를 내기 위해서 DB에 접속을 해야하는데 통계를 위한 SQL 조회를 한 개 쿼리당 한 개의 커넥션을 가져가서 결과를 얻어오는 것은 좋지 않은 방법이다. 원하는 통계SQL의 결과들을 한 번의 커넥션으로 가져오기 위해서 multiQuery를 사용하였다. JAVA의 DB구현기술은 순수한 JDBC 활용, JDBCTemplate, Mybatis, JPA등이 있지만 여기서는 순수 JDBC를 활용하여 multiquery를 사용한 방법을 작성하였다. JDBC 연결 설정 정보 JDBC url을 설정할 때, "allowMultiQueries=true" 값을 설정을 해주어야한다. spring: datasource: localhost: driver-class-name: com.mysql.cj.jdb.. 더보기
[SpringBoot]MySQL 연동 및 JPA 실행을 위한 설정파일 스프링부트 빌드툴 Gradle 프로젝트에 MySQL 연결 의존성 추가 build.gradle 파일의 dependencies 부분에 아래항목을 추가한다. dependencies { implementation 'com.mysql:mysql-connector-j' implementation 'org.springframework.boot:spring-boot-starter-data-jpa' } 참고! 위와 같이 따로 작성할 수도 있지만, 나는 스프링부트 스타터에서 의존성을 추가하여 파일을 다운로드 받았다. DB 및 JPA정보 입력 스프링부트로 애플리케이션 open 시 resource 폴더에 있던 application관련 파일에 필요한 정보를 입력해주어야한다. 이 정보를 입력할 파일은 2가지 중 선택할 수 있다... 더보기
[MySQL]테이블 생성 쿼리 테이블 컬럼에 대한 정보를 보고 싶을 때 용이하다. SELECT ORDINAL_POSITION '필드순번', COLUMN_NAME '필드명', DATA_TYPE '데이터 TYPE', COLUMN_TYPE '데이터 LENGTH', COLUMN_KEY 'KEY', IS_NULLABLE 'NULL값여부', EXTRA '자동여부', COLUMN_DEFAULT '디폴트값', COLUMN_COMMENT '필드설명' FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_SCHEMA = 'hyundai' AND TABLE_NAME = 'finishCalc' ORDER BY TABLE_NAME, ORDINAL_POSITION 더보기
[MySQL]날짜 임시테이블 만들기 30일간의 날짜 임시테이블을 만들어볼 수 있다. select a.Date from ( select curdate() - INTERVAL (a.a + (10 * b.a) + (100 * c.a) + (1000 * d.a) ) DAY as Date from (select 0 as a union all select 1 union all select 2 union all select 3 union all select 4 union all select 5 union all select 6 union all select 7 union all select 8 union all select 9) as a cross join (select 0 as a union all select 1 union all select 2 .. 더보기
[MySQL]누적합계구하기 서비스 운영 중에 운전자의 주행거리를 가지고 일정 금액을 부과해야하는 처리가 필요했다. 그런데 부과해야하는 금액이 만약 100KM이상 주행할 경우에는 더 이상 부과하지 않는다는 비즈니스 사항을 포함하고 있었다. 즉, 'A'라는 사람이 130KM를 탔다면 30km에 대해서는 부과료를 매기지 않는 것이다. 실제로는 A라는 사람이 주행을 10번 했다고 가정하고, 그 중 5번째 주행을 80KM ~ 130KM를 탄다면 80KM부터 100KM까지의 20KM에는 부과료를 내야하고, 6번째부터 주행에는 금액이 부과되지 않는 방식이었다. 위 비즈니스 로직을 반영하기 위해선, 'A'라는 운전자의 주행 건별 누적주행거리와 부과료가 책정되는 거리를 각각 구했어야 했다.(Mission) [테스트 데이터 생성] 주행데이터가 위와.. 더보기
[MySQL]Mac에 MySQL 설치 순서 1.homebrew설치 2.MySQL 설치( homebrew 이용 ) Homebrew 설치 Homebrew 사이트 접속 https://brew.sh/ Install HomeBrew 에 안내되어 있는 명령어를 터미널에서 실행해준다. 위 명령어를 입력하고 다운로드 될 때까지 대기. 설치 완료 여기서 끝이 아니라 Next steps : 에 표기된 명령어를 실행해주어야 한다. 설치된 homebrew의 버전확인 brew --version MySQL 설치 MySQL 설치명령어 입력 brew install mysql 접속 mysql -uroot ..을 시도하였으나 위와 같은 에러가 발생하였다. 서칭을 통해 알아보니 다음과 같이 mysql을 실행하는 명령어가 있다는 것을 확인하였고, 많은 사용자가 겪는 문제인듯 .. 더보기
[MySQL]연령대별 인원 수, 비율 구하기 주민등록번호를 기반한 만 나이를 기준으로 유저의 10대, 20대, 30대, 40대, 50대 인원 수와 비율을 구하는 쿼리이다. 해가 바뀌어 나이는 매번 변하므로 주민등록번호를 가지고 만 나이 값을 구해야했다. 먼저 만 나이 값을 뽑은 것을 기준으로 다음 연령별 구분을 할 수 있기 때문에, 만 나이 구하는 테이블을 전처리한다. age_group - 연령구분 count - 인원 수 % - 비율 SELECT case when age >= 10 and age = 20 and age = 30 and age = 40 and age = 50 and age = 60 and age = 70 and age 더보기