이번 학기는 컴퓨터학과 강의 없이 본 전공으로만 학점을 꽉 채워 바쁘다는 핑계로 코딩 공부를 자꾸 미루고 있다. 잠을 조금이라도 줄여 매일 아침 60분이라도 코딩을 하고, 그날 배운 것을 기록할 계획이다.
2021/10/29 (토)
(1) Java에서 DB로 쿼리문을 전송할 때 JDBC의 Statement나 PreparedStatement 인터페이스를 사용할 수 있다. Statement는 쿼리문에 값이 미리 입력되어 있어야 하는 반면, PreparedStatement는 인수에 대해 '?'라는 placeholder를 활용하여 쿼리문을 정의할 수 있다. 즉, 동일한 SQL문을 특정 값만 바꿔 여러번 실행해야 할 때 PreparedStatement가 더 효율적인 것이다.
Statement와 PreparedStatement의 가장 큰 차이는 '캐시 사용 유무'이다. 쿼리문은 '쿼리 문장 분석 -> 컴파일 -> 실행'의 과정을 거쳐 실행되는데, Statement는 SQL문을 실행할 때마다 세 단계를 모두 거치는 반면, PreparedStatement는 처음 실행될 때만 세 단계를 모두 거친 후 캐시에 담아 재사용된다.
2021/10/30 (일)
(1) Interface - UI, API 복습
(2) Java에서 %d 등의 서식문자를 활용하려면 printf를 사용해야 한다.
(3) Java의 for-each문 = for( type var : iterate ) { }
(4) Java의 break label 문
Java의 break는 가장 가까운 반복문만 종료하기 때문에 중첩된 반복문을 탈출할 수 없다. 중첩 반복문을 탈출하기 위해서는
break 라벨명; 을 사용한다.
(5) MySQL 페이징 쿼리
MySQL에서 페이징 쿼리는 LIMIT, OFFSET을 활용한다. (물론 rownum을 활용할 수도 있다)
- A만큼 행 출력
SELECT * FROM 테이블명 ORDERS LIMIT A;
- B+1 행부터 A만큼 행 출력
SELECT * FROM 테이블명 ORDERS LIMIT A OFFSET B;
※ OFFSET은 index를 타지 않으니 대용량 데이터 조회시에는 LIMIT A, B (단, A+1행부터 B행 출력)
SELECT * FROM 테이블명 ORDERS LIMIT A, B;
- 만약 특정 칼럼을 기준으로 역순으로 출력하고 싶다면
SELECT * FROM 테이블명 ORDER BY 기준칼럼 DESC LIMIT A, B;
2021/10/31 (월)
(1) scalar (스칼라) : 방향을 갖지 않고 크기만 갖는 개념 - 즉, 스칼라값을 구하는 것 = 단일값 구하는 것
(2) JDBC에서 Statement나 PreparedStatement로 쿼리문 실행 후 결과집합 받을 때에는 column의 이름을 받아온다.
그러므로 count, sum, max, min, avg 등의 Aggregate Functions을 활용할 때
SELECT COUNT(id) FROM 테이블명;
의 결과집합 column의 이름은 'COUNT(id)'가 되므로 별칭을 활용하자.
(3) Scanner를 close()하고 다시 사용하려고 할 때 java.util.NoSuchElementException: No line found가 발생한다.
→ 그렇다면 Scanner는 언제, 어떻게 close() 해야 하는 것인가?
(4) 검색 쿼리문
SQL의 검색 쿼리문을 작성할 때 String Operation 인 %와 _를 활용할 수 있다. (단, LIKE 연산자와 함께 사용한다)
%는 '모든 문자'를 의미하고, _ 는 '한 글자'를 의미한다.
※ LIKE 구문은 WHERE 절에서 주로 사용된다.
'나에 대한 기록' 카테고리의 다른 글
[독서 기록] 스프링5 프로그래밍 입문 - 최범균 저 (5) | 2023.01.29 |
---|---|
[기록] 1월 둘째 주 질문 정리 (1) | 2023.01.16 |
[기록] 매일 코딩하기 - 11월 셋째 주 (Servlet 출력-입력 형식, 서블릿 필터, 입력 데이터 배열로 받기) (1) | 2022.11.14 |
[기록] 매일 코딩하기 - 11월 둘째 주 (Servlet 기초) (1) | 2022.11.11 |
[기록] 매일 코딩하기 - 11월 첫째 주(웹 기초, tomcat) (1) | 2022.11.07 |