25.10.20 8일차 [ SQL 기초 개념 강의_(데이터베이스, 설치, 접속 테스트 SQL 구성)]
Datadesigner2025. 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에 대한 기본적인 설치와 파일을 불러오는 방법, 간단한 명령어 실습 등이 있었다.
파이썬 공부할 때보다 과정을 조금 더 세세하게 보여줄 수 있는 프로그램으로 넘어가서 글을 작성하는데에도 조금 더 재미있게 작성할 수 있었다. 내용이 너무 많아서 정리하는데에도 벅찼어서서...더 들어가면 또 달라지겠지만,
확실히 처음 파이썬을 배우고 언어를 시작할 때보다는 약간 익숙해진 기분이 들어서 조금씩이나마 프로그램이 어떻게 돌아가는지가 이해가 되는것을 느껴 기분이 좋은 하루다.