ASAC-SK플래닛 T아카데미 데이터 엔지니어

25.10.20 8일차 [ SQL 기초 개념 강의_(데이터베이스, 설치, 접속 테스트 SQL 구성)]

Datadesigner 2025. 10. 20. 17:50

오늘은 남은 파이썬 파트의 간단한 정리를 마치고 데이터베이스 파트를 시작했다.

 

과제로 파이썬으로 1 ~ 100 까지의 숫자 맞추기 게임을 완성해오는게 있었는데 

 

게임 제작 과정과 리뷰는 다른 게시글로 따로 작성하겠다.

 

먼저 데이터베이스란 다양한 데이터를 체계적으로 모아놓은 장소라는 의미이고 이를 다루는 언어가 바로 SQL이다.

 

복습에 들어가겠다.


  • 데이터 베이스등 라인업
    • 종류
      • 데이터베이스
      • 데이터 웨어하우스
      • 데이터 마트
    • 다른 종류
      • 데이터 레이크
      • 데이터 레이크 하우스 
다양한 종류와 용도, 기술 등을 한 눈에 알기쉽게 정리한 것이다.

 

 

  • 설치
    • 로컬 PC
      • 개발 PC에 설치
        • 무료, 유료버전 존재
        • 외부 접속 (ip필요함)
      • os레벨에 설치 (일반적)
      • docker 기반 위에 컨테이너로 설치
        • os에 영향 x
        • docker hub를 통해 데이터를 포함한 DB이미지 저장 -> 잘 안함
    • 클라우드 
      • AWS, Azure, Google Cloud
        • 빌려쓴다 -> 어디서든 접근 가능
      • AWS
        • RDS 서비스
          • 전용 사용
          • EC2 서비스에 개별 설치로 사용
  • docker 설치
    • mysql 컨테이너 설치
    • 명령어(CLI)는 제공되는것 사용

docker run --name mysql -e MYSQL_ROOT_PASSWORD=**** -p 3306:3306 -d mysql:latest --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci

docker 기반 mysql설치 명령어이다. 위 이미지는 파트별 설명 / 패스워드는 혹시몰라 ****처리 하였다. 아무거나 쓰면 된다

  • 참고
    • 이미지 : os, s/w 등 하나의 형태로 컨테이너가 될 수 있는 파일로 저장된형태.
      • 오피셜 마크 (오리지널 회사 제공)
        • 오라클 => 오라클, mysql
        • 신뢰할 수 있다.
      • 개인이 생성한 이미지
        • 원본 오리지널 이미지 => 커스터마이즈하여 올린 이미지
        • 경우에 따라 해킹 주의
      • 도커 허브에서 다운로드 가능
    • 이미지를 기반 실제 구동되는 서비스 : 컨테이너
    • 인바운드 : 외부에서 내부로 접근(엑세스)시 
    • 아웃바운드 : 내부에서 외부로 접근
  • 접속 테스트
    • 디비가 설치된 로컬
      • docker > container > mysql > name:mysql 클릭 > exec
      • show databases;
        • docker에서 데이터베이스를 모두 보여달라는 명령어
          • # docker와 mysql은 문장이 끝날때 ; ( 세미콜론 ) 을 표기해준다
    • 원격
      • 터미널 or client tool(GUI)
        • client tool(GUI)
          • mysql 워크벤치 (오피셜 제공)
          • 하이디 sql(경량, 한글화가 잘 되어있어 수업시 사용 예정)
            • 포터블 버전을 사용
            • 압축 해제 > exe파일 실행 > 세션 관리자에 추가
              • docker 세션명
              • ip = 127.0.0.1
              • 사용자 = root
              • 비밀번호 = ****
              • 작성 후 저장 > 열기 > client 화면 오픈 (원격 접속 ok)
    • vs code(IDE)의 extension에서 설치 가능

 

1. docker에서 container > mysql 클릭

 

2. mysql > exec > mysql -u root -p 입력

 

3. 패스워드 입력 > 정상 처리 확인
4. show databases; 입력 후 표기, 현재는 제공받은 데이터를 불러온 상태라서 t1 데이터베이스가 따로 표기된다.
  • 하이디 sql(경량, 한글화가 잘 되어있어 수업시 사용 예정)
    • 포터블 버전을 사용
    • 압축 해제 > exe파일 실행 > 세션 관리자에 추가
      • docker 세션명
      • ip = 127.0.0.1
      • 사용자 = root
      • 비밀번호 = ****
      • 작성 후 저장 > 열기 > client 화면 오픈 (원격 접속 ok)
하이디sql을 실행하면 나오는 화면이다. 데이터베이스는 제공받은 파일을 반영하여 보시는 화면과는 다를 수 있다.
  • 데이터 밀어넣기 ( 일종의 복원 )
    • 파일 > sql파일 실행 > 바로 실행 > sql_test.sql
      • t1 디비 생성
        • 테이블 7개 생성됨
        • 데이터 10만개 추가됨
          • city table
            • 전세계 국가별 도시 / 구역 / 인구 수등 
          • country table
            • 국가 정보 면적 / 국가명 등등
          • countrylanguage table
            • 국가별 언어에 관련된 정보 표기 테이블
1. 파일탭에서 SQL 파일 실행 후 t1 데이터 베이스 불러오기

 

SQL 구성
  • Structured Query Language
    • 구조화된 질의 언어 => 얘도 랭귀지 프로그래밍 언어임
    • 데이터베이스와 통신(대화)를 수행하는 언어
  • 구성
    • SQL = DQL + DDL + DCL(or TCL) + DML
      • 카테고리상 4개의 서브 언어로 구성
      • 통상 대소문자 구분 X
      • 약자
        • Data XXX Language
        • Query, Definition, Control, Mainqulation 
  • DQL 
    • Data Query Language 
      • 데이터베이스로부터 원하는 데이터를 가져오는(추출 / 획득)쿼리
      • 데이터 질의어
      • SQL 
        • select or SELECT : 데이터 획득 -> SQL은 대소문자를 구분하지 않음
        • show : 메타 정보 획득
    • show
      • # 데이터베이스 목룍 출력, 어떤 디비가 있는지 확인
      • SHOW DATABASES;
 
1. 쿼리 탭에서 새 쿼리 탭 입력 후 SHOW DATABASES; 입력

 

2. 하단부에 파일의 데이터베이스값이 추가된 것을 확인
  • use 데이터베이스명
    • 사용할 데이터베이스 지정
    • 이후 명시적 변경이 없으면 해당 디비만 사용
    • # 키워드(혹은 예약어)와 동일한 명칭 사용시 ' xxx ' 로 구분지어주기
3. use t1;으로 t1데이터베이스를 사용하겠다 선언
  • show tables;
    • 현재 사용 디비 기준 소속된 테이블 목록 출력
    • show tables;
4. show tables; 입력 후 데이터베이스의 테이블 리스트가 출력됨
  • desc (or dascrib) 테이블명
    • 특정 테이블 상세정보 출력
    • desc city;
5. desc city; 입력 후 테이블 상세 정보가 출력되는것을 확인

번외
테이블 상세 정보를 복사하고싶다면

터미널(cmd)에서 mysql > uset1; 으로 설정후 desc city;를 똑같이 입력하면 복사할 수 있다. 일맥상통한다는것을 알 수 있음.
  • select
    • 특정 테이블에서 필요한 데이터를 가져오는 (추출/획득)구문
    • 가장 많이 사용함
    • [ . . . ] 생략 가능함
    •  
SELECT; select_express ( 조회 결과로 받는 내용 (컬럼, 함수 ,.....)
  [FROM table_reference] -> 데이터 출처
  [WHERE condition] -> 1차 조건
  [GROUP BY {col_name | express | potion }] -> 집계 (범주형 데이터)
  [HAVING condition] -> 2차 조건
  [ORDER BY 오름차순 | 내림차순(n개 나열 가능)] -> 정렬
  [LIMIT [시작], 끝 ] -> 제한

 

  • select ~ FROM
    • 특정 테이블로부터 데이터를 추출, 획득하는 쿼리
    • 가장 기본 조회 쿼리
6. select 'name' from city; 입력 시

 

7. select 'name' , 'population' from city; 입력 시


파이썬과 같이 as를 사용하여 별칭을 부여하여 사용할 수도 있다.

# city 테이블의 모든(*) 데이터를 가져오시오
SELECT * FROM city;
# (4079, 5) <= 데이터 shape (raws, cols)
# *(와일드카드)는 위험한 표현입니다. 보통은 데이터에 렉이 걸릴수 있음
# *는 배제, 필요한 컬럼만 나열
SELECT * 
FROM city;

# 특정 컬럼 1개에 대한 데이터만 추출
# city 테이블의 name 컬럼만 추출
# ` ` 백팁 표현=> 은 예약어 중복 사용 대비
select `name` 
from city;

# 특정 컬럼 2개에 대한 데이터 추출
# `컬럼명`, `컬럼명`=> 필요한 만큼 , 를 구분자로 나열
select `name`, `population`
from city;

# 컬럼명이 길거나 의미가 애매하면 
# 별칭을 부여하여 결과셋을 재구성 가능
# as 별칭
select `name`, `population` AS popu
from city; 

한번 더 복습

 

금일의 진도는 여기까지였고 추후 DQL에서 추가할 언어가 더 있기 때문에 이어서 작성하겠다.


오늘은 sql에 대한 기본적인 설치와 파일을 불러오는 방법, 간단한 명령어 실습 등이 있었다.

파이썬 공부할 때보다 과정을 조금 더 세세하게 보여줄 수 있는 프로그램으로 넘어가서 글을 작성하는데에도 조금 더 재미있게 작성할 수 있었다. 내용이 너무 많아서 정리하는데에도 벅찼어서서...더 들어가면 또 달라지겠지만,

 

확실히 처음 파이썬을 배우고 언어를 시작할 때보다는 약간 익숙해진 기분이 들어서 조금씩이나마 프로그램이 어떻게 돌아가는지가 이해가 되는것을 느껴 기분이 좋은 하루다.

조금 더 컴퓨터적으로 뇌를 바꿔야한다.

 

 

오늘은 학원 사람들이랑 아이스브레이킹을 위해서 회식이 있다고 한다.

치킨 먹는다는데 맛있다면 후기 남기겠다.

sk플래닛 t아카데미 수강하면 회식도 맛있는곳에서 한다는 정보도 도움이 될 수 있으니까?