데이터베이스란?
- 데이터베이스란 DB라고도 불리며 여러 사람들이 공유하고 사용할 목적으로 통합 관리되는 데이터들의 모임을 말한다.
- 파일 시스템의 단점을 보완하기 위해 데이터베이스가 생겼다.
( 파일기반 데이터 관리의 단점 : 데이터 중복, 데이터 불일치( 동기화 문제 ) 등등 )
- 프로그램에서 사용하는 데이터의 저장, 검색, 수정, 삭제 등을 가능하게 하는 일종의 소프트웨어 프로그램으로 볼 수도
있다.
DBMS란?
- DBMS는 DataBase Management System의 약자이며 데이터베이스 관리 시스템이라고 한다.
- 응용 프로그램이 요청한 사항을 데이터베이스와 통신하며 처리한다.

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 )를 제공한다.

MySQL 장점
① 가장 많이 사용하는 데이터 베이스로써 무료로 사용할 수 있지만 상업적인 목적으로 사용하려면 라이센스를
구매해야한다.
② DBMS 중에서도 처리 속도가 상당히 빠른 편이다.
③ 설치 및 사용 방법이 쉬워 초보자가 쉽게 접근할 수 있다.
④ 대용량 데이터도 손쉽게 처리할 수 있다.
⑤ 보안성이 뛰어나다.
phpMyAdmin이란?

- 그래픽 사용자 인터페이스(GUI)를 사용하여 MySQL 및 MariaDB 데이터베이스를 관리하는 웹 기반 응용 프로그램
- 사용자가 테이블과 필드를 생성, 편집 및 삭제할 수 있는 방법을 제공하며 데이터 추가, 제거 및 수정 SQL 문을 실행하고 사용자 권한을 관리한다.
- 다운사이트 : https://www.phpmyadmin.net/

데이터베이스 생성


- 데이터베이스 이름 : 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라는 이름을 가진 테이블을 작성해보자!


데이터베이스 테이블 구조 확인
- '테이블명'의 테이블 필드 구조를 보여준다.
desc 테이블명;

member 테이블은 num, id, pw, name, age라는 5개 필드로 구성되어있으며 각각의 타입과 num 필드가 주 키라는 것과 auto_increment로 설정되어있는 걸 볼 수 있다.
데이터베이스 데이블 필드 관리
- 새로운 필드 추가
alter table 테이블명 add 새로운_필드명 필드_데이터형 [first 또는 after 필드명];

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

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

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

데이터베이스 테이블 이름 관리
alter table 수정할_테이블명 rename 새로운_테이블명;

데이터베이스 테이블 삭제
drop table 테이블명;

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

'스터디 > 코딩' 카테고리의 다른 글
| [ 코딩 도장 : C ] Unit 3. Hello, world!로 시작하기 : 연습문제 / 심사문제 (0) | 2024.07.04 |
|---|---|
| [ 자율 스터디 ] MySQL 조작 (0) | 2023.01.10 |
| [ 자율 스터디 ] 쿠키와 세션 (5) | 2023.01.05 |
| [ 자율 스터디 ] 폼과 PHP (0) | 2023.01.05 |
| [ 자율 스터디 ] PHP 함수 (0) | 2023.01.04 |