웹기초_3주차 정리

2022. 7. 24. 12:2822-여름방학/웹 해킹(WEB HACKING)&웹 기초

생활코딩 DATABASE - MySQL 전체

 

https://www.youtube.com/playlist?list=PLuHgQVnccGMCgrP_9HL3dAcvdt8qOZxjW


1. 수업소개

 

파일을 이용해서 정보를 정리하는데, 정보의 양이 증가하면서 파일만으로 정보를 정리하기 어려워짐

누구나 쉽게 데이터를 정리정돈하기 위한 소프트웨어를 개발했는데 이것을 데이터베이스라고 함

-> 관계형 데이터베이스 : 데이터를 표의 형태로 정리 정돈할 수 있고 정렬 검색과 같은 작업을 빠르고 편리하고 안전하게 할 수 있다.

ex) MySQL, Oracle, SQL Server, PostgreSQL, DB2, Access

이 중 MySQL이 웹과 함께 폭발적으로 동반 성장을 하게 된다.


2. 데이터베이스의 목적

 

관계형 데이터베이트의 특징 : 스프레드시트와 마찬가지로 데이터를 표의 형태로 표현해준다.

데이터베이스는 코딩, 컴퓨터 언어를(MySQL) 통해서 제어할 수 있다는 특징이 있다.

스프레드시트는 클릭을 해야 사용자가 원하는 출력을 띄우는데, 데이터베이스는 대화를 하듯이 명령어를 입력하면 원하는 데이터를 출력할 수 있다.

데이터베이스에 저장된 데이터를 웹을 통해서 사람들에게 공유할 수 있고 앱을 통해서 공유할 수도 있다.

데이터베이스에 있는 정보를 전세계에 있는 누구나 웹사이트에 접속해서 볼 수 있게 할 수 있다.


3.0.&3.1. MySQL 설치 (Windows)

 

bitnami wamp을 검색해서 아래의 페이지에 들어가기

wamp는 윈도우에서 apach, mysql, php를 동시에 설치해주는 프로그램이다.

그 중 이걸 통해서 mysql을 쉽게 설치할 수 있다.

 

패스워드를 111111로 하고 다운받는다.

다운받고 비트나미 매니저파일을 열면 mysql은 없고 maria db가 있는 걸 확인할 수 있다.

cd C:\Bitnami\wampstack-8.0.21-0\mariadb\bin 를 입력하고 mysql -uroop -p를 입력한 뒤 111111을 입력하여 로그인한다.


4. MySQL의 구조

 

데이터를 기록하는 최종적인 곳 : 표 (table)

많아진 표들을 잘 정리정돈하는(그룹핑) 파일 : 데이터베이스 (database), 스키마

스키마들을 정리하여 저장하는 곳 : 데이터베이스 서버 (database server)


5. 서버접속

 

데이터베이스는 자체적인 보안 체계를 가지고 있기 때문에 좀 더 안전하게 데이터를 보관할 수 있다는 장점이 있다. 또 권한 기능이 있어서 MySQL에 여러 사람을 등록할 수 있다.

 

-u : 사용자로 접속한다는 의미

root : 관리자 권한 -> 모든 권한 사용 가능

-p 뒤에 비밀번호를 입력하면 비밀번호가 보이기 때문에 엔터를 친 후에 비밀번호를 입력하는 게 더 안전하다.


6. 스키마의 사용

 

데이터베이스 생성 명령어 : CREATE DATABASE 데이터베이스의이름;

데이터베이스를 생성한 후에 잘 생성됐는지 확인하기 위한 명령어 : SHOW (DATABASES | SCHEMAS); 명령어를 입력한 후에 내가 생성한 데이터베이스의 이름이 잘 뜨면 성공적으로 생성한 것이다.


7. SQL과 테이블의 구조

 

Structured : 표를 작성하는 것, 관계를 만드는 것

Query : 데이터베이스에게 질의한다.

Language : 데이터베이스가 알아들을 수 있는 언어로 이야기한다(SQL)

 

-SQL의 특징

쉽다, 중요하다 -> 가성비가 아주 뛰어난 컴퓨터 언어이다.

-> 데이터의 column을 얘기할 때는 데이터의 타입, 구조를 의미하고, row를 얘기할 때는 데이터 하나하나, 자체를 의미한다.


8.1. 테이블의 생성

 

SQL CHEAT SHEET : 커닝 페이지 -> 잘 정리정돈된 페이지

이걸 찾아서 이걸 토대로 코딩해보기

 

-테이블 생성 명령어 :

CREATE TABLE 테이블이름{

     c1(컬럼의 이름) datatype(length)

     c2(컬럼의 이름) datatype(length)

}

 

컬럼의 데이터가 매우 많아지면, 데이터를 꺼낼 때 이 데이터의 타입이 무엇인지 헷갈리게 된다. 그렇기 때문에 입력하는 데이터의 타입을 아예 정하면, 꺼내는 데이터가 1이면 이 데이터의 타입은 숫자라는 것을 쉽게 확인할 수 있기 때문에 데이터의 타입을 정하는 게 좋다.

-> 데이터의 타입 정하는 방법 :

INT(11) : 정수(숫자를 어디까지만 노출시킬 것인가)

 

ID 컬럼을 자동으로 1씩 증가시키기 위해(중복되지 않는 식별자를 갖기 위해서) AUTO_INCREMENT를 입력한다.


8.2. 테이블의 생성

 

VARCHAR : 사이즈를 지정할 수 있음(variable + character)

PRIMARY를 이용해서 주요 키를 나타낸다.

-> 성능, 중복 방지 가능


9. CRUD

Create

Read

Update

Delete

-> 프로그램이 갖고 있는 기능

->데이터베이스에서 이 기능 살펴보기


10. INSERT

 

INSERT INTO topic (title,description) VALUES('MySQL', 'MySQL is ...', NOW(), 'egoing', 'developer'); 명령어를 이용해서 

create row를 한다.

 

추가한 데이터 row를 읽기 위해 SELECT * FROM topic; 명령어를 입력한다.


11. SELECT

 

가장 많이 사용되는 명령어이다.(위에 있는 INSERT와 더불어서)

데이터를 읽기 위해 사용하는 명령어이다.

 

-> 표시하고 싶은 컬럼들의 목록을 셀렉트와 프롬 사이에 적는다.

 

한 행만 읽기 위해서는 아래처럼 명령어를 입력하면 된다.


12. UPDATE

 

수정을 하기 위해서는 update 명령어를 사용하면 된다.

 

UPDATE와 SET 사이에 수정하려는 테이블 이름을 적어준다.

누구에게 업데이트 할 것인지를 WHERE문으로 적는다.


13. DELETE

 

DELETE에서는 꼭 들어가야 하는데 FROM tbl_name와 WHERE문이다.


14. 수업의 정상

 

관계형 데이터베이스를 배우고 있다. C,R,U,D를 가지고 있다면 데이터베이스라고 볼 수 있다.

왜 데이터베이스와 관계형 데이터베이스가 구분되는지에 관해서 이제 배워야 한다.


15. 관계형데이터베이스의 필요성

 

데이터가 중복되고 있다는 것은 무언가 개선할 여지가 있다는 신호이다.

행이 무수히 많고 중복되는 데이터 역시 무수히 많다고 가정하면, 중복되고 있는 데이터가 복잡하고 무거울 시에 굉장히 경제적으로 큰 손해가 발생하게 된다.

-> 중복을 해결해야 함

 

이렇게 따로 표를 정리하여 중복인 값을 유지, 보수하기 편리하게 만든다.


16. 테이블 분리하기

 

테이블을 만든다.

insert 명령어를 이용하여 데이터 입력을 완성한다.


17. JOIN

 

topic author 테이블을 결합하기 위해 join 명령어를 사용한다.

첫번째 컬럼을 topic_id로 바꿔서 테이블을 join한다.

 

테이블에서 필요한 컬럼만 따로 빼서 join하는게 가능해진다.

즉, 테이블을 분리한다는 것은 모든 테이블이 필요한 행을 포함하고 있다면 join을 통해서 얼마든지 관계를 맻을 수 있게 된다. 또 데이터 하나를 바꾸면, 전체가 바뀌는 효과도 얻을 수 있다.

-> join은 관계형 데이터베이스를 관계형으로 만드는 매우 중요한 기능이다.


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

 

정보의 바다라고 할 수 있는 인터넷 위에서 데이터베이스가 동작하게 되면 굉장히 파워풀한 효과를 낼 수 있다.

인터넷으로 컴퓨터들이 연결되면서 컴퓨터들 사이에 사회가 만들어지고 컴퓨터가 갖고 있는 한계를 초월하게 되었다.

한 대의 컴퓨터에는 웹브라우저가 설치되어 있고, 그 컴퓨터의 주소창에 구글 주소를 입력하고 엔터를 치면, 웹브라우저가 설치되어 있는 컴퓨터가 입력한 도메인 네임 주소에 해당되는 주소를 요청받게 된다.

-> 이런 식으로 인터넷 위에서 동작하는 컴퓨터들은 정보를 요청하는 쪽과 응답하는 쪽으로 나뉘게 된다.

정보를 요청하는 쪽을 client(고객)이라고 하고, 응답하는 쪽은 서비스를 제공한다고 해서 server라고 한다.

클라이언트 컴퓨터는 서버 컴퓨터에게 정보를 요청하는데 이 관계가 웹이라면, 정보를 요청하는 컴퓨터를 web client(web browser)라고 하고,  응답하는 컴퓨터를 web server라고 한다.

 데이터베이스를 이용하면 데이터베이스 클라이언트와 서버라고 하는데, 데이터베이스 더버에 접근하려면 어떤 방식으로던지 데이터베이스 클라이언트를 이용해야만 한다.

mysql 모니터가 데이터베이스 클라이언트 중 하나이고, mysql 모니터는 명령어를 통해서 데이터베이스 서버를 제어하는 프로그램이다.

 

mysql을 이용하면 gui환경에서 엑셀을 다루듯이 데이터베이스를 다룰 수 있게 된다.


19. MySQL Client

 

mysql 모니터라는 mysql 클라이언트가 있다. mysql 모니터는 mysql 서버를 설치하면 함께 설치되기 때문에 mysql 서버가 있는 곳에 mysql 모니터가 있다. 따라서 어디에서나 사용할 수 있다는 엄청난 장점을 가지고 있다. mysql 모니터는 gui가 아니고 명령어를 이용해서 제어하는 명령어 기반의 프로그램이다.

반면에 워크벤치라는 프로그램은 gui 기반의 프로그램이다. 즉, 마우스를 가지고 조작할 수 있다.


20. MySQL Workbench

 

MySQL Workbench 사이트에서 자신의 운영체제에 맞는 버전으로 다운받기.

 

./mysql은  MySQL을 실행하라는 명령어이다. 

-uroot -p는 사용자 루트, 비밀번호를 입력한다는 것을 의미한다.

-hlocalhost에서 h는 호스트의 약자이다. 호스트는 인터넷에 연결되어 있는 각각의 컴퓨터 호스트를 의미한다.

-> 지금 실행하려고 하는 mysql 모니터라는 클라이언트로 인터넷을 통해서 다른 컴퓨터에 있는 mysql 서버에 접속하려고 하면, -h 뒤에다가 그 서버에 해당되는 컴퓨터의 주소를 적으면 된다.

그런데 이걸 입력하지 않고 엔터를 치게 되면(-h입력 x), 암시적으로 mysql 모니터와 mysql 모니터가 설치되어 있는 컴퓨터의 mysql 서버를 가리키게 된다.

 

mysql 서버에 mysql 워크벤치라는 클라이언트가 접속하는 방법은 일종의 북마크 같은 방식으로 한다. '동그라기 안에 있는 더하기 버튼'을 누르면 'Setup New Connection' 화면이 뜬다.

커넥션 네임에 my server라고 입력하고, 호스트네임에 127.0.0.1을 입력한다. 그 다음에 successful made라는 화면이 뜨고 생성이 완료되면 접속을 하기 위해서 클릭을 한다.

sql을 mysql 서버에 전송함으로써 데이터베이스 서버를 제어하게 된다.

apply를 누르면 sql이 나오는 것을 확인할 수 있고 워크벤치가 테이블에 추가된 것을 확인할 수 있다.


21. 수업을 마치며

 

관계형 데이터베이스를 잘 다루기 위해서는 언어인 sql을 잘 다루어야 한다. 특히 crud 중에서 r에 해당하는 셀렉트 문을 잘 다루어야 한다.

 

데이터베이스에서 데이터가 많아지면 필요한 정보를 갖고 나오기 힘들어 진다. 그럴 때 사용하는 게 index이다.

성능상의 문제가 생기면 index를 사용하면 된다.

 

테이블을 데이터의 중복 없이 더 좋은 성능으로 만들기 위해서 사용하는 것이 modeling이다.

 

하드디스크는 반드시 고장나는데 언제 고장나는지 알 수 없다. 그렇기 때문에 꼭 데이터를 백업해야만 한다. 백업의 기본적인 원리는 '데이터를 복제해서 보관한다'이다.

 

구글이나 마이크로소프트 또는 아마존, 네이버와 같은 큰 회사들이 운영하고 있는 인프라 위에 있는 컴퓨터를 임대해서 사용하는 것이 클라우드 컴퓨팅이다.

 

 

'22-여름방학 > 웹 해킹(WEB HACKING)&웹 기초' 카테고리의 다른 글

웹기초_4주차 정리  (0) 2022.07.28
웹해킹_3주차 정리  (0) 2022.07.24
웹해킹_2주차 정리  (0) 2022.07.17
웹기초_2주차 정리  (0) 2022.07.17
웹해킹_1주차  (0) 2022.07.12