프롤로그
아 할 거 너무 많은데....큰일났다;;
정보 시스템 구축 절차
분석->설계->구현->시험->유지보수
분석 : 구현하고자 하는 프로젝트의 가장 첫 단계. 시스템 분석 또는 요구사항 분석. "what" 즉 무엇을 할 것인가 결정
설계 : 우리가 구축하고자 하는 시스템을 "How" 즉 어떻게 할 것인가 결정
나머지는 알아서 프로그래머가 다 한다. 그래서 분석 설계가 끝나면 50% 이상이 끝난다.
데이터베이스 모델링과 필수 용어
-데이터베이스 모델링 : 분석과 설계 과정 중에서 가장 중요한 과정. 현실세계에서 사용되는 데이터를 MySQL에 어떻게 옮겨 놓을 것인가 결정하는 과정. 정보들을 단편적으로 저장하는 것이 아니라 테이블이라는 형식에 맞춰서 넣어야한다.
-데이터 : 단편적인 정보. 정보는 있으나 아직 체계화 되지 못한 상태
-테이블 : 회원이나 제품의 데이터를 입력하기 위해 표 형태로 표현한 것.
-데이터베이스(DB) : 테이블이 저장되는 저장소. 보통 원통 모양으로 표현. 각 데이터베이스 별로 서로 다른 고유한 이름을 가지고 있어야함.
-DBMS : DataBase Management System 의 약자로 데이터베이스를 관리하는 시스템 또는 소프트웨어.
- 데이터형식 : 열의 데이터 형식.
-기본키(Primary Key)열 : 기본키(또는 주키) 열은 각 행을 구분하는 유일한 열. 중복되어서도 안 되고, 비어있어서도 안 되고, 각 테이블 당 무조건 하나만 지정되어 있어야한다.
-외래키(Foreign Key) 필드 : 두 테이블의 관계를 맺어주는 키.
-SQL(Structured Query Language) : 구조화된 질의 언어.
MySQL을 이용한 데이터베이스 구축 절차
저 그림에서 설치는 2024.01.11 - [데이터베이스] - [데이터베이스] MySQL 설치하기 #2
여기서 했었고 다음 차례인 데이터베이스 구축 절차에서 데이터베이스 생성 부분이다.
+ 추가
우선 https://cafe.naver.com/thisismysql/1144
여기서 샘플 데이터베이스 다운받았다.
나는 D드라이브에 저장받았다.
데이터베이스 생성
그리고 MySQL Workbench C.E 를 실행시켜준다.
Local instance MySQL 을 접속해주고, 저번에 설정한 비밀번호로 접속해준다.
접속하면
이런 창이 뜬다.
왼쪽 아래 Schemas 탭을 클릭해놓자. 여기가 기본화면이다.
저기서 스키마 부분에 우클릭 -> Create Schema를 클릭하고
name 에 shopdb (아무거나 상관없음) 하고 오른쪽아래에 Apply 를 클릭한다.
그럼 이 창이 뜨는데, Apply 누르고 Finish 를 누르면
shopdb 데이터베이스가 생성되었다.
리눅스 환경에서도 쓰게 될텐데
CREATE SCHEMA 'shopdb';
이렇게 입력하는 것도 잊지 말자.
테이블 생성
테이블을 생성하기 전에는 각 열의 영문 이름 및 데이터 형식을 결정해야한다. 데이터베이스 모델링 시에 결정된다.
데이터베이스, 테이블, 열 등의 이름은 영문을 사용하여야 한다. 행 데이터 값(실제 데이터 내용)만 한글을 사용할 수 있다.
회원테이블은 아래와 같이 지정할 것이고,
열 이름(한글) | 영문 이름 | 데이터 형식 | 길이 | NULL 허용 |
아이디 | memberID | 문자(CHAR) | 8글자(영문) | X |
회원 이름 | memberName | 문자(CHAR) | 5글자(한글) | X |
주소 | memberAddress | 문자(CHAR) | 20글자(한글) | O |
제품테이블은 다음과 같이 지정할 것이다.
열 이름(한글) | 영문 이름 | 데이터 형식 | 길이 | NULL 허용 |
제품 이름 | productName | 문자(CHAR) | 4글자(한글) | X |
가격 | cost | 숫자(INT) | 정수 | X |
제조일자 | makeDate | 날짜(DATE) | 날짜형 | O |
제조회사 | company | 문자(CHAR) | 5글자(한글) | O |
남은 수량 | amount | 숫자(INT) | 정수 | X |
이를 토대로 일단 회원 테이블(memberTBL)을 만들어 보자.
Tables에서 우클릭을 누르고 CreateTable을 누른다.
그리고 Table Name과 그 아래 부분을 채워준다.
Column Name 부분에다가 영문이름을, 데이터 형식(문자길이), 그리고 NN을 체크함으로써 NULL 금지를 시켰다.
또한 memberID 부분에 PK에 체크되어 있는데, 이것은 기본키로 변경한다는 의미이다.
Column Name 부분에 대문자를 입력해도 어차피 전부 소문자로 바뀐다고 한다.
실제 Apply 를 눌렀을 때 소문자로 바뀐다는 경고창이 나온다.
다음과 같은 창이 나온다. 코드를 한 번 봐보자
CREATE TABLE `shopdb`.`membertbl` (
`memberID` CHAR(8) NOT NULL,
`memberNAME` CHAR(5) NOT NULL,
`memberAddress` CHAR(20) NULL,
PRIMARY KEY (`memberID`));
shopdb.membertbl 테이블을 생성하는데, () 로 내용을 묶는다. 대충 이해가 가는 것 같다.
이제 Apply -> Finish 를 누르고 제품 테이블도 똑같이 생성한다.
똑같이 테이블 우클릭 -> Create Table 을 누르고
위와 같이 입력해주고 Apply 하면
tables 부분에 정상적으로 생성이 됐다.
이러면 테이블 생성이 완료되었다.
데이터 입력
이제 행 데이터를 입력해보자.
회원 테이블 부터 입력할 거기에 membertbl 우클릭 -> Select Rows - Limit1000 을 클릭한다.
그럼 이렇게 나오는데
대충 입력하고 Apply-> Finish 를 누른다.
이렇게 나오는데 코드를 슥 보면
INSERT INTO `shopdb`.`membertbl` (`memberID`, `memberNAME`, `memberAddress`) VALUES ('Dang', '당탕이', '경기 부천시 중동');
INSERT INTO `shopdb`.`membertbl` (`memberID`, `memberNAME`, `memberAddress`) VALUES ('Jee', '지운이', '서울 은평구 증산동');
INSERT INTO `shopdb`.`membertbl` (`memberID`, `memberNAME`, `memberAddress`) VALUES ('Han', '한주연', '인천 남주 주안동');
INSERT INTO `shopdb`.`membertbl` (`memberID`, `memberNAME`, `memberAddress`) VALUES ('Sang', '상길이', '경기 성남시 분당구');
대충 데이터 입력하는 것을 살펴보니
INSERT 가 데이터를 입력한다
INTO 가 어디어디에 입력한다
'shopdb'.'membertbl' 에서 ('memberID, memberNAME, memberAdress) 부분에다가
VALUES 에 값들을 집어넣는다는 코드같다.
이제 똑같이 제품 테이블(productTBL) 데이터도 입력하자
이렇게 데이터 입력까지 완료되었다.
데이터 활용
입력한 데이터를 그대로 두고 활용하지 않는다면 데이터 구축한 의미가 없다.
이 버튼을 누르면
이렇게 되는데
그리고 shopdb 를 더블클릭하면 저렇게 굵게 바뀌는데 저기에 적용된다는 의미이다.
SELECT * FROM productTBL;
를 입력하고 번개모양이나 ctrl+ shift + enter 을 누르면 조회가 된다.
아참 여기서도 대소문자 구분 안 한다.
SELECT memberName, memberAddress FROM memberTBL;
이렇게 입력하고 조회하면
이렇게 된다.
SELECT : 선택하라
memberName, memberAddress 를
FROM 어디서?
memberTBL 에서
이런식으로 직관적이게 볼 수 있는 것 같다.
SELECT * FROM memberTBL WHERE memberNAME = "지운이";
이 코드를 입력해보면 위와 같이 나오는데
SELECT * FROM memberTBL : memberTBL 에서 모든 정보들을 가져와라
WHERE 어디서?
멤버이름이 지운이인 애들 것을.
이렇게 간다.
여기서 주의해야할 점은.
저렇게 2줄을 입력하고 엔터를 누르면 창이 2개가 똑같이 뜬다. 쿼리창에서 실행했을 때, 그 쿼리창에 있는 모든 SQL문을 전부 수행하기에 결과가 두개가 나온 것이다. 이를 방지해야한다.실행할 쿼리문을 드래그해서 선택하고 실행해야한다.
아참 주의해야할 게
CREATE TABLE `my TestTBL` (id INT);
이 코드를 실행할 때 ` 를 사용해야한다. 이름에 띄어쓰기가 가능하다. 이를때는 ` ` 이렇게 묶어줘야 띄어쓰기를 인식한다.
근데 코드실행했을 떄
왼쪽에 테이블이 생성이 안 되어있는 걸로 보이는데
Refresh ALL 을 눌러야한다.
누르면 이렇게 잘 테이블이 나온다.
지울때는
DROP Table `my TestTBL`
를 입력한다.
에필로그
일단 테이블 생성/삭제/조회/데이터 입력 까지는 다한 것 같다. 휴;
아직까지는 그렇게 어렵지는 아는 거 같다.
'데이터베이스' 카테고리의 다른 글
[데이터베이스] 데이터베이스 개체의 활용 - 스토어드 프로시저 #6 (0) | 2024.01.20 |
---|---|
[데이터베이스] 데이터베이스 개체의 활용 - 뷰 #5 (0) | 2024.01.20 |
[데이터베이스] 데이터베이스 개체의 활용 - 인덱스 #4 (0) | 2024.01.20 |
[데이터베이스] MySQL 설치하기 #2 (2) | 2024.01.11 |
[데이터베이스] DBMS 개요 #1 (1) | 2024.01.10 |