BE/Java [Servlet , Spring]

Oracle (SQL Developer) 테이블 생성 + JAVA 연결

시녜's 2023. 1. 17. 23:51

서버(오라클)<->클라이언트(웹에서는 브라우저, sqldeveloper)


오라클(무겁고 비용 ↑ , 보안이 좋음 - 대기업에서 주로 사용)

 

 설치방법 
OracleXE112
SQL (standard query language)
*오라클 깔고 -> 서비스(제어판)에서 확인
run SQL command Line으로 실행

*오라클에서는 대소문자 똑같이 인식한다.

 

[시스템 생성]

-ueser name: system , password:1234
-> mysql-installer-> sqldeveloper (클라이언트)

create user name identified by pass;

grant connect,resource,dba to name;

[user 유저생성 & 권한부여]

create user ex01 IDENTIFIED BY pass;
유저 생성해라 이름은 ex01, 비번은 pass

권한부여 - 연결, 리소스, 관리자권한

 

새로고침 -> 새 접속(+표시) -> 생성된 name유저에서 작성


실행 -> ctrl + enter

 

 SQL문 

 create table 테이블명(필드,필드,필드);  테이블 생성 **필드 작성은 필드명 - 타입 순으로
create sequence 시퀀스start with 시작번호increment by 증감값; 시퀀스 생성(시작번호부터 자동으로 증감값만큼 수 증가)
 insert into 테이블명(필드,필드) values(데이터,데이터);  테이블의 해당 필드에 데이터를 삽입
 select * from 테이블명 where 조건절;  조건에 해당되는 데이터 조회
 update 테이블명 set 필드 = 바꿀값 where 조건절;  테이블에서 조건에 해당되는 필드의 값을 수정
 delete from테이블명 where 조건절;  테이블에서 조건에 해당하는 데이터 삭제(테이블X)
 drop table 테이블명;  해당 테이블 삭제(초기화)
 drop sequence 시퀀스명;  해당 시퀀스 삭제(초기화)
 desc 테이블명  테이블 속성

** where절은 상황에 따라 써도 되고 안써도 됨(조건이 필요할 때만)

 

[테이블 속성]

- 필드에 primary key 작성해서 기본키 설정할 수 있다. (기본키는 중복되지 않는 고유값이며 필드 하나만 지정할 수 있다)

- default 값을 설정해줄 수 있다.

 

[데이터 조회 select]

- SQL문에서 제공해주는 sum, max, min, avg 함수를 사용하여 데이터를 연산할 수 있다.

- 데이터 연산은 해당 column(세로열)만 가능하며 row값은 직접 연산자를 넣어 처리해야한다.

 

[DB문자타입]

char / varchar

- char(3) : 세 글자 단위만 넣을 수 있다.  (자릿수가 지정)

- varchar(20) : 쓰면 글자수 20이 멕시멈으로 작성 가능. 남은 자릿수는 공백처리

- 문자는 작은 따옴표 안에다 작성한다 -> '홍길동'

 

[조건문]

= 는 일치하는 거 검색

*은 전체 검색

like는 부분 검색 + % (와일드카드) 같이 사용한다.

 like %'이' 이로 끝나는
 like '이'% 이로 시작하는
 like %'이'% 이가 포함된
/*테이블 새로 생성*/
 create table score(
  no int primary key,
  name varchar(200),
  kor int default 50,
  eng int default 0,
  math int default 0
 );
 
 /*데이터 삽입*/
 insert into score(no,name)
 values(10,'홍길동');
 insert into score(no,name)
 values(20,'심청이');
 /*조회*/
 select score.*,kor+eng+math as tot,(kor+eng+math)/3 as avg from score;
 select sum(kor) from score;
 select avg(kor) from score;
 select max(kor) from score;
 select min(kor) from score;
 /*테이블 삭제*/
 drop table score;
 /*수정*/
 update score set kor=90, eng=90, math=90 where no=10;
 update score set kor=100, eng=100, math=100 where no=20;

만드는 순서

1. oracle로 테이블 생성 -> 테이블이 있어야 자바로 데이터를 넣어줄 수 있다(테이블명으로 조회)

 

2. Java에서 DB관리하는 클래스 생성(Database.java)

- static리턴타입 Connection 타입의 con객체 생성 (오라클과 연결하기 위해 작성한다)

- static리턴 타입은 static{ } 안에다 작성해줘야 함.

import java.sql.*;

//db연결하기 위한 클래스
    public class Database {
    public static Connection con; 
        static {
            try {
                Class.forName("oracle.jdbc.driver.OracleDriver");
                con = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:xe","ex01","pass");
                System.out.println("DB연결성공");
            }catch(Exception e) {
                System.out.println("DB연결오류"+e.toString());
}
}
}

3. 라이브러리 연결

프로젝트 선택 - 우클릭(특성) -> 자바 빌드경로 -> 라이브러리 ->  modulepath -> 외부 JAR추가 선택 -> ojdbc6.jar 선택

*위치는 c드라이브 oracleex - > app -> oracle -> product -> 11.2.9 -> server -> jdbc -> lib에 있음

 

*JDBC  - DB와 연결해 데이터를 주고받을 수 있도록 해주는 자바의 인터페이스

- Class.forName( )을 이용해 드라이버 로드 > DB에 접근하기 위해 드라이버 클래스를 로드

- DriverManager.getConnection( )으로 연결 > DB연결 위함

- Connection 인스턴스를 이용해 Statement객체 생성

- SQL을 담는 Statement 객체의 결과를 ResultSet 또는 int에 받아준다. 

 

4. 필드 관리하는 클래스, 정보(메서드) 관리 클래스 DAO 생성

- DAO에는 Connection con = Database.con;으로 Java클래스에서 DB와 연결해 놓은 con객체를 불러와 사용한다.