[SQL] 혼공S 데이터베이스와 SQL

Seri·2024년 7월 7일
1

서론

회사에서 백엔드 개발자로 전향한지 약 2달째 어정쩡한 지식과 ChatGPT로 어찌저찌 일을 해왔지만 기술스택이 불분명한 지금! 데이터베이스와 SQL을 공부하여 기반을 다지는 게 나을 것 같아 <혼자 공부하는 SQL>로 공부를 하려던 참에 혼공학습단을 모집하길래 신청했다!

거두절미하고 이번주 과제는


데이터베이스(Database)

데이터의 집합
DBMS(Database management system): 데이터베이스를 관리하고 운영하는 소프트웨어

계층형망형관계형
각 계층은 트리 형태를 갖는다.하위에 있는 구성원끼리도 연결된 유연한 구조테이블이라는 최소 단위로 구성되며, 이 테이블은 하나 이상의 열과 행으로 이루어진다.
처음 구성을 완료한 후에 이를 변경하기가 상당히 까다롭다. 다른 구성원을 찾아가는 것이 비효율적이다.프로그래머가 모든 구조를 이해해야만 프로그램 작성이 가능하다.

Mysql 설치하기

이전에 인턴을 할 때 Mysql을 사용했기 때문에 설치는 되어 있다고 생각하고 워크벤치를 켰으나... 바로 뜨는 에러창

아무리 생각해도 맞는 비밀번호를 설정한 것 같은데 계속 test connection에서 실패했다. 그래서 구글링 후 터미널에서 mysql.server start를 통해 서버를 켜주니 이제는 비밀번호 치는 창까지 나왔고 비밀번호를 입력하자 접속이 안 됐다. ㅎ
그래서 다시 구글링을 통해 비밀번호를 재설정 후 진입 성공!
* 참고한 벨로그(Mac 기준)


데이터베이스 모델링

테이블의 구조를 미리 설계. 우리가 살고 있는 세상에서 사용되는 사물이나 작업을 DBMS의 데이터베이스 개체로 옮기기 위한 과정.

  • 프로젝트: 현실 세계에서 일어나는 업무를 컴퓨터 시스템으로 옮겨놓는 과정. 대규모 소프트웨어를 작성하기 위한 전체 과정
  • 기본 키(Primary Key, PK): 각 행을 구분하는 유일한 열. 기본키는 중복되어서는 안 되며, 비어 있어서도 안된다.


스키마(데이터베이스) 만들기

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: 인덱스를 사용하여 데이터를 검색하는 방식으로 인덱스에 포함된 키 값을 사용하여 해당 키 값을 가진 행을 찾는다.

가상의 테이블. 실제 데이터를 가지고 있지 않으며 진짜 테이블에 링크된 개념

  • 보안에 도움이 된다
  • 긴 SQL문을 간략하게 만들 수 있다

스토어드 프로시저

MySQL에서 제공하는 프로그래밍 기능으로 여러 개의 SQL 문을 하나로 묶어서 편리하게 사용할 수 있다

  • DELIMITERL 스토어드 프로시저를 묶어주는 예약어
  • CALL: 스토어드 프로시저를 호출하는 예약어
profile
🎤 📷 ❄️ 🌊

0개의 댓글