MVC를 배우면서 저장소 부분은 임의로 자바에 만들어 사용했지만 사실은 서버를 나가서 다른 모델에서 들고오는게 일방적이다. 그래서 오늘은 간단하게나마 이런 저장소를 다뤄보는 시간을 가져보기로 했다.
MySQL 다운로드
https://downloads.mysql.com/archives/installer/
데이터베이스는 데이터 파일의 중복을 피하고 조직적으로 구조화시킨 데이터의 모음이라고 보면 된다. 이러한 데이터 베이스는 단순히 입/출력을 반복하기 때문에 저장소 정도로만 생각할 수 있지만 실제로는 회사의 중요한 자산 중 하나로써 기능한다. 그렇다면 이런 중요한 자료를 어떻게 관리할 수 있을까? 그건 마이크로 소프트의 윈도우와 같이 하나의 운영체제로 사용할 수 있는데, 사용자 인터페이스에 특화되어 있는 운영체제가 아니다보니 데이터 베이스를 관리하기 위해서는 프로그램과 함께 이를 위한 전문가가 필요하다는 것이 단점이 될 수 있겠다.
그렇다면 이제 위 사이트에서 다운받은 MySQL을 사용하여 데이터 베이스의 기초지식을 알아보도록 하겠다.
MySQL은 데이터베이스의 표준 언어인 SQL을 사용하며, 오픈소스로 널리 사용되고 있는 프로그램이다.
SQL 문장 | 명령어 | 설명 |
데이터 정의 언어 (DDL) | CREATE, ALTER, DROP | Object관련 생성/수정/삭제를 할 수 있음 |
데이터 조작 언어 (DML) | SELECT, INSERT, UPDATE, DELETE | 데이터 관련하여 삽입/수정/삭제를 할 수 있음 |
데이터 제어 언어(DCL) | GRANT, REVOKE, COMMIT | 권한에 관련된 설정을 할 수 있음 |
create database test9;
먼저 데이터 베이스를 생성한다.
show databases;
생성을 하게 되면 콘솔창에도 완료 메세지가 뜨지만 확인하고 싶다면 해당 명령어를 사용하여 모든 데이터 베이스를 확인한다. 그러면 아래에 현재 가지고 있는 데이터베이스 목록이 뜨게 된다.
use test9;
생성을 했어도 바로 사용할 수 있는 것은 아니다. 물론 사용할 수 있지만 그건 테이블을 만든 아래에서 설명하겠다. 여기서 use명령어는 java에서 import문과 유사한 성격을 가지고 있다.
create table kwangsu( id varchar(10), pw varchar(10), age int );
여기서 말하는 테이블은 스프레드시트의 시트와 유사하다. 테이블은 하나의 시트가 되며, 나는 여기서 kwangsu라는 이름의 시트를 하나 만든 셈이다. 단, 생성만 한다고 끝이 아니며 해당 시트에 들어갈 열의 속성을 지정해주어야 한다. 이를 여기서 컬럼이라 부르며, id / pw / age 를 받을 수 있는 컬럼 세개를 지정해주었다. varchar는 일반적으로 쓰인 char를 뜻하는데, 괄호에 들어간 숫자는 최대 글자 수를 얘기한다. java와는 반대로 데이터 타입이 데이터 이름 뒤에 붙는다.
만약 여기서 use명령어를 사용하지 않고 진행하려면 만들 테이블명 앞에 test9를 붙여야 생성할 수 있다.
(ex. test9.kwangsu)
show tables;
위에서 데이터베이스가 만들어졌는지 확인하기 위해 사용한 명령어와 똑같다. 여기서는 만들어진 테이블을 보여준다.
desc kwangsu;
해당 테이블이 가지고 있는 컬럼 목록을 보여준다.
insert into kwangsu(id,pw,age) values("a", "1234", "9");
만들어진 테이블에 값을 집어넣는 명령어다. insert into 다음에 테이블 이름이 오되, 담을 값이 열거된 형태와 다르지 않다면 컬럼 부분은 생략할 수 있다. 테이블을 생성한 방식도, 값을 넣는 방식도 어딘가 함수와 닮아 있어 이해하기 어렵지 않았다.
select id,pw,age from kwangsu;
데이터가 잘 담겼는지 확인하기 위해서 select 명령어를 사용할 수 있다. from뒤에 오는 테이블에서 보고자 하는 컬럼을 선택하면 해당 컬럼만 보여준다.
select * from kwangsu where pw="1234";
위와같이 선택할 때 *(any)를 쓰면 모두 선택이 된다. 이후 where 명령어 뒤로 구체적으로 선택하고자 하는 컬럼값을 넣어주면 해당하는 값을 가진 행만 보여주게 된다.
update kwangsu set age=29 where id='a';
기존 값을 바꾸고 싶을 때 사용하는 명령어로, 테이블명 뒤에 바꿀 컬럼값을 적어준다. 그리고 위와 같이 행을 선택하기 위해 where 명령어를 사용하는데, 여기서 주의해야 할 점은 다중선택으로 바꾸는게 아니라 단일로 바꾸고자 할 경우에는 꼭 유일한 값(ex. 여권번호, 주민등록번호 등...)을 가진 컬럼을 지정해주어야 한다. 데이터베이스의 기본적인 기능은 중복을 피하는 것인데, 이를 지정하기 위한 명령어는 뒤에서 설명하겠다.
delete from kwangsu where id='c';
데이터를 삭제하기 위해서 사용하는 명령어이다. 화면에 보이는 것 처럼 '행'으로만 삭제할 수 있으며, 이 또한 위와 같이 where로 지정된 값이 삭제된다.
drop table book;
해당 테이블을 삭제할 때 쓰는 명령어다. drop뒤에 데이터베이스를 하면 해당 데이터 베이스를 지울 수 있다.
b_id varchar(10) not null primary key
테이블에 컬럼을 만들 때, null값이 허용되지 않는 컬럼을 지정할 수 있는데 그 명령어가 not null이다. 또, 위에서 말한 것 처럼 id와 같이 중복이 되면 안되는 값들을 관리하기 위해 primary key를 지정하는데, 이 명령어가 지정되어 있는 컬럼에서는 중복된 값이 허용되지 않는다.
이제 MySQL을 활용하여 데이터를 저장하고 관리하는 것에 대해 배웠으니 JDBC를 이용하여 Java와 연결하는 법에 대해서 알아보고자 한다. JDBC는 Java 혹은 JSP 프로그램 내에서 데이터베이스와 관련된 작업을 처리할 수 있도록 도와주는 번역기라고 보면 이해하기 쉽다.
Class.forName("com.mysql.jdbc.Driver")
우리는 어떤 제품을 처음 설치하거나 사용할 때 반드시 드라이버를 필수로 사용하게 된다. 이는 제품과 프로그램 사이에서 틀어질 수 있는 언어를 번역하여 충돌을 방지하기 위함으로, Java와 SQL 또한 서로 다른 언어를 사용하기 때문에 이들 사이에는 번역기가 필요하다. Class.forName( )을 통하여 메모리에 해당하는 드라이버를 로드하면 준비는 끝난다.
Connection conn = DriverManager.getConnection( 주소, 아이디, 비밀번호 )
드라이버가 로드 되었다면 본격적으로 Java에서 데이터베이스를 연결하기 위해 Connection이라는 새로운 객체를 사용한다. 주소는 주소는 데이터베이스의 경로를 나타내고 아이디와 비밀번호는 MySQL을 설치할 적에 만들어둔 인스턴스의 정보를 말한다.
이렇게 초기 설정을 잡아두면 연결을 완료된다. 아무런 로직을 사용하지 않고, 단순 연결확인을 위해 콘솔에 기록을 남겨보면 정상적으로 연결되는 것을 확인할 수 있다.
'아이티에듀넷' 카테고리의 다른 글
2024-10-28 :: 063 CRUD 정리하기 (0) | 2024.10.28 |
---|---|
2024-10-25 :: 062 CRUD 이해하기 (0) | 2024.10.25 |
2024-10-23 :: 060 쿠키(Cookie) (0) | 2024.10.23 |
2024-10-22 :: 059 세션(Session) (0) | 2024.10.22 |
2024-10-21 :: 058 에러 페이지와 필터 (0) | 2024.10.21 |