♨요일~ 파이썬을 끝내고, 데이터베이스로 넘어왔습니다~
Datebase : 데이터의 집합. 대용량의 데이터를 체계적으로 구성해 놓은 것
DBMS : database management system, DB를 파일로 만들어 저장·관리해주는 SW
ex) DB2(IBM, 초대형/메인프레임), Oracle DB(Oracle, 대형), MySQL(Oracle, 중·소형)
계층형 DBMS(hierachical DBMS) : 데이터의 연계가 쉽지 않음
Network DBMS : 계층형 DBMS의 말단끼리 연결해줌, 단 구현이 어려움
관계형 DBMS(relational DBMS) : DB를 분류하여 Table 구조를 정해 그 밑에 DB를 쌓음, 정형화된 데이터에 특화됨
객체지향 DBMS(orbject oriented) : 망함
객체-관계형 DBMS : Oracle이 선두
Big Data : 3V(Volume_양, Velocity_속도, Variety_다양성), 관계형 DBMS로 처리하기가 곤란함→NoSQL
MySQL Community Server 8.0.28 설치
CS(client - server) 구조
서버 정상 작동하는지 확인은 검색→서비스 앱→MySQL80 더블클릭→시작 유형 : 자동, 서비스 상태 : 실행 중
MySQL Server에 기본으로 제공되는 console을 이용할 수 있지만 불편하기 때문에, MySQL client(workbench)를 사용함
console 사용을 위해서 탐색기_MySQL Server 8.0_bin 폴더 경로를 복사하여 환경 변수_시스템 변수_path에 경로 추가하기
cmd 창에서 mysql -u root -p 실행 후, MySQL 설치하면서 root 계정(관리자)에 생성했던 password 입력DB 경로 설정하고 다시 MySQL Server root 계정으로 로그인한 뒤 샘플 DB 설치
SQL : 관계형 데이터베이스용 언어
MySQL Workbench(클라이언트)
schema : 범용적인 용어지만, MySQL에서는 Database를 지칭함
python의 str(문자열)은 여기서 VARCHAR(글자 수) / NN은 NULL 허용하지 않음 / 대소문자 구분하지 않음
주석은 '-- ' / python의 ==(같다)는 여기서 =(대입한다 아님) / 문자열은 무조건 ''("" 아님)
SELECT * FROM shopdb.membertbl; -- 모든 데이터 조회
INSERT INTO shopdb.membertbl VALUES('iu', '아이유', '부산');
INSERT INTO shopdb.membertbl VALUES('shin', '신사임당', '인천');
INSERT INTO shopdb.membertbl VALUES('kim', '김연아', '광주');
SELECT * FROM shopdb.membertbl; -- *은 모든 컬럼(열)을 지칭
SELECT memberName, memberAddr FROM shopdb.membertbl; -- 다중 컬럼을 지칭
SELECT memberName, memberAddr FROM shopdb.membertbl WHERE memberName = '아이유'; -- WHERE 조건
SELECT * FROM shopdb.producttbl;
INSERT INTO shopdb.producttbl VALUES('컴퓨터', 1000, '2022-01-01', '삼성', 5);
INSERT INTO shopdb.producttbl VALUES('세탁기', 2000, '2022-01-02', 'LG', 2);
INSERT INTO shopdb.producttbl VALUES('냉장고', 1500, '2022-01-05', '대우', 4);
DB의 Index(색인)는 column에 설정함, 열 안의 데이터를 이용해서 B(Balanced)-Tree 형태로 데이터를 분배시켜서 저장하는 Index를 따로 생성함
CREATE TABLE shopdb.indexTBL ( -- SQL 구문(query)을 이용해서 인덱스할 테이블을 생성
first_name VARCHAR(14),
last_name VARCHAR(16),
hire_date DATE
);
INSERT INTO shopdb.indexTBL -- 새로 생성한 indexTBL table에 employees schema의 데이터 밀어넣음
SELECT first_name, last_name, hire_date -- or *
FROM employees.employees -- schema.table
LIMIT 500; -- 조회할 데이터 수(rows)를 제한하는 구문. 상단에 Limit to 1000 rows 대신 사용
SELECT * FROM shopdb.indexTBL;
Execution Plan을 보면 조회 값을 찾는데 걸린 시간(mili seconds)이 Query cost로 표현됨
index는 전체적인 performance를 따져서 설정해야 함
(데이터가 변경될 때마다 B-Tree를 다시 만들기 때문에 Overhead 발생)
CREATE INDEX idx_indexTBL_firstname ON shopdb.indexTBL(first_name);
-- 특정 컬럼에 index를 설정해서 B-Tree를 생성
SELECT * FROM shopdb.indexTBL WHERE first_name = 'Mary';
-- 전체 컬럼을 훑는 것보다 조회가 빠름!
1. 1/17 월 | 2. 1/18 화 | 3. 1/19 수 | 4. 1/20 목 | 5. 1/21 금 |
취업 특강 | 파이썬 환경 설정 (파이참, 아나콘다, 주피터 노트북) |
파이썬 데이터 타입 (list, tuple) |
파이썬 데이터 타입 (range, string, dictionary, set, bool) |
파이썬 사용자 정의 함수, 객체지향, 사용자 정의 클래스 |
6. 1/24 월 | 7. 1/25 화 | 8. 1/26 수 | 9. 1/27 목 | 10. 1/28 금 |
파이썬 사용자 정의 클래스, 사용자 정의 모듈 |
DB(MySQL) DBMS, MySQL 환경 설정, DB/테이블 생성, DB 입력·활용, Index |
DB(MySQL) |
DB(MySQL) |
* 교재를 참고하면서 공부하자!
'멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차 > Database' 카테고리의 다른 글
1/28 금 (0) | 2022.01.28 |
---|---|
1/27 목 (0) | 2022.01.27 |
1/26 수 (0) | 2022.01.26 |