5.28
SQL File
SQL File 실행1
- 파일을 실행할 데이터베이스에 접속
- sql_ws mysql -u root -p zerobase(db이름)
- sql flie 실행
SQL File 실행2(외부에서 바로 실행)
- sql_ws mysql -u root -p zerobase(db이름 < test02.sql
database Backup

- zerobase batabase backup
mysqldump -u root -p zerobase > zerobase.sql
git
database restore
- 데이터베이스를 백업한 SQL File 을 실행하여 그 시점으로 복구하거나 이전 할 수 있다.
(SQL File 을 실행하는 방법과 동일함)
- AWS RDS (database-1) 서비스가 사용 가능한 상태에서 접속
- sql_ws mysql -h "엔드포인트" -P 3306 -u admin -p비밀번호
-
백업 할 데이터베이스로 이동: use zerobase
-
AWS RDS의 zerobase Database 복원
Table Backup
- Local Database에서 테이블 백업
- mysqldump -u root -p zerobase 테이블이름 > 테이블이름.sql
Table Restore
- Table 을 백업한 SQL File 을 실행하여, 해당 테이블을 복구하거나 이전할 수 있다.
(SQL File 을 실행하는 방법과 동일함)
- source 테이블이름.sqlTablke Schema Backup

5.29
Python with MySQL
0. 실행 전 준비(mysql 사용할 때 꼭 실행해야함!)
import mysql.connector
1. Create Connection

Local Database 연결

Local MySQL의 zerobase에 연결

AWS RDS(database-1) 연결

AWS RDS(database-1) zerobase에 연결

close Database
- local.close()
- remote.close()
2. Execute SQL
실행 전 준비
import mysql.connector
Execute SQL 예제
-
테이블 생성

-
테이블 삭제

Execute SQL File 예제
- test03.sql 생성 및 실행

Execute SQL File 예제2
- SQL File 내에 Query가 여러개 존재하는 경우 multi = True 옵션 주기
- test04.sql 생성

Fetch All 예제
- celeb 테이블 조회(읽어올 양이 많은 경우 buffered=True)


Python with CSV
- csv에 있는 데이터를 python으로 insert
police station.csv를 Pandas로 읽어오기
실행 전 준비
import pandas as ad
파일 실행

zerobase(데이터베이스)에 연결

insert문 만들기

데이터 입력
- commit()은 database에 적용하기 위한 명령

결과 확인

검색결과를 pandas로 읽기

Python with CSV 예제
- crime_station 테이블에 2020_crime.csv 를 입력하는 코드를 작성
AWS RDS에서 접속

2020_crime.csv 데이터(encoding="euc-kr") 읽어오기

insert 쿼리 작성

데이터를 crime_status 테이블에 insert

crime_status 테이블의 데이터 조회

조회한 결과를 pandas로 변환해서 확인

Primary key
• 테이블의 각 레코드를 식별
• 중복되지 않은 고유값을 포함
• NULL 값을 포함할 수 없음
• 테이블 당 하나의 기본키를 가짐
Primary key 생성
-
primary key (column 값)
-
ex1 하나의 칼럼을 기본키로 설정

-
ex2 여러개의 칼럼을 기본키로 설정

Primary key 삭제
Primary key 추가
Foreign key
한 테이블을 다른 테이블과 연결해주는 역할이며,
참조되는 테이블의 항목은 그 테이블의 기본키 (혹은 단일값)
Foreign key 생성
constraint 이름 foreign key column명 references 테이블 명
-
ex1. constraint 이름 설정

-
ex2. constraint
이름 설정 안하는 경우(자동생성 됨)

자동 생성된 constraint 확인
show create table 테이블명
- ex2. job 테이블 확인

Foreign key 삭제
alter table 테이블명 drop foreign key constraint명
- ex1.

Foreign key 추가
alter table 테이블명 add foreign key (column명) references 테이블명(column명);
- ex1.

5.31
Aggregate Functions(집계함수)

count
기본 형태
- select count(*) from 테이블명;
- select count(distinct column명) from 테이블명;
cf. distinct: 중복 제거해주는 역할
sum
기본 형태
avg
기본 형태
- select avg(수가 들어있는 column명) from 테이블명 where conditions;
min, max
기본 형태
- select min/max(column명) from 테이블명 where conditions;
group by
그룹화 하여 조회할 수 있는 명령어
예제
having
- 조건을 줄 수 있는 명령어
- order by를 사용할 경우 having을 먼저 쓴 후에 order by를 써야 함!
예제
- 경찰서 별로 발생한 범죄 건수의 합이 4000건보다 큰 경우를 검색

Scalar Functions
UCASE / LCASE
영문을 대문자 / 소문자로 변경
- select ucase(string);

MID
문자열 부분을 반환하는 함수
- select MID(string, start_position, length);
• string : 원본 문자열
• start : 문자열 반환 시작 위치. (첫글자는 1, 마지막글자는 -1)
• length : 반환할 문자열 길이
-예제


LENGTH
문자열의 길이 반환
- SELECT LENGTH(string);
- 문자가 없는 경우('') 길이는 0, 공백도 문자이므로 공백당 길이 1
- NULL의 경우 길이가 없으므로 NULL
ROUND
지정한 자리에서 숫자 반올림
- SELECT ROUND(number, decimals_place);
• number : 반올림할 대상
• decimals : 반올림할 소수점 위치 (Option)
- 반올림할 위치를 지정하지 않을 경우, 소수점 자리(0) 에서 반올림

- 소수점 첫번째 위치는 0
- 일 단위 위치는 -1

NOW
현재 날짜 및 시간 반환하는 함수
숫자를 천단위 콤마가 있는 형식으로 반환하는 함수
- select format(number, decimal_place);
• number : 포맷을 적용할 문자 혹은 숫자
• decimals : 표시할 소수점 위치
- 소수점 표시 않을 경우 0

6.1
- 오늘 수강한 분량: SQL 과제1, SQL 심화 9~10
SQL Subquery
- 하나의 SQL 문 안에 포함되어 있는 또 다른 SQL 문을 말한다.
- 메인쿼리가 서브쿼리를 포함하는 종속적인 관계이다.
• 서브쿼리는 메인쿼리의 칼럼 사용 가능
• 메인쿼리는 서브쿼리의 칼럼 사용 불가
주의
• Subquery 는 괄호로 묶어서 사용
• 단일 행 혹은 복수 행 비교 연산자와 함께 사용 가능
• subquery 에서는 order by 를 사용X
종류
• 스카라 서브쿼리 (Scalar Subquery) - SELECT 절에 사용
• 인라인 뷰 (Inline View) - FROM 절에 사용
• 중첩 서브쿼리 (Nested Subquery) - WHERE 절에 사용
scalar subquery
Inline View
Nested Subquery
• Single Row - 하나의 열을 검색하는 서브쿼리
• Multiple Row - 하나 이상의 행을 검색하는 서브쿼리
• Multiple Column - 하나 이상의 열을 검색하는 서브쿼리
single row subquery
- 서브쿼리가 비교연산자( =, >, >=, <, <=, <>, !=)와 사용되는 경우,
서브쿼리의 검색 결과는 한 개의 결과값을 가져야 한다. (두개 이상인 경우 에러)

multiple row - IN
- 예제: SNL에 출연한 영화배우를 조회

multiple row = EXISTS
- 예제: 범죄 검거 혹은 발생 건수가 2000건 보다 큰 경찰서 조회

multiple row = ANY
- 예제: SNL에 출연한 적이 있는 연예인 이름 조회

multiple row = ALL
- 서브쿼리 결과를 모두 만족하면(비교 연산자 사용)

multi column subquery
- 서브쿼리 내에 메인쿼리 컬럼이 같이 사용되는 경우
- 예제: 강동원과 성별, 소속사가 같은 연예인의 이름, 성별, 소속사를 조회

문제
-
평균가격 보다 높은 주유소 상호와 가격을 Nested Subquery 를 사용하여 조회

-
3번에서 조회한 주유소에서 주유한 연예인의 이름과 주유소, 주유일을 Nested Subquery 를 사용하여 조회(refueling 테이블)

-
refueling 테이블과 oil_price 테이블에서 10만원 이상 주유한 연예인 이름, 상호, 상표, 주유 금액, 가격을 Inline View 를 사용하여 조회

6.2
Git
https://github.com/
git 실행
- 찾기 -> git bash 오른쪽 마우스 -> 관리자 권한 실행
- 관리자 권한으로 안하면 프로그램 다운로드 안되는 것들도 있어서 꼭 이렇게 실행하기!
- 앞으로 터미널을 실행할 때는 git bash 로 실행하기
git bash
- 복사: ctrl + insert
- 붙여넣기: shift + insert
Local Repository
• Working Directory (작업공간) - 실제 소스 파일, 생성한 파일들이 존재
• Index (Stage) - Staging area (준비영역) 의 역할, git add 한 파일들이 존재
• HEAD - 최종 확정본, git commit 한 파일들이 존재

용어정리
- local repository: 내 컴퓨터 안에 있는 폴더
- remote repository: 내 git hub 홈페이지
work space 생성
mkdir 워크스페이스이름
git init
- 폴더에서 Git 을 초기화하는 명령어를 사용하면 해당 폴더를 Git 이 관리하기 시작
- git init
- git init으로 git 관리를 시작하면 default branch가 master로 설정 됨
- remote로 하면 main으로 설정 됨
파일 생성
- 윈도우는 touch 명령어 대신 copy con 명령어 사용
copy con test.txt
- 내 컴퓨터만 그런지 모르겠는데 copy con test.txt ; 치고 엔터 누르고 컨트롤 + C 눌러야 파일이 생긴다... 모지? ㅠㅠ
git에 존재하는 파일 확인
git status
git add(1 -> 2)
Working Directory 에서 변경된 파일을 Index (stage)에 추가
git add 파일이름
git commit(2 -> 3)
Index (stage) 에 추가된 변경사항을 HEAD 에 반영 (확정)
- 윈도우는 꼭 쌍따옴표로 감싸줘야 함!
git commit -m "commit 에 대한 설명" 파일 이름
remote repository 생성
- 깃허브 홈피 -> 왼쪽 NEW -> repository name 설정 -> public/private 선택 후 완료
remote repository 등록

remote repository 확인
git remote -v
remote repository push
- Local Repository (HEAD) 에 반영된 변경내용을
Remote Repository 에도 반영하기 위해서는 Git Push 를 사용
- 내폴더 -> 깃허브
git push
git push origin branchname
-
git push origin master

-
홈페이지에 test 파일 추가된거 확인!
remote repository pull
- Remote Repository 의 내용에 맞춰 Local Repository 를 갱신하려면 Git Pull 사용
git pull origin master
- 깃허브 -> 내폴더
정리
내폴더에서: add -> commit -> push
깃허브에서: pull
git clone
- Git Init 으로 해당 폴더를 초기화 하고
+Remote Repository 를 등록하고
+Remote Repository 의 내용을 Pull 하는 모든 과정을 Git Clone 으로 할수 있음

branch
1. branch 조회
- local : git branch
- remote : git branch -r
- local & remote 전체 조회: git branch -a

2. branch 생성
- local : git branch branch이름
- remote : git push origin branch이름
3. branch 이동
- local : git checkout branch이름
branch 생성 & 이동 한번에
- local : git checkout -b branch이름
4. branch 삭제
- local: git branch -d branch이름
- remote: git push origin --delete branch이름
Log and Diff
- 로컬에서 브랜치에 따라 파일이 변경되고, commit 하기 전/후에 따라 remote의 파일이랑 다르고 그러니까 좀 헷갈린다...ㅠ_ㅠ
파일 만들기
cat > 파일명
print('내용') + ctrl D
가 1개면 생성 및 덮어쓰기, 2개면 이어서 작성
git log
branch별 변경이력을 볼 수 있음

git editor 설정
git config --global core.editor 에디터이름
- wait 옵션: command line 으로 VSCode 를 실행시켰을 경우,
VSCode 인스턴스를 닫을 때까지 command 를 대기
(ex. git config --global core.editor 에디터이름 --wait
git configuration 파일 열기
git config --global -e
git configuration 파일 빠져나가기
- esc 누른 후 ':q' 입력 후 엔터
- cf. 입력 모드는 'i' 누르기
git diff
local branch간 비교
- git diff branch1 branch2: 터미널 안에서 비교
- git difftool branch1 branch2: 터미널 밖에서 비교(vs code)
commit 간 비교
- git diff commithash commithash
- commithash란 터미널에 있는 commit 주소를 말함!

마지막 commit과 이전 commit 비교
- git diff head head^: vs code에서 비교
마지막 commit과 현재 수정사항 확인
Local and Remote 간 비교
- git diff branch origin/branch2
merge
Git Configuration 파일 열기
git config --global -e
Git Merge 설정 추가
[user]
name = floras2
email = seolah331@naver.com
[core]
autocrlf = true
editor = code --wait
[diff]
tool = vscode
[difftool "vscode"]
cmd = "code --wait --diff $LOCAL $REMOTE"
[merge]
tool = vscode
[mergetool "vscode"]
cmd = "code --wait $MERGED
Git Merge
- 현재 위치한 Branch 에 다른 Branch 를 병합
- git merge branchname

Merge Conflict
- Branch 를 Merge 하는 과정에서 충돌이 날 수 있음
- 혹은 Push, Pull 하는 과정에서도 충돌이 일어날 수 있음

- Conflict 발생 이후 아래와 같이 MergeTool 을 실행하면 Conflict 난 파일들이 차례로 열림
VSCode 에서 Conflict 파일 수정
-
Main Branch 와 Dev2 Branch 의 Diff 를 <<<<, ====, >>>> 로 표시

-
둘 중 맞는 코드를 선택하여 수정하고 저장.(Diff 표시 부분도 삭제)

Conflict 해제
-
git add + git commit

-
Commit Message 저장 후 완료

tag
특정 버전 (Commit) 에 Tag 를 달아놓을 필요가 있을 때 사용 (예 - 버전 릴리즈)
tag 생성-1
- 현재 버전에 tag 달기
git tag tagname
tag 생성-2
- 특정 버전에 tag 달기
git tag tagname commithash

tag push(remote로)
- tag를 remote repository에 push
git push origin tagname
tag 확인
- git log

- git tag
- git show tagname
git tag 삭제
- local 삭제: git tag --delete tagname
- remote 삭제: git push --delete origin tagname
readme
• 프로젝트에 대한 설명, 사용방법, 라이센스, 설치법과 같은 부분에 대해 기술하는 파일
• 나, 직장동료, 프로그램 사용자를 위해 존재
markdown


# This is H1
## This is H2
### This is H3
#### This is H4
##### This is H5
###### This is H6
BlockQuote
블럭인용문자 사용(>)

BlockQuote (혼합)
블럭 내에서 다른 Markdown 요소를 포함할 수 있음

순서가 있는 목록
1,2,3 자동 정렬
순서가 없는 목록


코드블럭

코드블럭


수평선


외부링크 & 자동연결


강조


이미지
저장한 파일을 그대로 끌어오면 이미지 업로드 됨
터미널에서 readme 편집
- vi readme.md
- i 누르고 편집 진행 -> 끝나면 esc + :wq + enter
- local -> remote 반영 꼭 해주기!(push)
- add, commit
- remote에서 작성했으면 git pull origin main/master