
[MySQL] SQL 문제: 즐겨찾기가 가장 많은 식당 정보 출력하기 (IN 활용)
2022. 12. 10. 20:06
DB/SQL Study
문제 문제 링크: https://school.programmers.co.kr/learn/courses/30/lessons/131123 답안코드 더보기 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO WHERE (FOOD_TYPE, FAVORITES) IN ( SELECT FOOD_TYPE, MAX(FAVORITES) AS FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE ) ORDER BY FOOD_TYPE DESC 시행착오 SELECT FOOD_TYPE, REST_ID, REST_NAME, FAVORITES FROM REST_INFO GROUP BY FOOD_TYPE ORDER BY FAVORITES DESC ..

[MySQL] HAVING vs WHERE
2022. 12. 10. 15:43
DB/MySQL
HAVING SELECT 이후에 조건을 적용한다. SELECT * FROM ONLINE_SALE HAVING SALES_DATE < NOW() 위 쿼리문을 해석하면, 조건 없이 모든 데이터를 가져온 뒤에 그 중에서 HAVING 조건에 맞는 것만 필터링 해 보여준다. 단, 테이블에 컬럼이 있어도 SELECT문으로 조회하지 않은 컬럼에는 HAVING을 사용할 수 없다. 보통 GROUP BY 와 함께 사용한다. https://www.mysqltutorial.org/mysql-having.aspx MySQL HAVING In this tutorial, you will learn how to use MySQL HAVING clause to specify a filter condition for groups of ..

[DB] User 테이블(Entity) 생성 오류
2022. 11. 19. 22:49
DB
현상 & 원인 H2 데이터베이스를 사용해서 User 엔티티를 생성했으나 위 오류 발생. 알아보니 예약어를 테이블 명으로 설정했을 때 해당 오류가 발생한다고 한다. User가 예약어라고..? 테스트 해보니 mysql 에서는 아무 문제 없이 잘 된다. H2 Database 공식문서를 보자.. 참고링크: https://www.h2database.com/html/advanced.html#keywords 있다. 예약어에 User가. 2.1.212 버전부터 생겼다고 한다. 현재 나는 2.1.214 버전을 사용중이니 예약어와 겹쳐 위 에러가 발생한 것이다. 해결 두 가지가 있다. 첫 째는 깔끔하게 테이블 이름을 바꿔주는 것 (@Table(name = "Users")) 두 번째로는 아래처럼 url에 NON_KEYWOR..

[MySQL] 윈도우 명령프롬프트로 mysql 접속하기
2022. 9. 28. 11:19
DB
윈도우 명령프롬프트로 mysql 명령어를 이용해 db에 접속하려면 환경변수 설정이 되어야 한다. 그동안 귀찮아서 MySQL 커맨더로 접속했는데, 자꾸만 신경이 쓰여서 이참에 환경변수 값을 설정하기로 했다. 고급 시스템 설정 보기 (윈도우 11 기준) -> 환경변수로 들어간다. Path 더블클릭 -> 새로만들기 -> MySQL 혹은 MariaDB의 bin 폴더 경로를 입력한다. 이후 확인을 눌러 창을 닫고 명령 프롬프트에서 접속해보면 잘 될 것이다. (이미 cmd 창이 열려있다면 닫은 뒤 다시 실행해야 적용된다.)

[DB] 트랜잭션의 ACID 특성과 격리 레벨(isolation level)
2022. 8. 7. 20:52
DB
트랜잭션 Atomic (원자성) 모든 작업이 실행되거나 모두 실행되지 않아야 한다. ex) 송금 과정에서 중간에 오류가 날 수 있으므로 A계좌의 잔액이 줄어드는 것과 B계좌의 잔액이 늘어나는 것은 모두 실행되거나 모두 실패해야 한다. Consistency (일관성) 모든 트랜잭션이 종료되고 데이터를 저장하는 시점에 DB의 제약조건을 모두 지키고 있는 상태여야 한다. 위반하는 트랜잭션은 중단된다. Isolation (고립성) 각 트랜잭션은 다른 트랜잭션과 독립적으로 동작해야한다. 격리성 레벨은 READ_UNCOMMITTED > READ_COMMITTED > REPEATABLE_READ > SERIALIZABLE 순서로 성능은 떨어지고 고립성은 증가한다. READ_UNCOMMITTED : 처리중인 트랜잭션의..