Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
Tags
- JavaScript
- ES6
- myshortcut
- node.js
- formula
- DTO
- 함수
- JDBC
- OOP
- 부트캠프후기
- Java
- strpos()
- oracle
- Excel
- DOM
- jQuery
- 멀티캠퍼스it부트캠프
- error
- react
- 배열
- dao
- 노션
- explode()
- 오류
- php
- 객체지향
- 현대이지웰java풀스택개발자아카데미6월
- 정규식
- MySQL
- SQL
Archives
- Today
- Total
코딩짜는 일상
[현대이지웰 Java 풀스택 개발자 아카데미 6월] TIL 30 & 31 & 32 & 33일차 - Oracle, Java 본문
반응형
📕 30일 배운 것
- 서브 쿼리
- WHERE절 서브 쿼리
- EXISTS, NOT EXISTS 연산자 사용: 튜플의 존재여부 확인
- NOT EXISTS와 NOT IN의 차이
- ALL 연산자 사용: 모든 결과를 만족하면 참
- ANY, SOME 연산자 사용: 결과중 하나라도 만족하면 참
- EXISTS, NOT EXISTS 연산자 사용: 튜플의 존재여부 확인
- WHERE절 서브 쿼리
- 서브 쿼리 유형
- 스칼라 서브 쿼리
- 인라인 뷰
- 중첩 서브 쿼리
- 오라클 내장 함수
- 수학 함수
- ROUND()
- 문자 함수
- REPLACE(), LENGTH(), LENGTHB(), SUBSTR(), CONCAT(), ||
- 순위 출력 함수
- RANK(), DENSE_RANK(), ROW_NUMBER(), ROWNUM
- 요약정리 함수
- ROLLUP(), CUBE(), GROUPING SETS(), PIVOT()
- 날짜 함수
- CURRENT_DATE, SYSDATE, EXTRACT(), CURRENT_TIMESTAMP, TO_CHAR
- 수학 함수
📙 새로 알게 된 것
- EXISTS()
- 서브쿼리에 반환되는 값이 있는지 확인해주는 연산자
- 이걸 회사 다닐 때 알았으면 어마어마하게 컸던 로그인기록 테이블을 서브쿼리로 넣어서 기간 내 로그인 기록 있는 회원 수 구하는데 좀 편했을까...? 근데 아무리 검색을 해도. AI한테 물어봐도 알려주지 않았어서 실제론 좀 달랐을 수도 있을 듯.
- 테스트해보고 싶어도 이미 늦어버렸어... 다음부턴 쿼리 개선하고 싶으면 연산자 처음부터 끝까지 한 번 훑어보는 것도 좋을 것 같다. 그럼 그중에 상황에 알맞은 게 눈에 띄겠지...
- CONCAT()
- MySQL 쓸 때는 잘 썼는데 오라클에선 문자열 2개밖에 합체 안 해줘서 아쉽다. 대신 ||로 합칠 수 있으니 잘 기억해두자
- ROLLUP(), CUBE(), GROUPING SETS(), PIVOT()
- 데이터 뽑아서 엑셀에 넣고 피벗테이블로 자료 가공해서 매주 기획팀이 줬던 과거가 떠오른다... 이런 함수가 있는 줄 알았다면 뽑아주는 것도 빨랐을거고 더 나아가 자동화할 수 있었을텐데...(PHP에서 엑셀 피벗테이블 만들어 넣어줄 수 있는 방법 없나만 찾아보고 있었다 ㅠ)
- 잊지 말자... 해결법이 잘 안 떠오르면 기본 함수, 연산자, 메서드 등을 처음부터 끝까지 다시 훑어보도록 하자...!💪🔥
📕 31일 배운 것
- 데이터 제어어 (DCL : Data Control Language)
- COMMIT
- ROLLBACK
- GRANT
- REVOKE
- ROLL
- 백업 / 복구
- 전체 단위 백업 / 복구
- 계정 단위 백업 / 복구
- 테이블 단위 백업 / 복구
- SQLPLUS
- 계정 로그인 / 변경
- 쓰레기 테이블 탐색 / 휴지통 삭제
- 백업 / 복구
- JDBC
- JDBC란?
- JDBC 연결 과정
- JAVA에서 JDBC 사용하기
- DB 연결하기
- Connection
- DriverManager
- DB에서 데이터 받거나 수정하기
- Statement
- ResultSet
- SQLException
- DB 연결하기
📙 새로 알게 된 것
- DCL
- ROLLBACK 정도만 알고 있었기에 대부분 새로웠다. MySQL Workbench는 UI로 보여줬기에 그냥 체크만 하면 됐어서 진짜 친절했었구나... 를 깨달았다.🥹
- JDBC
- 과거 회사에선 따로 드라이버를 설치하지 않고도 도메인이랑 계정 정보만 넣으면 바로 DB연결했던 것 같은데... 너무 오래전 일이라 기억이 안 난다😥
- 과거 회사에선 거의 제2의 스크립트창처럼 쿼리를 작성해 데이터를 받았었기에 확실히 간편하긴 했지만 받을 데이터가 많으면 엄청 느렸었다. 같은 쿼리를 가지고도 PHP서버에서 결과를 받을 때와 MySQL Workbench에서 결과를 받을 때가 확연히 차이 났다. 그게 컴파일(최적화) 차이라는 걸 알게 되었다.
📕 32일 배운 것
- JAVA에서 JDBC 사용하기
- DB에서 데이터 받거나 수정하기
- PreparedStatement
- Statement와 PreparedStatement의 차이점
- 연습 문제
- DB에서 데이터 받거나 수정하기
- DAO, DTO를 적용한 DB 접근 예제
📙 새로 알게 된 것
- PreparedStatement
- 사용법 자체는 PHP의 PDO랑 닮았다는 생각을 했다. 아니나 다를까, PDO도 PDO확장 모듈을 통해 SQL쿼리를 컴파일한다는 걸 알게 되었다. 이렇게 또 과거 쓰던 언어와 새로 배우는 언어의 공통점을 찾게 되니까 뭔가.. 쫌 반갑다.😊
- 과거 회사에선 쿠폰 사용내역을 서버에서 받으려 하면 서버 메모리 초과로 계속 뻗어서 자동화를 하지 못했었다. 그래서 그걸 계속 쿼리 최적화를 시도해서 겨우겨우 자동화했던 기억이 났다. 만약 그때 sql_query가 아닌 PDO를 썼다면 쿼리 컴파일로 인해 속도가 더 빨랐을까...? 스칼라 서브 쿼리가 그득하던 기존 쿼리로도 결과를 받을 수 있었을까...?🥲
- DAO, DTO
- 확실히 객체지향이라는 개념은 한 파일 내 모든 로직을 볼 수 있게 하는 것 자체를 많이 경계한다고 느꼈다.
나는 과거에 속도를 우선하느라 임포트를 경계하고 공용 사용 할 함수를 분리하는 정도로만 파일을 분리해 한 파일에서 로직을 다 파악할 수 있게만 만들었다.(당시 팀장님이 임포트 많이 할수록 느리다고 하셨기 때문)
확실히 내 과거 코드에 비해 파일 하나 본다고 모든 로직을 파악할 수 없을 테니 보안면에서 괜찮을지 몰라도 어차피 서버가 털리면 모든 코드를 볼 수 있을 텐데 효용성이 있나? 하는 의문이 든다. - 이건 해커가 어떻게 해킹을 하는지에 대한 개념이 없어서 그런 것 같다. 강사님께 한 번 여쭤보면 좋을 듯.
- 확실히 객체지향이라는 개념은 한 파일 내 모든 로직을 볼 수 있게 하는 것 자체를 많이 경계한다고 느꼈다.
📕 33일 배운 것
- MVC 패턴
- controller
- model
- DTO
- DAO
- view
- LIST
- INSERT
- UPDATE
- DELETE
- 종합 과제
📗 오늘의 회고
- 어떤 식으로 개발해야 할지 모르겠다면 해당 언어의 메서드를 기초부터 쭉~ 훑어보는 것이 때론 힌트가 될 수도 있다.
- 새로운 언어를 배우면서 과거 쓰던 언어와 비교하게 되면 과거 언어에 대해서도 추가로 배우게 되는 것들이 생긴다.
- 전체적인 로직을 하나의 파일에 전부 담으면 읽기엔 편할 수 있으나 보안면에서 불리하다.
📘 내일 할 일
- 로직을 분리하면 어떤 기전으로 인해 보안성이 높다고 판단될 수 있는 건지 강사님께 여쭤보기.
반응형
'TIL' 카테고리의 다른 글
[현대이지웰 Java 풀스택 개발자 아카데미 6월] TIL 7주차 - JDBC를 이용한 JAVA의 데이터베이스 접근(DTO, DAO 도입) (0) | 2025.08.26 |
---|---|
[현대이지웰 Java 풀스택 개발자 아카데미 6월] TIL 6주차 - JAVA 객체지향으로 코드 리팩토링 해보기 (0) | 2025.08.19 |
[현대이지웰 Java 풀스택 개발자 아카데미 6월] TIL 5주차 - JAVA 객체지향 프로그래밍 (5) | 2025.08.12 |
[현대이지웰 Java 풀스택 개발자 아카데미 6월] TIL 27 & 28 & 29일차 - Oracle (3) | 2025.08.12 |
[현대이지웰 Java 풀스택 개발자 아카데미 6월] TIL 4주차 - 깃허브 프로필 꾸미기 (4) | 2025.08.05 |