회사에서 백엔드 개발자로 전향한지 약 2달째 어정쩡한 지식과 ChatGPT로 어찌저찌 일을 해왔지만 기술스택이 불분명한 지금! 데이터베이스와 SQL을 공부하여 기반을 다지는 게 나을 것 같아 <혼자 공부하는 SQL>로 공부를 하려던 참에 혼공학습단을 모집하길래 신청했다!
거두절미하고 이번주 과제는
데이터의 집합
DBMS(Database management system): 데이터베이스를 관리하고 운영하는 소프트웨어
계층형 | 망형 | 관계형 |
---|---|---|
각 계층은 트리 형태를 갖는다. | 하위에 있는 구성원끼리도 연결된 유연한 구조 | 테이블이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열과 행으로 이루어진다. |
처음 구성을 완료한 후에 이를 변경하기가 상당히 까다롭다. 다른 구성원을 찾아가는 것이 비효율적이다. | 프로그래머가 모든 구조를 이해해야만 프로그램 작성이 가능하다. |
이전에 인턴을 할 때 Mysql을 사용했기 때문에 설치는 되어 있다고 생각하고 워크벤치를 켰으나... 바로 뜨는 에러창
아무리 생각해도 맞는 비밀번호를 설정한 것 같은데 계속 test connection에서 실패했다. 그래서 구글링 후 터미널에서 mysql.server start
를 통해 서버를 켜주니 이제는 비밀번호 치는 창까지 나왔고 비밀번호를 입력하자 접속이 안 됐다. ㅎ
그래서 다시 구글링을 통해 비밀번호를 재설정 후 진입 성공!
* 참고한 벨로그(Mac 기준)
테이블의 구조를 미리 설계. 우리가 살고 있는 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정.
스키마(데이터베이스) 만들기
member라는 테이블과 속성 정의
테이블을 만들면 좌측에서 이렇게 볼 수 있다.
member테이블에서 member_name과 member_addr만 조회
과제인 member 테이블에서 member_name이 아이유인 열 조회하기
책의 제일 뒤에 수록되는 '찾아보기'와 비슷한 개념
CREATE INDEX idx_member_name ON member(member_name);
를 통해서 인덱스를 만들어주면 아래처럼 검색을 했을 때 이전의 Full Table Scan과 달리 Non-Unique Key Lookup을 통해 찾습니다.
6장에서 설명한다고 했지만 답답한 건 못 참는 나!
🤔 Full Table Scan vs Non-Unique Key Lookup
- Full Table Scan: 전체 테이블을 순차적으로 스캔하는 방식으로 테이블의 모든 행을 하나씩 검사하여 쿼리 조건에 맞는 데이터를 찾는다.
- Non-Unique Key Lookup: 인덱스를 사용하여 데이터를 검색하는 방식으로 인덱스에 포함된 키 값을 사용하여 해당 키 값을 가진 행을 찾는다.
가상의 테이블. 실제 데이터를 가지고 있지 않으며 진짜 테이블에 링크된 개념
MySQL에서 제공하는 프로그래밍 기능으로 여러 개의 SQL 문을 하나로 묶어서 편리하게 사용할 수 있다