본문 바로가기
CS/데이터베이스

DB와 MySQL 입문기!

qbang 2018. 3. 25.

 

생활코딩님의 MySQL강의를 듣고 저같은 컴못알 분들께 조금이나마 도움이 될까 글을 써봅니다!

MySQL강의를 듣게 된 계기는 동아리에서 진행하는 스터디 때문인데요, 학과 수업으로도 DB를 배우고 있었기 때문에 전반적인 개념을 잡는데는 큰 도움이 되었습니다. 학과 수업으로 배우는 DB는 실습이 아닌 거의 이론 수업이어서 실제로 적용해본적이 없었기 때문에 처음에는 겁을 먹고 시작했는데, 강의를 보면서 차근차근 따라하면 저같은 사람들도 쉽게 할 수 있더라구요ㅋㅋ

이제 본격적으로 MySQL 강의 정리를 해보도록 하겠습니다~

 

데이터베이스란? & 데이터베이스와 MySQL

데이터베이스란 구조화된 데이터, 데이터의 저장소이다. 데이터베이스의 종류로는 관계형데이터베이스와 NOSQL이 있습니다.

관계형데이터베이스 : SQL이라는 문법을 공유

  (SQL : 데이터베이스에서 데이터를 저장하거나 열기 위해서 사용하는 표준화된 언어)

  종류 : Mysql. Oracle, mssql

- Nosql : 빅데이터 처리를 위한 비관계형 데이터베이스 관리 시스템

  (비관계형 데이터베이스 관리 시스템이란 대부분의 전형적인 데이터베이스 시스템에서 찾을 있는 행과 열로 이루어진 테이블 형식 스키마를 사용하지 않는 데이터베이스입니다.)

  종류 : mongodb .

 

 

위의 그림에 설명을 덧붙이자면 row는 행(가로줄)이고 column은 열(세로줄)인데, row column의 교차점에 있는 것이 field입니다

 

 

클라이언트

클라이언트란 네트워크를 통하여 서버라는 다른 컴퓨터 시스템 상의 원격 서비스에 접속할 있는 응용 프로그램이나 서비스를 말합니다. (서버란 클라이언트에게 네트워크를 통해 정보나 서비스를 제공하는 컴퓨터 또는 프로그램을 말합니다, 요청하는 쪽은 클라이언트응답하는 쪽은 서버!)

종류 : Mysql-monitor(기본), mysql query browser, phpMyAdmin, navicat

데이터 베이스의 클라이언트의 종류로는 mysql-monitor, mysql query browser, phpMyAdmin, navicat 등이 있습니다. 밑에서 대표적인 것만 차근차근 살펴보겠습니다. (저는 window로 했습니다!)

 

 

(먼저 서버를 깔고 해야 밑의 예가 실행이 될거에요생활코딩님은 apmsetup, 저같은 경우는 xampp이용했습니다)

MySQL monitor

먼저 키보드 맨 왼쪽에 있는 'Ctrl' 옆의 '윈도우키' + 'r' 동시에 눌러주면 실행창이 뜰텐데 여기에 cmd를 치고 엔터를 눌러줍니다.

>mysql -u아이디 -p비밀번호

를 입력하면 됩니다.  처음 사용하거나 사용자가 지정이 안되어 있는 경우에는

>mysql -uroot -p

를 입력하고 apmsetup을 이용하시는 분들은 비밀번호 입력창에서 apmsetup을 입력하면 됩니다.

 

1. 데이터베이스 생성

2. 데이터베이스 선택

합앏

 

3. 테이블 생성

 

4. 테이블에 데이터 추가

 

5. 입력된 데이터 조회

 

6. 종료

'ctrl + c'를 눌러도 종료됩니다

 

 

phpMyAdmin

phpMyAdmin http://www.phpmyadmin.net/home_page/index.php에서 설치할 수 있습니다.

저는 xampp를 쓰기 때문에 아래 사진 속 MySQL Admin에 들어가서 phpmyadmin 창을 열었어요!

 

 

1. 데이터베이스 만들기

phpmyadmin에서 새 데이터베이스를 만든것은 mysql monitor(cmd)에서 데이터베이스를 만들라는 명령을 내린것과 동일합니다.

2. 테이블 만들기

phpmyadmin에서 Movie 데이터베이스를 선택하고 테이블을 만듭니다.

phpmyadmin에서 위의 과정으로 테이블을 만든 것은 mysql monitor(cmd)에서 테이블을 만들라는 명령을 내린것과 같습니다.

3. 데이터 추가

phpmyadmin에서 데이터베이스를 선택한 후 값을 삽입하고 실행합니다.

아래 사진처럼 여러 개를 한꺼번에 삽입 할 수도 있습니다.

 

 

 

Table

Table 데이터가 실질적으로 저장되는 저장소이고, Schema는 테이블이 적제될 데이터의 구조와 형식을 정의하는 것입니다.

1. 테이블 생성

(NOT NULL : id’에 반드시 어떤 값이 들어와야한다)

 

2. 테이블 리스트

 

3. 테이블 스키마 열람

 

4. phpMyAdmin을 이용해서 student2테이블 만들기

 

 

삽입 & 결과확인

삽입 & 결과확인 예제1

>INSERT INTO table_name VALUES (value1, value2, value3,...)

여기서 leez까지만 삽입된 이유는 type에서 char(4)라고 정의해주었기 때문입니다.

삽입 & 결과확인 예제2

>INSERT INTO table_name (column1, column2, column3,...) VALUES (value1, value2, value3,...)

 

변경

예제1

테이블을 만들고 값이 제대로 들어갔는지 확인합니다.

 

>UPDATE `student` SET address='서울';

 

 

예제 2

>UPDATE 테이블명 SET 컬럼1=컬럼1의 값, 컬럼2=컬럼2의 값 WHERE 대상이 될 컬럼명=컬럼의 값

 

삭제

>DELETE FROM 테이블명 [WHERE 삭제하려는 칼럼 명=값]

Id=2의 데이터가 사라진 것을 확인 할 수 있습니다.

- TRUNCATE : 테이블의 전체 데이터를 삭제

>TRUNCATE 테이블명

- DROP TABLE : 테이블을 삭제

>DROP TABLE 테이블명

 

 

조회

>SELECT 칼럼명1, 칼럼명2 from 테이블명

 

예제 1

예제 2

 

Limit [오프셋로우카운트]

(로우카운트 : 몇 개의 행을 가져올 것인지)

 

 

그룹핑

특정 칼럼을 기준으로 데이터를 그루핑함

>SELECT * FROM 테이블명 GROUP BY 그룹핑 할 기준 칼럼명

 

 

 

 

 

정렬

지정된 칼럼을 기준으로 데이터를 정렬함

>SELECT * FROM 테이블명 ORDER BY 정렬의 기준으로 사용할 열DESC

 

 

 

 

Index

색인조회할 때 원하는 행을 빠르게 찾을 수 있게 준비해둔 데이터

1. Primary

중복되지 않는 유일한 키. 행을 테이블안에서 식별하는 유일무이한 값

위의 경우에는 id가 데이터를 식별하는 primary키라고 할 수 있습니다.

 

2. Normal

중복을 허용하는 키

위의 경우에는 departmet가 국문과인 것이 세개있는데 이 데이터들을 모두 불러옵니다.

 

3. Unique

중복을 허용하지 않는 유일한 키

 

4. Full text

자연어 검색(긴 텍스트 중 원하는 것만 가져올 때 유용합니다)

 

5. Foreign

다른 테이블과의 관계성을 부여하는 키, 즉 한 테이블의 필드 중 다른 테이블의 행(row)을 식별할 수 있는 키를 말합니다. 

 

6. 중복키

하나의 키에 여러개의 칼럼을 포함(인덱스 종류에 포함x)

 

***여기서 잠깐 헷갈릴 수 있는 primary key와 unique key의 특징을 간단하게 보자면,

primary key는 값이 중복되면 안되고 NULL값을 허용하지 않습니다.

unique key는 값이 중복되면 안되고 NULL값을 허용합니다.

 

Join

복수의 테이블을 조합해서 하나의 테이블처럼 결과를 출력

Left Join 예제

ON : 결합에 조건을 부여. s.location_id 컬럼과 l.id 컬럼 값이 같다는 뜻

 

OUTTER JOIN

한쪽 테이블의 결과가 없더라도 가져와서 NULL로 표시

 

INNER JOIN 

조인한 데이터중 하나라도 이상이 있으면 가져오지 않음

아래 그림은 JOIN의 종류에 따라 달라지는 결과값을 보여줍니다. 참고하세요!(원문 : https://dsin.wordpress.com/2013/03/16/sql-join-cheat-sheet/)

 

 

 

 

 

사용자 관리

권한

사용자에 따라서 접근할 수 있는 데이터와 사용할 수 있는 기능을 제한

>GRANT 권한 ON 데이터베이스테이블 TO '아이디'@'호스트' IDENTIFIED BY '비밀번호'

 

사용자의 제한

데이터베이스 서버에 접속하는 사용자를 제한한다

                     아이디@호스트 중에서 호스트는 접속자가 사용하는 머신의 IP를 의미(IP를 특정하지 않으려면 ’%’를 사용)

 

권한 제한의 예시

SHOW GRANT

자신의 권한이나 특정한 권한을 열람

>SHOW GRANTS [FOR 사용자]

 

REVOKE

사용자의 권한을 제거

  >REVOKE 권한 ON 데이터베이스.테이블 FROM 사용자

DROP USER

사용자를 삭제

  >DROP USER user [, user]

 

 

 

프로그래밍과 연동

데이터베이스의 내용을 웹으로 출력하기

phpadmin에 들어간 후 mysql을 클릭한 후 데이터를 입력하고 잘 들어갔는지 확인합니다!

그리고 그 저장한 데이터를 메모장에 복사한 후 파일이름은 list.php, 파일형식은 모든 파일로 바꿔 htdoc에 저장합니다.

웹에 들어가 주소창에 localhost/list.php을 치면 아래와 같이 DB의 내용이 출력되는 것을 볼 수 있습니다!

 

긴글 읽느라 수고하셨습니다 :)

 

 

'CS > 데이터베이스' 카테고리의 다른 글

MySQL Workbench의 다이어그램 자동 생성  (0) 2021.10.12
데이터베이스의 키(Key)  (0) 2021.09.26
서버와 클라이언트  (4) 2018.03.31

댓글