DB(데이터베이스)
데이터들의 집합소(저장소)
단순한 파일
DBMS(DataBase Management System)
데이터베이스를 관리하는 시스템
오라클, 마리아, 몽고, MySQL,...
Table(테이블)
특정 집단에 대한 데이터가 표 형태로(행,열) 저장되는 공간
테이블을 설계한다 라는 뜻은 특정 데이터들이 들어올 수 있도록
공간을 확보하고 체계적으로 틀을 잡아둔다는 뜻이다
자동차 테이블 설계 : 자동차는 브랜드, 색깔, 가격, ... 이런 데이터 존재 정의
Row(행, 레코드, 튜플)
하나의 데이터
그 줄의 모든 데이터들은 하나의 대상에 대한 데이터들이다
내차에 관한 데이터 [ferrari | red | 65000 ]
엄마차에 관한 데이터 [k7 | white |. 6000 ]
Colum(열, 속성, 필드)
공통된 값들의 주제
같은 열의 데이터들은 모두 같은 속성의 데이터들이다
[ 브랜드 | 색깔 | 가격 ] -> [ferrari | red | 65000 ] -> [k7 | white |6000 ]
Primary Key(PK)
고유한 값(각 정보들의 구별점 역할)
중복이 없고, 비어있지 않음
==================================================
사용자
==================================================
고객관리 프로그램 ||||||||| 주문관리 프로그램
==================================================
데이터베이스
고객 테이블[아이디, 이름, 연락처, 주소]
상품 테이블[상품명, 상품가격, 상품번호, 남은수량]
주문 테이블[주문번호, 아이디, 주소, 상품명, 상품가격, 총 개수]
==================================================
RDBMS
관계형 데이터베이스 관리 시스템
테이블끼리 서로 관계를 맺은 채 설계되는 데이터베이스 관리 시스템
FK(Foreign Key)
외래키
테이블끼리 관계를 맺을 떄 가져오는 다른 테이블의 PK
MySQL
세계에서 가장 많이 쓰이는 오픈 소스의 RDBMS이다
다양한 운영체제에 다양한 언어로 활용 가능하다
표준 SQL 형식을 사용한다
sql문
Structured Query Language
한줄씩 번역되고 빈번한 수정이 있을 때 효율적이다
번역과 동시에 실행된다(번역 파일이 따로 존재하지 않는다)
DDL
DML
DCL
TCL
JDBC
Java DataBase Connectivity
자바에서 데이터베이스에 접속할 수 있도록 해주는 자바 API
Connection
PreparedStatement
ResultSet SELECT문
1. JAVA에서 문자열로 SQL문을 작성
2. 설치되어 있는 Driver를 통해서 Connection객체 생성
3. Connection 객체를 통해 PrepatedStateMent 객체 생성
4. SQL문 수행 후 결과(SELECT 문이라면)를 ResultSet 객체로 받기
Mysql 연결하여 사용하기
mysql.com/products/connector/
mysql 커넥터 자바를 검색한 후 원하는 버전을 다운 받으면 된다
다운받은 이후 이클립스 빌드패스를 이용하여 해당 jar파일을 연결해준다
그 이후 DBConnection 클래스를 만들어 다음과 같은 코드로 연결해 준다
package day20;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class DBConnection {
private static Connection conn;
public static Connection getConnection() {
if(conn == null) {
//연결해주기
try {
Class.forName("com.mysql.cj.jdbc.Driver");
String url = "jdbc:mysql://localhost:3306/test";//스티마 주소
String user = "root"; // 유저이름
String password = "aaa";// 비밀번호
conn = DriverManager.getConnection(url,user,password);
}catch(ClassNotFoundException e) {
System.out.println("드라이브 로딩 실패 : " +e);
}catch(SQLException e) {
System.out.println("DB연결 실패 : " + e);
}
}
return conn;
}
}
DB커넥션을 만들어 준 이후에 JDBC를 이용해 주면 된다
sql문을 사용하여 데이터를 불러오거나 추가해줄 수 있으며, PreparedStatement / ResultSet / ps.executeQuery() / rs.next() / excuteUpdate등을 사용하면 된다.
사용방법은 아래와 같다.
package day20;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLDataException;
import java.sql.SQLException;
public class JDBCTest {
public static void main(String[] args) {
String sql = "SELECT NOW() FROM dual";
try {
//설계도 읽기
Class.forName("com.mysql.cj.jdbc.Driver");
//지을 위치와 방법
String url = "jdbc:mysql://localhost/test";
String user = "root";
String password = "aaaa";
//지어진 것 돌려받기
Connection conn = DriverManager.getConnection(url,user,password);
//왔다갔다할 것 만들기
PreparedStatement ps = conn.prepareStatement(sql);
//쿼리문 수행
ResultSet rs = ps.executeQuery();
// rs.next(); : rs의 화살표를 하나 이동시키고 (행을 하나 이동)
// 가리키고 있는 행이 존재한다면 true /존재하지 않는다면 false
if(rs.next()) {
String data = rs.getString("NOW()");
System.out.println(data);
}else {
System.out.println("데이터가 존재하지 않습니다");
}
//INSERT, UPDATE, DELETE : excuteUpdate() - 수정된 행의 수 return
//SELECT : excuteQuery() - 검색 결과 테이블(ResultSet) return
sql = "INSERT INTO test(strdata,timedata) VALUES (?,?)";
ps = conn.prepareStatement(sql);
ps.setString(1, "apple");
ps.setString(2, "2021-12-13 10:36:52");
int result = ps.executeUpdate();
if(result == 1) {
System.out.println("데이터 추가 성공!");
}else {
System.out.println("데이터 추가 실패");
}
sql = "SELECT * FROM test";
ps = conn.prepareStatement(sql);
rs = ps.executeQuery();
System.out.println("-----test 테이블 전체 내용 --------");
while(rs.next()) {
int intdata = rs.getInt("intdata");
//데이터를 받아올 떄에는 컬럼의 위치(순번)로도 가능하다
String strdata = rs.getString(2);
String timedata = rs.getString("timedata");
System.out.println(intdata + " / " + strdata + " / " + timedata);
}
}catch(ClassNotFoundException e) {
System.out.println("드라이브 로딩 실패: " +e);
}catch(SQLException e) {
System.out.println("데이터베이스 연결 실패 : " + e);
}
}
}
INSERT, UPDATE, DELETE : excuteUpdate() - 수정된 행의 수 return
SELECT : excuteQuery() - 검색 결과 테이블(ResultSet) return
'언어의 기초 > 자바(JAVA)' 카테고리의 다른 글
[JAVA]배열 (0) | 2022.01.11 |
---|---|
[JAVA]쓰레드 (Thread) / MVC 모델 (0) | 2021.12.13 |
[JAVA] Object클래스, Wrapper, Generic (0) | 2021.12.06 |
[coolsms] java로 문자 보내기 (0) | 2021.12.02 |
[JAVA] 익명 클래스 (0) | 2021.11.30 |