일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- 가브리엘마르케스
- 멋사 국비지원과정
- 추천프로젝트
- 멋사 AI
- til
- 이렇게 그녀를 잃었다
- AI 코딩
- 비전공자 코딩
- 영화추천시스템
- 유니오르
- AI 국비지원
- 멋쟁이사자처럼 전액국비지원
- 홍명희 임꺽정
- 멋쟁이사자처럼 k 디지털
- k 디지털
- 비전공자 코딩교육
- 인터뷰
- 비전공자 멋쟁이사자처럼
- 멋쟁이사자처럼
- 멋사 AI 교육
- 영화AI추천
- 멋사 전액국비지원교육
- 인생책
- 멋쟁이사자처럼 k-digital
- 민음사
- 문학동네
- 리뷰
- 인생책짧은글
- k 디지털 후기
- 멋사 k 디지털
- Today
- Total
글쟁이, 코딩한다
1231 / K_digital 18일차 / DB, SQL 본문
0.
세상에, 한 해가 또 지나간다.
DB와 DBMS
데이터베이스(DataBase) : 데이터들을 저장하는 일련의 파일들
=> DBMS(DataBase Management System) : 이를 관리하는 소프트웨어
1) DBMS의 종류
최근에는 관계형 데이터베이스를 다루는 R(elation) DBMS를 대부분 사용
=> Oracle(보안상 강점 <-> 난해한 문법, 비용), MySQL(저렴한 금액), SQLite, MS SQL, PostgreSQL, ...
#Oracle, MySQL이 인기가 많다 #ANSI SQL 기반으로 조금씩만 차이를 가지고 있다.
2) Data Lake와 Data Warehouse
모든 데이터를 때려넣어둔 Data Lake, 데이터를 손질해 쌓아둔 Data Warehouse
데이터 처리 순서 :
ETL 추출, 변형, 저장(적재) (extract, transform, load) ; 데이터를 추출해 간단히 바꿔 저장한다.(Data Warehouse의 방식)
=> 데이터가 너무 많아졌어요. 또 너무 빨리 쏟아져요.
ELT 추출, 적재, 변형 ; 데이터를 추출해 일단 저장하고 필요시 변형(Data Lake의 방식, 최근 더 부각)
3) 데이터 모델링
현실 =(개념)=> E-R 다이어그램 =(논리)=> Relation 모델 =(물리)=> 물리적인 SQL 코드
1- 개념 데이터 모델링
현실 개체(Entity) 추출과 개체들간 관계 정리(E-R 다이어그램)
#Entity(개체, 사각형) : 중요 데이터를 가진 사람, 사물 ex)회원, 제품 ; 표 형태, 각각 entity ID
#Relationship(관계, 마름모) : entity들 사이 연관성, 대응 관계 ; 표 형태
#Attribute(속성, 타원) : 의미 있는 데이터들의 작은 논리적 단위 ; 표 안의 열들
2- 논리 데이터 모델링
E-R다이어그램 기반 Relation 모델을 만드는 과정
#Relation(릴레이션) : entity 데이터를 2차원 테이블 구조(행열)로 표현한 것
##Attribute == Field(Column) : Relation의 열 ###Degree(차수) : 테이블 안 열의 수
##Tuple == Record(Row, Instance) : Relation의 행 ###Cardinality(카디널리티) : 테이블 안 행의 수
3- 물리 데이터 모델링
Relation 모델을 저장 장치에 저장할 물리 구조로 구현
SQL
구조적 질의 언어, Structured Query language
R-DBMS에서 데이터를 관리하기 위함 #Query : 질문 ; DB에 보내는 질의 ; 명령어를 의미하기도 함
1) SQL의 기능들
DDL : Relation(DB 테이블)을 정의하기 위해 사용 : CREATE(생성), ALTER(변경), DROP(삭제) 등
DML : 데이터 관리(CRUD)를 위해 사용 : SELECT(read), INSERT(create), UPDATE(update), DELETE(delete) 등
DCL : 사용자 관리, 권한 다루기 : GRANT(부여), REVOKE(해제)
2) SQL 문법(기초기초)
1- 대소문자를 무시한다
#예외도 있다. #권장사항(명령어는 대문자로, 그외는 소문자로)은 있다
2- 명령은 반드시 세미콜론(;)으로 끝난다
3- 고유값은 따옴표로 감싸준다
## 주석 : -- 한 줄, /* 여러줄 */
3) SQL 사용
#따로 설치가 필요없는 SQLite3 사용 #파이썬에서 작동
1. DB 불러오기
db = "maindb.db" # or "maindb.sqlite"
conn = sqlite3.connect(db) #Database 생성 -> 커넥션 연결(주로 conn 변수)
conn.cursor( ) #커서로 연결(cur) #cursor = db 파일 사이를 오가며 명령문을 수행해준다
conn.commit( ) #확정적으로 DB에 저장
conn.rollback( ) #commit 직전으로 이동
conn.close( ) #연결 끊기(DB 파일 변환을 위해)
2. 기초 명령어
cur = conn.cursor( )
cur.execute( ) #하나의 명령문
cur.executescript( ) #여러 명령어를 실행 ##큰 스크립트로 구성 ##하나만도 가능
cur.executemany(A,B) #하나의 SQL 문에 데이터를 바꿔가며 실행
cur.fetchone( ) / cur.fetchall( ) #불러온 데이터를 저장 ##더 편한 명령어가 있다.
3. 데이터프레임으로 변환
script = """
SELECT
column
FROM
table
"""
#""" """은 문자열 줄바꿈을 가능하게 해준다.
df = pd.read_sql_query(script, conn) #sql_query를 읽어 df로 전환. 뒤에 연결 주체를 확인해줘야 한다.
df
4. SQL 명령어
#추가 정리와 세부 정돈이 필요 #순서에 유념하자
DDL
CREATE : TABLE을 만든다
#자료형 이름 #제약조건 #FOREIGN KEY
ALTER : TABLE을 수정한다
#ADD #RENAME
DROP : TABLE을 삭제한다
DSL
SELECT(+ FROM) : Data를 선택해 불러온다
#SQL의 핵심 명령어
#ORDER BY : 정렬 #DISTINCT : 중복 제외 #LIMIT(와 OFFSET) : 제한 #
#조건절 WHERE : 사칙연산, LIKE, SUBQUERY, BETWEEN, IS NULL ...
INSERT(+INTO & VALUES) : Data를 삽입한다
#excutemany를 활용한 한번에 밀어넣기
UPDATE(+ SET) : Data 수정
DELETE(+ FROM) : Data 삭제
##추가추가
1) *은 all을 의미한다.
2) ?는 format문의 { }에 해당
3) DB Browser for SQLite : DB를 곧바로 보는 프로그램 <--> 코드는 자동화에 좋다
오늘의 (다음) 공부할 것
1. 자격증 : 정보처리기사, 빅데이터 분석기사
Tensorflow Certificate, AWS(AWS한국사용자모임), GCP
2. for 문의 더 세밀한 이해
3. dataframe merge의 더 세밀한 이해
오늘의 (연휴에) 할 일
1. 가족신문 만들기
2. 소설 시작하기
3. 복습 & 오늘의 공부할 것들 가운데 적어도 2개
4. 하기 싫다? 그럼 맘 편히 쉬기
'나는 코딩도 한다 > TIL' 카테고리의 다른 글
0105 / K_digital 20일차 / ML이론기초(지도학습) (0) | 2021.01.05 |
---|---|
0104/ K_digital 19일차 / SQL, AI 입문 (0) | 2021.01.04 |
1230 / K_digital 17일차 / 세미프로젝트(마무리) (2) | 2020.12.30 |
1229 / K_digital 16일차 / 세미프로젝트 (0) | 2020.12.30 |
1228 / K_digital 15일차 / 세미프로젝트 (1) | 2020.12.29 |