본문 바로가기

스터디/코딩

[ 자율 스터디 ] MySQL 데이터베이스

데이터베이스란?

- 데이터베이스란 DB라고도 불리며 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임을 말한다.

- 파일 시스템의 단점을 보완하기 위해 데이터베이스가 생겼다.

  ( 파일기반 데이터 관리의 단점 : 데이터 중복, 데이터 불일치( 동기화 문제 ) 등등 )

- 프로그램에서 사용하는 데이터의 저장, 검색, 수정, 삭제 등을 가능하게 하는 일종의 소프트웨어 프로그램으로 볼 수도

  있다.

 

 

 

DBMS란?

- DBMS는 DataBase Management System의 약자이며 데이터베이스 관리 시스템이라고 한다.

- 응용 프로그램이 요청한 사항을 데이터베이스와 통신하며 처리한다.

 

 

DBMS의 개념

 

 

 

DBMS의 기능

① 구축 : DBMS가 관리하는 기억 장치에 데이터를 저장하는 기능

② 조작 : 특정한 데이터를 검색하기 위한 질의, 데이터베이스의 갱신, 보고서 생성 기능 등을 포함

③ 공유 : 여러 사용자와 프로그램이 데이터베이스에 동시에 접근하도록 하는 기능

④ 보호 : 하드웨어나 소프트웨어의 오동작 또는 권한이 없는 악의적인 접근으로부터 시스템을 보호함

⑤ 유지보수 : 시간이 지남에 따라 변화하는 요구사항을 반영할 수 있도록 함

 

 

 

DBMS의 특징

① 데이터의 독립성

      - 물리적 독립성, 논리적 독립성 존재

② 데이터의 무결성

      - 부적절한 자료가 입력되어 동일한 내용에 대해 서로 다른 데이터가 저장되는것을 허용X

③ 데이터의 보안성

      - 승인된 사용자들만 데이터베이스 내의 자원에 접근 할 수 있도록 권한을 설정

④ 데이터의 일관성

      - 저장된 데이터가 모순이 없고 동일한 규칙내에 일정해야함

⑤ 데이터의 중복 최소화

      - 데이터를 통합하여 관리하기에 데이터 중복 문제 해결

⑥ 데이터의 효율성

      - 응답시간, 저장공간 활용들이 최적화 되어야함

⑦ 데이터의 공유

      - 여러 사용자가 동시에 원하는 데이터를 공유할 수 있음

 

 

 

DBMS의 종류

① HDBMS : 계층형 데이터베이스 관리시스템

     - 데이터가 계층적이며 상하 종속적인 관계

     - 데이터의 엑세스 속도가 빠르고 데이터의 사용량을 쉽게 예측할 수 있으나 상하 종속적인 관계로 구성되어있기에

       초기 셋팅 후 변화하는 프로세스를 수용하기 힘듦

       ( EX. IMS, System2000 등 )

② NDBMS : 네트워크형 데이터베이스 관리시스템

     - 데이터 구조를 네트워크 상의 노드 형태로 논리적이게 표현한 데이터 모델

     - 각각의 자료를 서로 대등한 관계로 구성

     - 계층형 데이터베이스 관리시스템의 문제는 해결했지만 구성과 설계가 복잡하고 궁극적으로 데이터의 종속성을

       해결하지 못함

       ( EX. IDS, TOTAL, IDMS 등 )

③ RDBMS : 관계형 데이터베이스 관리시스템

     - 테이블 형태로 데이터를 저장하고 이 데이터간의 관계를 정의하는 것

     - 업무 변화에 대한 적응력이 높아 변화하는 업무에 활용하며 유지보수가 편리하며 생산성도 높지만 다른 DBMS보다           많은 자원이 필요해 시스템의 부하가 높다.

       ( EX. SQL Server, Sybase, Oracle, Infornix, DB2, MS SQL, MariaDB 등 )

④ OODBMS : 객체지향 데이터베이스 관리시스템

     - 객체지향 프로그래밍 개념에 기반하여 만든 데이터베이스 모델

     - 멀티미디어 데이터의 원활한 처리와 RDBMS의 비지니스형 데이터 타입만 처리되는 기본적인 제한점을 극복하고자           고안

       ( EX. O2, ONTOS 등 )

⑤ ORDBMS : 객체관계형 데이터베이스 관리시스템

     - 관계형 데이터베이스에 객체 지향 개념을 도입하여 만든 데이터베이스 모델

     - OODBMS와 특징이 비슷하며 그의 장점과 RDBMS의 장점만을 취함

     - RDBMS의 데이터 모델을 그대로 활용하여 어렵고 까다로운 OODBMS의 데이터 모델링 문제를 해결

     ( EX.  Postrgre SQL, UniSQL, Object store 등 )

 

→ 이번 실습에서 나는 RDBMS의 MySQL을 사용할 것이다.

 

 

 

MySQL란?

- SQL에 기반한 MySQL은 다양한 분야에서 널리 사용되는 RDBMS이다.

  ( SQL은 Structured Query Language의 줄임말로 데이터베이스의 데이터를 조회하거나 갱신할 수 있도록 만들어진

    데이터베이스 표준언어이다. )

- PHP, 파이썬, C, C++, 자바 등의 많은 프로그래밍 언어를 지원하는 응용 프로그램 인터페이스 ( API : Application

  Programing Interface )를 제공한다.

 

RDBMS의 기본 구성 요소

 

 

 

MySQL 장점

① 가장 많이 사용하는 데이터 베이스로써 무료로 사용할 수 있지만 상업적인 목적으로 사용하려면 라이센스를

     구매해야한다.

② DBMS 중에서도 처리 속도가 상당히 빠른 편이다.

③ 설치 및 사용 방법이 쉬워 초보자가 쉽게 접근할 수 있다.

④ 대용량 데이터도 손쉽게 처리할 수 있다.

⑤ 보안성이 뛰어나다.

 

 

 

phpMyAdmin이란?

 

phpMyAdmin 로고

 

- 그래픽 사용자 인터페이스(GUI)를 사용하여 MySQL 및 MariaDB 데이터베이스를 관리하는 웹 기반 응용 프로그램

- 사용자가 테이블과 필드를 생성, 편집 및 삭제할 수 있는 방법을 제공하며 데이터 추가, 제거 및 수정 SQL 문을 실행하고    사용자 권한을 관리한다.

- 다운사이트 : https://www.phpmyadmin.net/

 

내 phpMyAdmin의 사진

 

 

 

데이터베이스 생성

 

실습을 위해 생성한 데이터베이스

 

잘 만들어진걸 확인할 수 있다.

 

- 데이터베이스 이름 : php_test

- 데이터 정렬 방식 : utf8_general_ci

   →  실습에서는 sample이라는 이름을 가진 DB를 만들어서 실습을 진행하지만 나는 sample이라는 DB가

         있기에 php_test라는 이름으로 지정해주었다.

 

 

 

데이터베이스 테이블 생성

- 테이블을 생성하기 위해선 phpMyAdmin 콘솔에서 아래와 같은 SQL 명령을 입력한 후 Ctrl+Enter를 눌러 실행한다.

 

create table 테이블명
	(
    	필드명1 데이터형,
        필드명2 데이터형,
        필드명3 데이터형,
        …
        
        primary key(vlfemaud)
	);

 

필드명 데이터형 null 추가 사항 설명
num int not null auto_increment, primary key 일련번호
id char(20) not null   아이디
pw char(20) not null   비밀번호
name char(20) not nul   이름
age int     나이

 

- null : 데이터 값이 없는 데이터형

  ( 위에 not null로 설정된 필드의 경우 레코드에 데이터 입력할 때 해당 필드를 비워두며 안되고 반드시 값을 채워야한다. )

- auto_increment : 레코드에 데이터를 입력할 때 필드 값이 자동으로 증가하는 것을 의미

- primary key (주키) : 테이블의 필드 중 중복되면 안되는 필드로 레코드를 식별하는데 사용되는 필드를 의미 

 

→ 위와 같은 정보를 가진 member라는 이름을 가진 테이블을 작성해보자!

 

member라는 테이블 생성 쿼리 작성

 

member라는 테이블이 생성된 걸 볼 수 있음

 

 

 

 

데이터베이스 테이블 구조 확인

- '테이블명'의 테이블 필드 구조를 보여준다.

 

desc 테이블명;

 

desc 사용

 

member 테이블은 num, id, pw, name, age라는 5개 필드로 구성되어있으며 각각의 타입과 num 필드가 주 키라는 것과 auto_increment로 설정되어있는 걸 볼 수 있다.

 

 

 

데이터베이스 데이블 필드 관리

 

- 새로운 필드 추가

 

alter table 테이블명 add 새로운_필드명 필드_데이터형 [first 또는 after 필드명];

 

email 필드를 추가해보았다.

 

 

- 필드 삭제

 

alter table 테이블명 drop 삭제할_필드명1, 삭제할_필드명2;

 

age 필드를 삭제해보았다.

 

 

- 필드 수정

 

alter table 테이블명 change 수정할_필드명 새로운_필드명 필드_데이터형;

 

email 필드를 phone_num이라는 필드로 수정해보았다.

 

 

- 필드 데이터형 수정

 

alter table 테이블명 modify 필드명 수정할_데이터형;

 

phone_num 필드의 데이터형을 char에서 int로 수정해보았다.

 

 

 

데이터베이스 테이블 이름 관리

 

alter table 수정할_테이블명 rename 새로운_테이블명;

 

member라는 테이블명을 mem으로 바꿔보았다.

 

 

 

데이터베이스 테이블 삭제

 

drop table 테이블명;

 

drop을 명령어로 사용하면 경고창이 한번씩 뜬다.

→ 위에 필드를 삭제하기 위해 drop을 사용할 때도 뜨는 걸 보아 삭제할 때 한번 더 물어봐서 정말 삭제해도 되는지

     주의를 다지게 하는 듯 하다!

 

php_test이라는 데이터베이스 안에 있는 mem이라는 테이블을 삭제해보았다.