MariaDB 공부 1일차

Posted by : at

Category : Data_Engineering


MariaDB

 

1일차

 

DBMS

  • 데이터베이스를 관리/운영하는 역할
  • 여러 명의 사용자나 응용프로그램이 공유하고 동시에 접근이 가능하다.

 


 

데이터의 무결성

  • 데이터베이스 안의 데이터는 어떤 경로를 통해 들어왔든 데이터에 오류가 있어서는 안 된다.
  • 이를 위한 제약 조건이 존재하는데 간단히 말해서 주민등록번호가 겹치는 사람이 있어선 안 된다는 것을 생각하면 된다.

 

데이터의 독립성

  • 데이터베이스의 크기를 변경하거나 데이터 파일의 저장소를 변경하더라도 기존에 작성된 응용프로그램에는 영향이 없어야한다.
  • 저장된 디스크가 바뀌더라도 기존에 사용하던 응용프로그램은 아무런 변경없이 계속 사용할 수 있어야 한다.

 


 

DBMS 분류

  1. 계층형 DBMS
  2. 망형 DBMS
  3. 관계형 DBMS
  4. 객체지향형 DBMS
  5. 객체관계형 DBMS

 

관계형 DBMS
  • 데이터베이스 테이블이라 불리는 최소 단위로 구성
  • 하나의 테이블이 아닌 여러 개의 테이블로 나누어서 데이터를 저장
  • 테이블의 관계를 기본 키와 외래 키를 사용해서 맺어줌으로 테이블을 부모와 자식의 관계로 묶을 수 있음

 

장점
  • 변화에 쉽게 순응할 수 있는 구조
  • 유지보수 편리
  • 대용량 데이터의 관리가 가능하고 데이터 무결성의 보장이 됨

 

단점
  • 시스템 리소스를 많이 차지해서 시스템이 전반적으로 느려지게 됨

 


 

SQL

  • Structed Query Language의 약자
  • 데이터베이스를 조작하는 언어
  • 질의하고 결과를 바로 얻을 수 있는 대화식 언어

 

MariaDB

 

  • 이제 실습에 들어가보자. 이 곳에서 db를 다운받았다면 employees.sql이라는 파일을 찾을 수 있을 것이다.
  • 해당 디렉토리에서 CMD창을 열어보자.

 

  • 다음과 같은 명령어를 입력하자
    • mysql -u root -p
    • source employees.sql

 

  • 다시 HeidiSQL을 들어가보면 employees가 추가된 것을 확인할 수 있을 것이다.
  • 여기서 저장된 데이터에 SQL 쿼리를 통해 수정 및 조회가 가능하다.
    • SELECT, UPDATE, DELETE…

 

CREATE DATABASE tutorial;
# tutorial이라는 DB를 만든다.

USE tutorial;
# tutorial이라는 DB를 사용한다.

SHOW TABLES;
# tutorial DB의 TABLE을 보여준다.

CREATE TABLE pet (name VARCHAR(20), owner VARCHAR(20),
       species VARCHAR(20), sex CHAR(1), birth DATE, death DATE);
# pet이라는 Table을 만드는데 pet에는 name, owner, species, sex, birth, death라는 Column이 존재한다.

DESCRIBE pet;
# pet의 Column정보를 자세히 보여준다.

LOAD DATA LOCAL INFILE 'C:/Users/sohn0/Desktop/blog/TIL/DBStudy/pet.txt' INTO TABLE pet
LINES TERMINATED BY '\r\n';
# pet.txt를 pet에 INSERT한다. 주소의 이름에 \이 들어갈 경우 \\로 고치거나 /로 고쳐야함을 주의하자.

 

pet.txt

Fluffy Harold cat f 1993-02-04  
Claws Gwen cat m 1994-03-17  
Buffy Harold dog f 1989-05-13  
Fang Benny dog m 1990-08-27  
Bowser Diane dog m 1979-08-31 1995-07-29
Chirpy Gwen bird f 1998-09-11  
Whistler Gwen bird   1997-12-09  
Slim Benny snake m 1996-04-29  

 

INSERT INTO pet VALUES ('Puffball','Diane','hamster','f','1999-03-30',NULL);
# 혹은 이렇게 직접 데이터를 추가할 수도 있다.
 
DELETE FROM pet WHERE name='Slim';
# 이름이 Slim인 data를 제거할 수도 있고
 
UPDATE pet SET birth = '1989-08-31' WHERE name = 'Bowser';
 # 이름이 Bowser인 data의 생일을 변경할 수도 있다.
 
SELECT * FROM pet WHERE birth >= '1998-1-1';
SELECT * FROM pet WHERE species = 'dog' AND sex = 'f';
SELECT * FROM pet WHERE species = 'snake' OR species = 'bird';
SELECT name, species, birth FROM pet WHERE (species = 'cat' AND sex = 'm');
# 이렇게 다양한 방식으로 데이터를 조회할 수 있다.
 
SELECT name, species, birth FROM pet ORDER BY species, birth DESC;
# 조회한 데이터를 원하는 방식으로 정렬할 수도 있다.

SELECT * FROM pet WHERE name LIKE '%fy';
# 특정 문자열로 끝나는 이름만 조회할 수도 있다.

SELECT * FROM pet WHERE name LIKE '_____';
# 혹은 글자수가 5글자인 이름만 조회할 수도 있다.

SELECT species, COUNT(*) FROM pet GROUP BY species;
# species별로 몇 마리의 동물이 있는지 count할 수도 있다.

 

  • 정신없이 실습을 해보았다. 이제 CREATE, SELECT, DELETE와 나름 친숙해졌을 것이라 생각한다.
  • pet Table만 너무 괴롭혀서 슬슬 지루할 거라 생각한다.
  • 그런 당신을 위해 새로운 Table을 준비했다. 새로운 Table을 만든다 생각하니 기대되지 않는가!?

 

event.txt

Fluffy 1995-05-15 litter 4 kittens, 3 female, 1 male
Buffy 1993-06-23 litter 5 puppies, 2 female, 3 male
Buffy 1994-06-19 litter 3 puppies, 3 female
Chirpy 1999-03-21 vet needed beak straightened
Slim 1997-08-03 vet broken rib
Bowser 1991-10-12 kennel  
Fang 1991-10-12 kennel  
Fang 1998-08-28 birthday Gave him a new chew toy
Claws 1998-03-17 birthday Gave him a new flea collar
Whistler 1998-12-09 birthday First birthday

 

 CREATE TABLE event (name VARCHAR(20), date DATE, type VARCHAR(15), remark VARCHAR(255));
 
 LOAD DATA LOCAL INFILE 'C:/Users/sohn0/Desktop/blog/TIL/DBStudy/event.txt' INTO TABLE event
 LINES TERMINATED BY '\r\n';
 
 SELECT pet.name,
       TIMESTAMPDIFF(YEAR,birth,date) AS age,
       remark
       FROM pet INNER JOIN event
         ON pet.name = event.name
       WHERE event.type = 'litter'; 
  • JOIN은 SQL에 대한 밍기적1에서 예전에 알아보았다.
  • 간단히 알아보자면 pet Table과 event Table에서 이름이 같으면서 event type이 litter인 데이터를 조회하는 것이다.

About GJ

안녕하세요 방문해주셔서 감사합니다. 혹시 보시면서 궁금하신것 있으시면 https://open.kakao.com/o/sivaz71c로 연락주세용~

Star
Useful Links