//log my lifestyle

[DATABASE] 생활코딩 - MySQL (3) 본문

Web/기타

[DATABASE] 생활코딩 - MySQL (3)

zici 2022. 5. 19. 02:25

강의 흐름에 따라  학습내용을 기록한 내용입니다.

https://opentutorials.org/course/3161/ 


1. 관계형 데이터베이스(Realtional Database)의 필요성 

데이터베이스에 중복된 데이터가 있다는 것 -> 개선의 여지가 있다!
 
복잡하고 용량이 큰 데이터가 중복될수록,
1. 기술적, 경제적으로 엄청난 손실  2. 데이터를 수정해야 할 때, 낭비되는 시간 3. 데이터의 구분이 어려움
 
테이블을 분리했기때문에 장점도 있지만 단점도 생긴다.

테이블을 분리하지 않으면 - 모든 데이터를 한 눈에 볼 수 있기 때문에 직관적으로 데이터를 볼 수 있음
테이블을 분리하면 - 데이터를 볼 때, 해당 데이터에 해당되는 별도의 테이블을 열어서 비교.대조해야 하는 불편함 


MySQL을 이용하면 저장은 분산해서, 볼 때에는 합쳐 보는게 가능 

 

2. JOIN 사용하기

 SELECT (테이블별칭.)조회할 컬럼명  FROM 테이블명 LEFT JOIN 테이블명2 ON 기준테이블명.기준키 = 조인테이블명.기준키 ;

LEFT JOIN 은 왼쪽테이블을 기준으로  비교하는 테이블과 중복되는 값을 보여준다.

(RIGHT JOIN은 반대로 오른쪽 테이블을 기준으로)

mysql> SELECT * FROM author;
+----+--------+---------------------------+
| id | name   | profile                   |
+----+--------+---------------------------+
|  1 | egoing | developer                 |
|  2 | duru   | database administrator    |
|  3 | taeho  | data scientist, developer |
+----+--------+---------------------------+
3 rows in set (0.00 sec)

mysql> SELECT * FROM topic;
+----+------------+-------------------+---------------------+-----------+
| id | title      | description       | created             | author_id |
+----+------------+-------------------+---------------------+-----------+
|  1 | MySQL      | MySQL is...       | 2018-01-01 12:10:11 |         1 |
|  2 | Oracle     | Oracle is ...     | 2018-01-03 13:01:10 |         1 |
|  3 | SQL Server | SQL Server is ... | 2018-01-20 11:01:10 |         2 |
|  4 | PostgreSQL | PostgreSQL is ... | 2018-01-23 01:03:03 |         3 |
|  5 | MongoDB    | MongoDB is ...    | 2018-01-30 12:31:03 |         1 |
+----+------------+-------------------+---------------------+-----------+
5 rows in set (0.00 sec)

mysql> SELECT * FROM topic LEFT JOIN author ON topic.author_id = author.id;
+----+------------+-------------------+---------------------+-----------+------+--------+---------------------------+
| id | title      | description       | created             | author_id | id   | name   | profile                   |
+----+------------+-------------------+---------------------+-----------+------+--------+---------------------------+
|  1 | MySQL      | MySQL is...       | 2018-01-01 12:10:11 |         1 |    1 | egoing | developer                 |
|  2 | Oracle     | Oracle is ...     | 2018-01-03 13:01:10 |         1 |    1 | egoing | developer                 |
|  5 | MongoDB    | MongoDB is ...    | 2018-01-30 12:31:03 |         1 |    1 | egoing | developer                 |
|  3 | SQL Server | SQL Server is ... | 2018-01-20 11:01:10 |         2 |    2 | duru   | database administrator    |
|  4 | PostgreSQL | PostgreSQL is ... | 2018-01-23 01:03:03 |         3 |    3 | taeho  | data scientist, developer |
+----+------------+-------------------+---------------------+-----------+------+--------+---------------------------+
5 rows in set (0.00 sec)

 

SELECT topic.id AS topic_id ,title,description,created,name,profile  FROM topic LEFT JOIN author ON topic.author_id = author.id;

컬럼명칭을 바꾸고싶을땐 AS 를 사용해서 표기한다.


3.인터넷과 데이터베이스

인터넷이 동작하기위해선 적어도 2개이상의 컴퓨터가 필요하다.

한대의 컴퓨터는 정보를 요청 , 다른 컴퓨터는 정보를 응답

이렇게 컴퓨터들이 '인터넷'으로 연결되면서 컴퓨터간의 사회가 만들어짐

 

ex) 웹 

client → Internet → server
client ← Internet ← server

인터넷 위에서 동작하는 컴퓨터들은 정보를 요청하는 Client, 응답하는 Server로 나뉜다.
-> 여러 Client, 하나의 DB Server로 여러 정보를 주고 받는 것이 가능해짐

 

- MySQL Client

많은 종류의 MySQL 클라이언트가 있다. ex) MySQL monitor 등  
MySQL monitor : 어디에서나 사용 가능, 명령어 기반 프로그램 (명령어를 기억해야한다는 단점)
MySQL workbench : GUI 기반 프로그램
 

더 나아가서

Index(색인)  사용자들이 검색을 자주 하는 컬럼에 색인을 걸어둠 
Modeling  성능, 설계 상의 구원 keyword 
Backup  내 컴퓨터와 별도의 컴퓨터에 복제해서 보관

 ex)mysqldump, binary log 
Cloud  내 컴퓨터가 아닌 큰 회사의 인프라를 임대해서 원격 제어, backup도 알아서 해줌

  ex)aWS RDS, Google Cloud SQL for MySQL, AZURE Database for MySQL 
Programming DB 서버 핸들링

 ex) python mysql api, php mysql api, java mysql api

'Web > 기타' 카테고리의 다른 글

[DATABASE] 생활코딩 - MySQL (2)  (0) 2022.05.17
[DATABASE] 생활코딩 - MySQL (1)  (0) 2022.05.15