Main Topic: DB, SQL
한 주간 느낀 점
한 주 5일 동안 6시에 일어나는 습관이 몸에 배어든 것 같다. 교육장까지 가고 오는 것에 문제는 없지만 그 버려지는 시간이 아깝다고 느껴진다. 보통 사람이 많아 지하철에서 앉아올 수 없기 때문에 무언가 생산적인 일을 하기는 쉽지 않다. 짧으면 1시간 30분, 길면 2시간인 이동 시간을 보다 효율적으로 사용할 방법을 모색하는 것이 시급하다.
새롭게 배운 것
이번 주는 MariaDB의 설치와 SQL이 중점이었다. 현재 맥북을 사용하고 있는데 윈도우와는 다른 점이 많아 강사님이 많은 도움을 주셨다. MariaDB의 설치와 활용에 대한 몇가지 의문점과 배운 내용 중 중요하다 여기는 부분을 아래에 기술한다.
1. Mac OS에서의 권한 문제
- 문제: '%' 권한을 준 사용자가 데이터베이스에 접근 시 권한 부족으로 접근 거절 발생
- 원인: 한 맥북의 터미널로 접근 시 접근 IP가 localhost로 설정된다. root 계정으로 사용자에게 '%' 권한을 부여해도 터미널로 접근 시에는 '%' 권한이 아닌 'localhost' 권한을 가진 사용자를 찾는다. 따라서 localhost 권한이 없는 사용자는 그보다 상위 권한인 '%' 권한을 가지고 있음에도 접근이 거절된다.
- 해결: 강사님이 확인해 보신 결과, '%' 권한을 가진 사용자가 외부 IP로 접근 시 접근이 가능한 것으로 확인되었다. 연습 시에는 localhost 권한을 부여하여 진행하였다. 따라서 '%' 권한임에도 접근이 불가한 이유는 맥과 윈도우의 운영체제의 차이인 것으로 생각된다.
2. DBeaver에서 workspace 변경 시 변동점
- 문제: workspace 변경 시 connection, .sql 파일, 설정 등이 사라짐
- 원인: 기타 설정들은 workspace로 지정된 폴더에 존재하기 때문에 읽을 폴더를 바꾸면 해당 폴더에도 설정 파일들을 다시 생성해야 함
- 해결: JDBC, connection을 따로 생성
3. Database의 값이 바뀌었을 때
- 누가 이전에 조작했는지에 대해 저장하지 않기 때문에 이력을 알기 위해서는 별도의 테이블로 관리해야 함
- 마찬가지로 시간에 따라 변화하는 값을 추적하기 위해서는 별도의 테이블 관리 필요
4. bind-address에서 0.0.0.0의 의미
- bind-address는 허용 IP의 종류인데 0.0.0.0은 모든 IP를 허용한다는 의미이다. 개발 중에만 사용하고 추후 배포 시에는 반드시 적당한 값으로 설정해 주어야 한다.
5. % 권한과 localhost의 차이
- localhost는 내부에서 접근하는 권한
- % 권한은 외부에서 접근이 가능한 권한
6. AND와 OR의 우선순위
- AND와 OR 중 AND의 우선순위가 더 높다.
7. 상관 서브쿼리의 단점
- 메인쿼리의 각 행마다 서브쿼리가 반복되어 재생되기 때문에 자원 사용이 비효율적이다.
8. 상관 서브쿼리와 일반 별칭의 구별
- 서브쿼리의 내부에 메인쿼리의 별칭이
WHERE 절 혹은 다른 조건절에 들어가면 상관 서브쿼리이다.
9. 인라인뷰 서브쿼리 사용 시 주의점
FROM절의 서브쿼리에서 그룹 함수를 사용한다면 그 칼럼에 반드시 별명을 붙여야 한다.
Keep
강의를 잘 듣고 있다. 초등학생이나 들을 칭찬이지만 지각하지 않고, 집중하고, 졸지 않으려 최대한 노력하며 성실히 수업에 임하고 있다.
Problem
SQL에서 JOIN 과 SUBQUERY 부분이 쉽지 않다. 나름 전공 공부를 할 때 좋아하고 열심히 한 부분인데 문제가 술술 풀리지 않으니 자괴감도 든다. 그리고 이번 주에 PCCE를 경험 삼아 보았는데 정말이지 결과가 처참했다. 너무 안 좋은 일만 있는 것 같은데 이 기분을 잘 넘겨야 앞으로 남은 시간 더 열심히 노력할 수 있을 것이라 생각한다. 무너지지 말자.
Try
데일리 스크럼을 잘 하지 못 하고 있다. 이것도 게으름 때문인데 차주에는 꼭 조금씩이라도 데일리 스크럼을 해내자.