본문 바로가기

멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차/Database

1/25 화

728x90

♨요일~ 파이썬을 끝내고, 데이터베이스로 넘어왔습니다~

 

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 설치

MySQL Server 접속

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)
 

* 교재를 참고하면서 공부하자!

728x90

'멀티캠퍼스 프로젝트형 AI 서비스 개발 5회차 > Database' 카테고리의 다른 글

1/28 금  (0) 2022.01.28
1/27 목  (0) 2022.01.27
1/26 수  (0) 2022.01.26