#3. 회원 데이터베이스 구축

1. 관련 프로그램을 설치한다.

1) mysql 프로그램을 설치한다.

설치하는 데는 2가지 방법이 있다.

 

<두 방법의 차이>

(방법 1)  mysql 홈페이지에서 직접 다운로드.

-> MySQL :: Download MySQL Installer 여기서 밑의 450MB 다운로드 클릭.

장점 : mysql 사용 시 전용 프롬프트 창으로 직접 접속 가능.

단점 : 다운로드 과정이 복잡하고 헷갈릴 수 있음.

(방법 2) Bitnami wamp 다운로드로 mysql 다운로드

: WAMP란, apache, mysql, php를 한 번에 다운로드할 수 있는 Bitnami 패키지이다.

장점 : 다운로드 과정이 간편함.

단점 : mysql 사용 시 mysql 서버를 키고 + cmd(command prompt 창)를 켜고 접속해야 함. 간단하지만 번거로울 수 있음.

=> 나는 (2)번 다운로드.

* 7.x 이후의 8.x 버전부터는 wamp로 설치해도 mysql 대신 mariadb라는 이름의 데이터베이스가 설치되는데, 알고보니 mysql을 만들었던 개발자가 후에 mariadb라는 이름으로 다시 만들었다는 얘기가 있다. (현재의 mysql은 oracle에 속해 있는데, 그 과정에서 지금의 mysql은 oracle에 속하게 되고 이 mysql과 기능은 똑같은 mariadb가 따로 생긴 것 같다.)

 

<mysql의 특징>

1. mysql은 데이터베이스이므로 보안이 중요하다. 

b/c 권한이 없는 외부에서 멋대로 데이터를 변경하거나 빼 나가는 것을 막기 위함이다.

=> 그래서 해당 mysql 데이터베이스의 최고 권한을 가지는 root user, 최고 사용자를 설정하는 작업이 꼭 있다.

root 사용자의 이름을 따로 설정할 수도 있고(선택사항), 이에 따른 비밀번호는 반드시 설정해야 한다(강제, 필수).

 

2. root 사용자 계정으로 로그인하면, 다른 사용자에게, 어떤 범위의 권한을 부여할지까지도 설정할 수 있다.

ex) 사용자 A에게 데이터베이스 aa의 관리 권한을 부여하고, aa의 비밀번호를 a'로 설정할 수 있다.

이 경우, 로그인할 때 사용자 이름을 A로, 비밀번호를 a' 로 입력하면 사용자 A의 권한으로 데이터베이스를 사용할 수 있다.

* 다만 사용자 A는 모든 데이터베이스의 관리 권한을 가진 것이 아니므로, aa가 아닌 다른 데이터베이스를 관리할 수는 없다.

또한 root 사용자가 바로 delete문을 사용해서 사용자 A의 권한을 제거할 수도 있다.

=> 그러므로, 생활코딩 강의에서는 계정의 중요한 설정을 하는 것이 아니면 다른 사용자 계정을 만들어서, 그 계정에서 데이터베이스를 관리할 것을 권했다. 

(mysql 문법을 배우고 설치 및 구축을 하는 데 생활코딩 강의의 도움을 많이 받았다.)

 

2) mysql과 java 프로그램을 연결한다. (연결하는 driver/connector를 설치, 지정한다)

-> 또 다른 방법도 있겠지만, 여기서는 mysql Connector를 설치해서 사용한다.

(지금은 spring 프레임워크 등에서 다양한 방법이 많다고 하더라)

(1) mysql 홈페이지에서 connector를 다운로드 받는다.

(2) eclipse의 경우,

: 해당 프로젝트 우클릭 -> properties -> 왼쪽의 여러 옵션 중 Java Build Path -> ClassPath => Add Jars -> connector jar의 경로 지정.

 

2. mysql 코드를 입력한다.

: 데이터베이스를 만들고, 테이블을 만든 뒤 데이터를 넣어 보는 것까지!

 

* 코드 치기 전 주의 *

: 운영체제에 따라 대/소문자 구분 여부가 다르다!

Window는 대소문자 구분을 하지 않아서, 아래의 코드를 소문자로 입력해도 상관이 없다.

<-> 그러나 다른 Mac OS, Linux 등의 경우 대소문자를 구분하므로, 아래의 검정 글자는 반드시 대문자로 입력해야 한다.

 

(1) 데이터베이스 만들기

: 처음 시작할 때는 테이블도 없고, 테이블들을 모아 둘 데이터베이스도 없다. 그러므로 우선 데이터베이스를 먼저 만들고, 그 안에 테이블을 만드는 방식으로 접근해야 한다.

: CREATE DATABASE 데이터베이스 이름;

CREATE DATABASE BBS;

(2) 데이터베이스 안의 테이블 만들기

: 여기서의 데이터베이스는 mysql 데이터베이스 전체를 의미하는 게 아니다. 

테이블이 하나의 파일이라고 하면, 여기서의 데이터베이스는 관련 파일들을 하나로 묶어 주는 폴더이다. 의미가 헷갈릴 경우 스키마(schema)라고도 하지만, 데이터베이스라는 용어가 더 일반적이다.

 

[1] 테이블을 만들기 전에, 어떤 데이터베이스를 사용할지를 먼저 지정해 줘야 한다.

데이터베이스가 하나일 때도 마찬가지다. 혼선을 방지하기 위해서 먼저 사용할 데이터베이스 이름을 지정한다.

: USE 데이터베이스 이름;

USE BBS;

[2] 데이터베이스 안에서 사용할 테이블을 만든다.

: CREATE TABLE 테이블 이름(테이블에 쓰일 column 설정);

 

column의 경우, 보통은 이런 특징을 가진다:

: ( column 이름 column의 자료형(글자 수) null 여부 기타사항 );

 

여러 column을 나열한 후, 마지막에는 반드시 primary key를 지정해 줘야 한다.

* primary key : 데이터베이스의 각 행(record)을 구분하는 기준이 되는 column으로, primary key로 지정된 column에서는 값이 중복될 수 없다.

: PRIMARY KEY(column 이름));

마지막은 이렇게 마친다.

 

column의 자료형은 INT(보여줄 글자 수), VARCHAR(저장할 글자 수), TEXT, EMAIL, DATETIME 등 매우 다양하다. 

(글자 수)를 입력해야 하는 자료형이 있고 아닌 자료형도 있다.

null 여부는 NULL(입력하지 않아도 됨) 또는 NON  NULL(반드시 입력해야 함) 으로 입력하면 되는데, primary key인 경우는 null로 입력할 수 없으니 주의하자. (바로 아래처럼 추가적인 경우는 예외)

 

+ 많은 테이블에서 종종 ID column을 사용하고, ID column을 primary key로 사용한다. 그런데 보안의 의미가 아니라 일련번호의 의미로 쓰인다면, 일일이 값을 입력하기 귀찮다.

=> 데이터가 추가될 때마다 ID의 값이 자동으로 1씩 증가하도록 기타사항에 코드를 추가할 수 있다.

이렇게!

: AUTO_INCREMENT, ~ 다른 내용 이어짐

 

테이블 생성 예시:

CREATE TABLE USER(
	userID INT(11) NON NULL AUTO_INCREMENT,
        userPassword VARCHAR(20) NON NULL,
        userName VARCHAR(20) NON NULL,
        userGender VARCHAR(10) NULL,
        userEmail VARCHAR(30) NULL,
        PRIMARY KEY(userID)
        );

 

(3) 데이터베이스 안에 데이터 입력하기(INSERT)

INSERT SQL 문을 사용해서 각 column에 데이터를 입력해 준다.

* 이때 NON NULL인 column의 값을 입력하지 않으면 오류가 발생한다.

: INSERT INTO 테이블 이름 (column 1, column 2, column 3, ... , column n ) VALUES (value 1, value 2, value 3, ... , value n);

이때, 모든 column의 값을 다 입력하는 경우 (column1, ... , column n) 부분은 생략이 가능하다.

또한 테이블 이름과 VALUES는 나열한 값의 순서대로 각각 매칭된다. 

반드시 테이블 이름() 안의 column 개수와, VALUES() 안의 값의 개수가 같아야 오류 없이 매칭된다.

 

+ 데이터 값으로 SQL 함수를 사용할 수 있다.

Ex. DATETIME의 경우, 현재 시간을 데이터로 넣고 싶다면 NOW() 함수를 이용하기도 한다.

문자열을 VALUES() 안에 넣는 경우, ""이 아니라 '' 안에 넣어줘야 한다.

<-> 그러나 column 이름은 () 안에 넣어도 "" 이나 ''을 쓰지 않는다.

 

예시:

INSERT INTO USER(userID, userPassword, userName) VALUES(14, 'sicnek##321', 'sinnz');

 

 

 

 

 

'Tutorials > JSP 기능을 이용한 게시판 만들기' 카테고리의 다른 글

#0. Intro  (0) 2021.08.15

- 이 카테고리에서는 Spring 프레임워크를 사용한 Youtube의 tutorial 영상들을 따라하면서, 그 와중에 내가 이해한 것들을 필기하면서 진행한다. (모르는 점들은 Q. 를 이용해서 적을 것이다)

- 영상 링크 : https://youtu.be/9SGDpanrc8U

- 그날그날 학습한 분량별로 표시하면서 올릴 예정. 중간중간 Q 해결이나 말로 풀어쓰기 어려운 것들은 화면 캡처/아이패드 필기 캡쳐를 활용할 수 있다.

 

- Q. 는 노란색 밑줄 && 굵은 글씨로!

- 이 강의에서 풀어야 할 의문은 아니지만, "이런 분야도 배워봐야지", "관련이 있을 것 같다" 등의, 상대적으로 큰 분야에 대한 의문(?)은 초록색 밑줄 && 굵은 글씨를 사용한다.

+ Recent posts