빅데이터 부트캠프/MySQL

빅데이터 부트캠프 44일차

Mecodata 2022. 9. 5. 09:15

데이터베이스 (DB : DateBase)

- 조직체의 응용 시스템들이 공유해서 사용하는 운영 데이터들이 구조적으로 통합된 모임 

- 데이터베이스의 구조는 사용되는 데이터 모델에 의해 결정 

- 데이터베이스 스키마 = 전체적인 데이터베이스의 구조

- 데이터베이스 상태 = 특정 시점의 데이터베이스의 내용

- DBMS (Database Management System) = 데이터베이스를 정의하고, 질의어를 지원하고, 리포트를 생성하는 등의 작업을 수행하는 소프트웨어

- 질의(Query) = DBMS에게 보내는 요청

- 관계형 데이터베이스 (RDBMS) = 모든 데이터를 2차원 테이블 형태로 저장하는 데이터베이스 

- 객체 지향 데이터베이스 (OODB, Object-Oriented DataBase) = 객체 지향 프로그래밍 기반 데이터베이스

 

SQL (Structured Query Language) 

- 데이터베이스에서 데이터를 정의, 조작, 제어하기 위해 사용하는 언어

- 데이터 정의어 (DDL : Data Definition Language) = 데이터베이스를 정의하는 언어

ex) CREATE, ALTER, DROP 등

- 데이터 조작어 (DML :  Data Manipulation Language) = 데이터베이스의 데이터를 조작하는 언어

ex) SELECT, INSERT, UPDATE, DELETE 등

- 데이터 제어어 (DCL : Data Control Language) = 데이터베이스에 접근하거나 객체에 권한을 제어하는 언어

ex) COMMIT, ROLLBACK, REVOKE 등

- 옵티마이저(Optimizer) = 사용자가 질의한 SQL문에 대해 최적의 실행 방법을 결정하는 역할 

- 비용 기반 옵티마이저 (CBO, Cost Based Optimizer) = 처한 상황에 따라 유동적으로 처리

- 규칙 기반 옵티마이저 (RBO, Rule Based Optimizer) = 고정된 규칙(루틴)에 따라 고민 없이 처리

- 트랜잭션(transaction) = 데이터베이스의 상태를 변화시키기 위해 수행하는 업무 처리의 최소 단위

 

관계형 데이터베이스 (RDBMS : Relational DataBase Management System)

- 엔티티(Entity), 릴레이션(relation) = 2차원의 테이블 (데이터프레임)

※ 모델링 = 엔티티, 모델링 = 릴레이션

- 스키마(schema) = 릴레이션의 첫 행 (헤더)

- 튜플(tuple) = 행, 속성(attribute) = 열(column)

- 인스턴스(instance) = 릴레이션에 저장된 데이터 전체

- 도메인(domain) = 하나의 속성에 대한 데이터 타입, 크기 등의 제약 사항(조건, 범위)을 정하는 것

- 슈퍼키(Super key) = 유일성을 가진 키들의 집합

- 후보키 = 유일성 + 최소성

- 대체키 = 후보키들 중 하나의 기본키를 선택하면 나머지는 대체키

- 기본키(primary key) = 후보키들 중에서 최소성과 유일성을 만족하여 지정한 속성

- 외래키(foreign key) = 릴레이션다른 릴레이션의 데이터를 참조하여 릴레이션간의 관계를 연결하는 것

※ Mapping Cardinality = 두 릴레이션 사이의 관계(relationship) 정의

- 1:1  

- 1:N = 부모-자식 관계 (부모는 여러자식을 가질 수 있지만 자식은 여러 부모를 가질 수 없음)

- N:M = 회사-지원자 관계 (회사는 여러명의 지원자를 선택할 수 있고 반대로 지원자도 여러 개의 회사 선택가능)

쇼핑몰 데이터베이스 설계

- 두 릴레이션의 관계가 1:1이거나 N:M이면 둘 사이의 관계에도 테이블을 생성해야하고 1:N이면 필요 X

  (주문은 테이블 생성, 배송은 테이블 생성 X)

 

MySQL 기본

- MySQL = 세계에서 가장 많이 쓰이는 오픈 소스의 RDBMS (Oracle이 관리 및 지원)

- mysql -u root -p = mysql 접속

- 명령어 입력시 마지막에 꼭 ; 입력

- create database A; = A라는 데이터베이스 생성

- use C; = 사용 데이터베이스 A에서 C로 변경 (C라는 데이터베이스 존재시)

※ 데이터 타입 종류

- varchar = 가변 길이의 문자열, char = 고정 길이의 문자열, int = 정수, date = 날짜, blob = 이진 데이터

- create table B(); = A에 B라는 테이블 생성

  ()안에 [컬럼명] [컬럼의 자료형] 형식으로 컬럼 생성 및 생성한 컬럼 중 하나를 primary key 필수로 지정

ex) create table B( ID varchar(50), Name varchar(50), Password int, location varchar(50), primary key(ID) );

- desc 테이블명 = 해당 테이블 스키마 출력

- drop table 테이블명 = 해당 테이블 삭제

 

- insert into 테이블명 values (); = 해당 테이블에 입력한 데이터 추가

※ 모든 column에 해당하는 데이터가 아닌 일부 column에 해당하는 데이터 추가시에는

insert into B (ID, Password) values ('sk', 1234);

- update 테이블명 set 컬럼1명 = '텍스트1', ... where 조건; = 해당 테이블의 데이터 수정

- delete from 테이블명 where 조건; = 해당 테이블의 데이터 삭제

- select [컬럼명]  from [테이블명] = 해당 테이블의 해당 컬럼 데이터 조회 (컬럼명 대신 * 입력시 모든 데이터 조회) 

(맨 뒤에 where를 추가하여 특정 조건을 만족하는 데이터 수정, 조회, 삭제 가능)

- 컬럼명과 from 사이별칭을 입력하면 출력시 컬럼명이 아닌 지정한 별칭이 컬럼명으로 출력 (원본 변경 X)

 

where를 이용한 조건 설정

- 산술연산자 이용 (<,>,=,=>,<=)

- between A and B : A와 B 사이의 숫자인 경우 출력

- in 'A' = 특정 문자열 'A'가 있는 경우 출력

- like '김%' = 문자열이 '김'으로 시작하는 경우 출력

- 논리연사자 이용 (and, or)

 

concat을 이용하여 특별한 형식으로 출력 가능

ex) select concat(Name, '님의 아이디는 ', ID, '입니다.') from user; -> Tom님의 아이디는 Tm87입니다.