리우's IT Story
article thumbnail
728x90
반응형
반응형

2023.06.29 - [취업반 기록] - 가상머신 사용방법 (vmware) , sql과 dataBase의 정의, 익히기

 

가상머신 사용방법 (vmware) , sql과 dataBase의 정의, 익히기

가상머신 종료 가상머신저장 take Snapshot 클릭 렌치 : 스냅샷의 기록을 볼 수 있음 스냅샷찍어놓고 다시부팅 부팅 root 계정으로 로그인 ifconfig 윈도우 pc랑 리눅스랑 통신이 가능한 상태 = ping 만약

ji7290.tistory.com

이전 글에서는 가상머신의 사용방법과  oracle  sql database에 대해서 간략하게 다뤄보았다. 

 

 

가상머신에 접속한다 

lsnrctl status 

가상머신을 접속했을때 포트번호와 호스트가 정상적으로 연결됐는지 확인한다. 

 

 

 

sql delveloper를 켜서 접속해준다. 

 

sql 파일을 꺼내서 내 하드디스크에 저장하는 방법 (EXPORT)

 

 

1.압축됨 빼고 전부 체크 

 

2.찾아보기 클릭 저장할 폴더 선택 

 

 

3. 요약으로 이동합니다 체크 -> 다음 클릭 

 

4. 완료 클릭 

 

오후취업반 폴더에 저장된 .TXT 파일 확인 

 

 

 

상품에 대한 정보를 테이블로 생성
table product

 

 

create table product (
        idx         number,
        name        varchar2(100),
        price       number,
        expireDate  date,
        memo        varchar2(1000)
    );
    
insert into product values (
    1,
    '코카콜라(캔) 190ml',
    900,
    '24/04/01',
    '코카콜라 (캔) 소형'
    );
    
insert into product values (2, '코카콜라(pet) 500ml',1500, '24/04/01', '코카콜라 (pet) 중형');
insert into product values (3, '코카콜라(pet) 1.5L',2000, '24/04/01', '코카콜라 (pet) 대형');
insert into product values (4, '스프라이트 (캔) 300ml',1200, '24/05/01', '스프라이트(캔) 300ml');
insert into product values (5, '꼬북칩',1500, '24/02/01', '꼬북칩');

select * from product;

select * from product order by idx;

select * from product order by name;

select * from product order by expireDate;

 

 

 

 

select (조회) 구문연습하기

 

 

 

상품번호 순으로 정렬하기 

 

 

상품 이름 순으로 정렬하기 

 

 

유통기한 순으로정렬하기 

 

 

상품가격이 1000원 미만인 상품만 조회하기 

 

 

상품 번호가 3번인 상품만 조회하기 

 

 

상품 이름이 코카콜라를 포함하는 경우에만 조회하기 

 

 

상품의 이름에 can을 포함하는 경우에만 조회하기 

 

 

상품의 이름에 코카콜라를 포함하면서 가격이 1000원 이상인 상품만 조회하기 

(두가지의 조건을 같이 쓸때는 and를  쓰면된다. ) 

 

 

 

상품의 유통기한이  2024년 4월1일부터 2024년 4월 30일 사이인 상품만 조회하기 

 

상품의 번호가 짝수인 경우에만 불러오기 

mod( a, b )  =>  a % b

 

 

수식 연산하기, dual은 가상 테이블 

 

 

컬럼 이름에 별칭 부여하기 

 

 

SELECT 응용 구문 전체정리 
 -ORDER BY  특정 컬럼 조건으로 조회 
-WHERE 특정 객체의 조건으로 조회 
- AND  두가지의 조건으로 조회
-BETWEEN 특정 컬럼 조건의 A,B 사이에있는 값을 조회 
-MOD 나눗셈 연산 % (나머지)
-DUAL  가상 테이블 

 

 

 

이제 이클립스에서 sql DB에 있는 데이터를 불러와보자

 

 

 

 

 

 

JDBC : Java DataBase Connetivity

java프로젝트를 새로만들어주고 

자바를 이용해서 DB에 연결하는데에 필요한 라이브러리를 프로젝트에 복사

 

ojdbc : Oracle DB에 접속하기 위한 JDBC 라이브러리 

 

프로젝트 선택후 Alt + enter

 

속성에서 java Build Path ->  Libraries ->  add JARs 에서 프로젝트에 있는 ojdbc8.jar  적용후 close 

 

라이브러리 확인 

 

oracleDriver를 import 시켜야 dataBase를 가져올 수 있다. 

 

package jdbc;

import java.sql.*;
import oracle.jdbc.driver.OracleDriver;

public class Ex01 {
	public static void main(String[] args) throws Exception{
		
		// DB에 접속한 이후 실행할 SQL
		String sql = "select * from product order by idx";
		
		// 특정 벤더사 DB에 접속하기 위한 드라이버 클래스 이름 (여기서는 오라클)
		String className = OracleDriver.class.getName();
		
		// DB서버에 접속하기 위한 주소 
		String url = "jdbc:oracle:thin:@192.168.1.1:1521:xe";
		
		// user =  아이디
		String user = "C##ITBANK";
		// 비밀번호 = 123456
		String password = "123456";
		
		
		System.out.println(className);
		
		// 드라이버 클래스를 메모리에 불러온다. 
		Class.forName(className);
		
		// 주소와 계정, 비밀번호를 전달하여 DB접속을 시도한다. 결과는 연결
		Connection conn = DriverManager.getConnection(url, user, password);
		Statement stmt = conn.createStatement();
		ResultSet rs = stmt.executeQuery(sql);
		
		
		// 결과 집합은 여러줄( row) 로 구성되어 있다. Scanner와 마찬가지로 다음 줄이 있으면 반복된다. 
		while(rs.next()) {
			int idx = rs.getInt("idx");						//idx  컬럼의 값을 정수형태로 가져온다.
			String name = rs.getString("name");				//name 컬럼의 값을 문자열 형태로 가져온다. 
			int price = rs.getInt("price");					//price 컬럼의 값을 정수형태로 가져온다.
			Date expireDate = rs.getDate("expireDate");		//날짜형태로 가져온다.
			String memo = rs.getString("memo");				//memo 컬럼의 값을 문자열 형태로 가져온다.
			System.out.printf("%2s\t%20s\t %,4d\t %s\t %s\n",
								idx,name,price,expireDate,memo);
		}
		
		// 작업이 끝났으면, 연결할때의 역순으로 객체를 닫아준다.
		rs.close();		//	close()을 제대로 수행하지 않으면 
		stmt.close();	//	DB의 최대인원수를 초과하여
		conn.close();	// 	다음 실행때 접속이 되지 않아서, DB서비스를 재시작해야 한다.
		System.out.println("끝");
		
	}
}

 

sql 구문을  문자열변수에 저장하고
DB에 접속하기 위한 드라이버 클래스 (여기서는 오라클 )
DB 접속 주소를 문자열에 저장 

 

 

SQL DB  아이디와 패스워드를 변수에 저장 

 

주소와 계정, 비밀번호를 전달하여 DB접속을 시도한다. 결과는 연결 

 

 

작업이 끝났으면 연결할때 역순으로 객체를 닫아준다.
ex ) 냉장고 안의 서랍 닫기 -> 냉장고 문 닫기 

 

 

 

이클립스에서 sql구문을 이용해서 테이블에 데이터 추가,삭제 하기 

 

package jdbc;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;

public class Ex02 {
	public static void main(String[] args) throws SQLException{
		
		//sql 구문 문자열에 저장하기
		String sql = "insert into product values (%s, '%s', %s, '%s', '%s')";
		
		//format으로 해당 문자열에 데이터 넣기
		sql = String.format(sql, 6,"맥스웰 하우스 마스터 라떼 (PET)", 2600, "24/06/30", "1+1");
		
		
		String url = "jdbc:oracle:thin:@192.168.1.1:1521:xe";
		String user = "c##itbank";
		String password = "123456";
		
		Connection conn = DriverManager.getConnection(url, user, password);
		Statement stmt = conn.createStatement();
		int row  = stmt.executeUpdate(sql);
		
		System.out.println(row !=0 ? "추가성공": "추가실패");
		System.out.printf("%d 행이(가) 추가되었습니다\n",row);
		
		// 역순으로 닫아주기
		stmt.close();
		conn.close();
	}

}

 

 

sql에서 product 테이블 추가완료 

 

 

sql 구문만 delete로 수정해준다. 

 

6번 행이 정상적으로 삭제됐다.

 

전체목록 / 추가/ 삭제 

 

728x90
반응형
profile

리우's IT Story

@LRWoo

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!