MySQL의 설치와 기본 작동을 알아보고, 기존에 Oracle로 작업한 JDBC를 MySQL로 이관하는 작업에 대해 포스팅하였다.
1. 설치
1) 파일설치
: 타 블로그의 포스팅을 첨부하였다
https://blog.naver.com/coding_helper/222632830115
2) 스키마 생성
: 타 블로그의 포스팅을 첨부하였다. 파일 설치 완료 후 설치된 파일 중에서 아래 블로그에서 사용하는 프로그램을 실행하면 된다.
이때 스키마란 계정의 개념과 같다. 테이블들의 묶음이라고 할 수 있으며, DB의 구조와 제약조건에 관한 명세(설명)를 기술한 집합이라고도 설명할 수 있다.
https://blog.naver.com/coding_helper/222632837868
2. Foreign key
: 외래키라고도 한다. 테이블간의 관계에 대한 제약조건이라고 할 수 있으며, 다른 테이블의 pk를 참조하는 key이다.
즉, 이 foreign key를 통해 다른 테이블의 pk로 접근할 수 있다는 의미이다.
show databases;
show tables;
-- 모델링
-- 이용할 데이터를 DB에 맞게 설계하는것
-- 1 요구분석 2 개념설계(ERD) 3 논리설계(테이블) 4 물리설계(실제 생성) 5 구현
-- [1] 상품과 상품주문 테이블 2개가 필요하고,
-- 상품을 주문하면 그 내용이 상품주문 테이블에 저장된다.
-- 상품 상품번호,이름,가격 상품주문은 주문자정보가 포함되어있다.
-- [2] ERD
-- [3] 테이블 그리기
-- 상품 테이블 pk: 상품번호
-- 상품주문 테이블 pk: 주문번호 fk: 상품번호
-- [4]
create table product(
pid int primary key auto_increment, -- 개체 무결성: 모든 테이블이 pk로 지정된 컬럼을 가져야한다.
pname varchar(20) not null,
price int default 10000
); -- create drop alter DDL
insert into product (pname) values('목도리');
insert into product (pname) values('장갑');
insert into product (pname) values('가방');
select * from product; -- insert select update delete DML
create table board(
bid int primary key auto_increment,
mname varchar(20),
pid int, -- fk가 될 컬럼(속성)
constraint testfk foreign key (pid) references product (pid) on delete cascade
-- 제약조건명 | 대상이 되는 테이블의 pk가 fk로 설정되어야만한다!
);
insert into board values(1,'아무무',1);
insert into board values(2,'아리',2);
insert into board values(3,'티모',3);
insert into board values(4,'아무무',2);
select * from board;
drop table product; -- 테이블사이의 관계가 형성되면, 삭제시에도 순서가 생긴다. 의존성이 생겼다.
delete from product where pid=2; -- on delete cascade
* auto_increment *
오라클에서 "nvl(max(mNum),0))+1 from 테이블명"과 같은 역할을 한다. 즉, pk가 유일할 수 있도록 자동으로 생성시마다 +1을 해주는 기능을 한다. 이때 이미 생성된 테이블에서도 사용할 수 있는데, 방법은 아래와 같다.
#1부터 시작할 수 있도록 하는 문장
ALTER TABEL 'product' MODIFY 'pid' INT NOT NULL AUTO_INCREMENT;
#특정값으로 시작할 수 있도록 하는 문장
ALTER TABLE product AUTO_INCREMENT=시작할 숫자;
더 자세한 내용은 아래의 링크 포스팅에서 확인이 가능하다.
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=goddlaek&logNo=221005664911
3. 이관작업_Oracle에서 MySQL
1) 작업순서의 정리
- 정보 수집(MySQL에서 쓰이는 driverName, url , user, password)
- mysql.jar파일 설치 및 빌드패스 추가
- MySQL에서 테이블 생성
- 작동 확인
2) 작업결과
: JDBCUtill 클래스를 사용하여 DB에 접근하고 있으므로, 해당 클래스에서만 수정을 진행하였다.
① JDBCUtll변경
package model;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.SQLException;
// 공통되는 로직을 따로 관리하기 위한 클래스
public class JDBCUtill {
//static변수를 사용하여 자원으로 선언
static final String driverName="com.mysql.cj.jdbc.Driver";
static final String url="jdbc:mysql://localhost:3306/hamdb"; //hamdb부분은 본인이 사용중인 db이름 입력
static final String user="root";
static final String passwd="1234";
// DB에 연결 == connection 확보하기에 ouput으로 설정
public static Connection connect() {
Connection conn = null;
try {
Class.forName(driverName);
conn=DriverManager.getConnection(url, user, passwd);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return conn;
}
// conn, stmt 닫는 메서드
public static void disconnect(PreparedStatement pstmt, Connection conn) {
try {
pstmt.close();
conn.close();
} catch (SQLException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
② MySQL에서 테이블 생성
#테이블 생성
create table mem(
id varchar(15) primary key,
name varchar(15) not null,
point int default 0
);
#초기 데이터 삽입
insert into mem values('asdf', '김길동', 200);
insert into mem(id, name) values('qwere', '박또치');
#삽입 확인
select * from product2;
# 테이블생성
create table product2(
id int primary key,
name varchar(50) not null,
price int,
cnt int default 0
);
#초기 데이터 삽입
insert into product2 values(1001, '신발', 30000, 5);
insert into product2 values(1002, '바지', 15000, 2);
insert into product2 values(1003, '나시', 5000, 10);
③ 결과확인
[출력화면 : ★ -> 입력]
로그인할 아이디 입력 :
asdf
===메뉴===
1. 목록조회
2. 상품구매
3. 서비스나가기
=========
1
[1001] 신발30000원 | 5개
[1002] 바지15000원 | 2개
[1003] 나시5000원 | 10개
===메뉴===
1. 목록조회
2. 상품구매
3. 서비스나가기
=========
2
구매할 상품번호입력>>> 1002
dao로그 : 사용자구매성공
dao:사용자 구매 성공
성공
===메뉴===
1. 목록조회
2. 상품구매
3. 서비스나가기
=========
2
구매할 상품번호입력>>> 1002
dao로그 : 사용자구매성공
dao:사용자 구매 성공
성공
===메뉴===
1. 목록조회
2. 상품구매
3. 서비스나가기
=========
3
이용해주셔서 감사합니다.
로그인할 아이디 입력 :
'DBMS' 카테고리의 다른 글
[ORACLE/TIBERO] 함수 (0) | 2022.08.18 |
---|---|
[DBeaver] Tibero 연결 (0) | 2022.07.05 |
[Oracle] 능력단위평가 풀이 (0) | 2022.01.28 |
[Oracle] 다양한 검색과 출력_Oracle 함수 (0) | 2022.01.28 |
[Oracle] 프로젝트의 설계 & 두개의 TableDB (0) | 2022.01.26 |