데이터베이스 맛보기

MOON·2022년 10월 4일
0

데이터베이스

목록 보기
2/3
post-thumbnail

정보 시스템 구축 단계
▪ 5단계 : 분석-설계-구현-시험-유지 · 보수

대부분의 프로젝트에서는 분석과 설계 단계가 전체 공정의 50% 이상을 차지
할 정도로 중요하다.

데이터베이스 모델링과 필수 용어

데이터베이스 모델링
▪ 현실 세계에서 사용되는 데이터를 MySQL에 어떻게 옮겨놓을지 결정하는 과정

▪ 데이터 : 테이블에 저장된 하나하나의 단편적인 정보
▪ 테이블 : 데이터를 입력하기 위해 표 형태로 만든 것
▪ 데이터베이스 : 테이블이 저장되는 저장소로, 원통 모양으로 표현
▪ DBMS : DataBase Management System의 약자로, 데이터베이스를 관리하는 시스템 또는 소프트웨어
▪ 열(필드) : 각 테이블을 열로 구성
▪ 열 이름 : 각 열을 구분하기 위한 이름
▪ 데이터 형식 : 열의 데이터 형식
▪ 행(레코드) : 실질적인 데이터
▪ 기본키(주키) : 각 행을 구분하는 유일한 열로, 기본키는 중복되어서도 비어 있어서도 안 됨
▪ 외래키 : 두 테이블의 관계를 맺어주는 키
▪ SQL(구조화된 질의 언어) : 사람과 DBMS가 소통하기 위한 말(언어)

데이터베이스 구축 절차


데이터베이스 생성, 실습

workbench를 실행 후 mysql 서버에 접속한다.

좌측 칸에 있는 [Navigator] 창에서 마우스 우클릭 create schema를 통해 스키마를 생성해준다.

이후 sql문으로 변환되어 나오는데 그냥 실행하면 된다.

테이블 생성하기

회원테이블과 제품테이블 2가지를 만들 예정이다.

방금전에 만든 스키마에서 테이블을 선택해 마우스 우클릭으로 create table 통해 만들어진다.

테이블 이름을 membertbl로 한다. 대소문자 신경 안써도 된다.

기본키 및 null값 등을 지정한다.

이후 apply를 지정하면 sql문으로 변환이 되는데 그냥 실행하자.

위에 방식대로 제품테이블을 만들어보자.

위에처럼 지정해 준 뒤 적용해주자.
그러면 2개의 테이블이 생성되어 있는것이 확인 가능하다.

테이블에 membertbl를 선택후 우 클릭하여 select lows - limit 1000을 선택해준다.
아래처럼 데이터를 입력해주면 된다.

똑같이 제품테이블에 데이터를 입력하기 위해 select lows - limit 1000 해준 뒤 아래와 같이 데이터를 입력해준다.

SQL문 작성

왼쪽 위에 보면 sql그림에 +가 붙어있는 것을 볼수 있다. sql파일을 추가시켜보자.

사용할 데이터베이스를 선택해 준 뒤 sql문을 적어주면 된다.

SELECT * FROM memberTBL; 이 코드는 membertbl의 모든 데이터를 검색한다.

위에 번개모양이 두개가 있는데 왼쪽을 누르면 파일에 적힌 모든것이 실행된다.

오른쪽 번개는 선택 되어 있는 줄만 실행된다.

SELECT memberName, memberAddress FROM memberTBL;

SELECT는 검색할때 사용한다.

memberTBL에서 memberName, memberAddress를 검색해서 보여준다.

SELECT * FROM memberTBL WHERE memberName = ‘토마스’;

위 코드의 뜻은 memberTBL에 모든 데이터를 검색하는데 조건문이 달려있다.

where를 통해 memberName이 '토마스'인 사람을 검색한다.

index

▪ 실무에서 사용하는 데이터는 많게는 수천만, 수억 건 이상에 달하므로 인덱스 없이 전체 데이터를 찾는다는 것은 굉장히 부담스러운(시간이 오래 걸리는) 일
▪ 인덱스는 책의 뒷부분에 실리는 ‘찾아보기(색인)’와 같음
▪ 인덱스는 테이블의 열 단위에 생성됨

이제 인덱스를 이용한 실습을 해보자.

현재 데이터베이스를 shopdb로 변경해주자.

위의 sql문을 적어주어 500건의 데이터가 있는 테이블을 만들어준다.

SELECT * FROM indexTBL WHERE first_name = 'Mary';

를 통해 생성한 데이터에서 mary를 찾는다. 이때 실행시간을 확인해보면 아래와 같다.

이제 인덱스를 생성한 후 비교를 해보자.

CREATE INDEX idx_indexTBL_firstname ON indexTBL(first_name);

이름열에 인덱스를 생성한 뒤 다시 검색을 해보자.

500건에 데이터에서도 이정도 차이가 나는데 더 많은 데이터는 차이가 더 날 것이다.

▪ 가상의 테이블
▪ 실체가 없고 진짜 테이블에 연결(link)된 개념
▪ 뷰를 SELECT 문으로 조회하면 진짜 테이블의 데이터를 조회하는 것과 동일한 결과가 나옴

다른사람이 접근가능한 데이터를 설정할수 있는 보안에서 중요한 기능이다.

CREATE VIEW uv_memberTBL
AS
SELECT memberName, memberAddress FROM memberTBL;

뷰를 만드는데 이름과 주소만 접근 가능하게 만든다.

SELECT * FROM uv_memberTBL;를 통해 뷰를 조회하게 되면 적힌 정보만 볼수 있다.

스토어드 프로시저

SQL 문을 하나로 묶어 편리하게 사용하는 기능
함수랑 비슷하게 사용하면 된다.

위 sql문은 myProc()라는 프로시저를 만들며 Begin, END사이에 기능을 가지고 있다.

사용할려면 호출을 하여야 하는데 CALL (프로시저 이름)()을 통해 실행한다.

트리거

▪ 테이블에 부착되어 테이블에 INSERT(삽입), UPDATE(수정), DELETE(삭제) 작업이 발생하면 실행되는 코드
▪ 회원 탈퇴 시 간단히 회원 테이블(memberTBL)에서 토마스의 정보를 삭제하면(토마스의 행 데이터를지우면) 되지만, 이렇게 하면 토마스가 회원 탈퇴를 한 사람인지 나중에 알 길이 없음
▪ 트리거를 작성하면 회원 테이블(memberTBL)에서 삭제 작업이 일어날 때마다 다른 곳에 그 데이터를 ‘자동으로’ 저장하여 편리함

데이터를 삽입한뒤 삭제하여 확인을 해보겠다.

INSERT INTO memberTBL VALUES ('Soccer', '흥민', '서울시 서대문구 북가좌동');

이러면 memberTBl에 추가가 된다.

DELETE FROM memberTBL WHERE memberName = '흥민'; 를 통해 삭제를 시킨다.

위에 sql문은 삭제된 데이터를 기록할 테이블을 만드는것이다.

삭제된 데이터를 기록할 트리거를 만들며 추가적인 내용을 포함시킨다.

INSERT INTO memberTBL VALUES ('Soccer', '흥민', '서울시 서대문구 북가좌동');
DELETE FROM memberTBL WHERE memberName = '흥민';

위 sql문을 통해 데이터 추가 후 다시 삭제시켜주자.

이제 SELECT * FROM deletedMemberTBL;를 통해 삭제된 데이터가 기록되었는지 확인하자.

위 사진을 보면 기록 되어있는 것이 확인이 가능하다.

profile
나만의 공간

0개의 댓글