# VIEW(가상테이블)
목적 | 기존 테이블이나 다른 뷰에서 데이터를 선택적으로 조회하거나 계산된 데이터를 제공하기 위해 사용됨. |
데이터 보존성 | VIEW는 실제 데이터를 저장하지 않고, 쿼리를 실행하여 데이터를 동적으로 생성함. |
업데이트 가능 여부 | 일반적으로 VIEW는 기본 테이블이나 다른 VIEW의 데이터를 조회만 할 수 있으며, 직접적으로 업데이트가 제한될 수 있음. |
사용자 정의 가능 | 사용자는 자신의 필요에 맞게 VIEW를 정의하고, 필요에 따라 다양한 조인, 필터링, 계산을 포함할 수 있음. |
보안성 | VIEW를 사용하여 사용자가 직접 테이블에 접근하는 것을 제한하고, 데이터에 대한 접근 제어를 강화할 수 있음. |
조회 성능 | VIEW는 미리 정의된 쿼리를 실행하여 결과를 반환하기 때문에, 복잡한 쿼리를 단순화하고 성능을 최적화할 수 있음. |
> 여러개의 테이블을 JOIN해서 가져올 때 매번 JOIN하기는 번거로우니 가상으로 VIEW를 만들어 하나의 테이블로 관리
-- VIEW 생성 : 여러 테이블을 JOIN해서 하나의 테이블로 생성
CREATE VIEW V_STUDENT_CLASS AS
SELECT
M.C_NO, M.C_NAME, M.PHONE, M.ADDRESS, M.GRADE,
C.REGIST_MONTH, C.CLASS_AREA, C.TUITION,
T.TEACHER_NAME
FROM TBL_CLASS_202201 C
JOIN TBL_TEACHER_202201 T ON C.TEACHER_CODE = T.TEACHER_CODE
JOIN TBL_MEMBER_202201 M ON M.C_NO = C.C_NO;
SELECT * FROM V_STUDENT_CLASS;
-- VIEW 삭제
DROP VIEW V_STUDENT_CLASS;
# JAVA에서 SQL 불러오기
package javaToOracle0628;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
public class OracleDBExample {
public static void main(String[] args) {
// Class.forName("oracle.jdbc.driver.OracleDriver");
String username = "HR"; // 오라클 사용자 이름
String password = "1234"; // 오라클 비밀번호
String url = "jdbc:oracle:thin:@localhost:1521:xe"; // JDBC URL
// Connection, PreparedStatement, ResultSet 객체 선언
Connection conn = null;
PreparedStatement pstmt = null;
ResultSet rs = null;
try {
// 데이터베이스 연결
conn = DriverManager.getConnection(url, username, password);
// SQL 쿼리 준비
String sql = "SELECT MEM_ID,MEM_NAME,DEBUT_DATE FROM members";
pstmt = conn.prepareStatement(sql);
// 쿼리 실행
rs = pstmt.executeQuery();
// 결과를 출력
System.out.println("");
System.out.println("");
System.out.println("----------------------------------------");
System.out.println("멤버ID 멤버이름 대뷔연도");
System.out.println("----------------------------------------");
while (rs.next()) {
// 데이터 타입에 맞는 메서드 사용
// 문자열로 가져오기, NUMBER은 int - getInt 사용
String memIdStr = rs.getString("MEM_ID");
String memName = rs.getString("MEM_NAME");
//SQL에서 DATA_TYPE이 DATE인 경우에만 사용가능
java.sql.Date debutDate = rs.getDate("DEBUT_DATE");
System.out.printf("%-10s %-15s %-10s%n", memIdStr, memName, debutDate);
}
} catch (SQLException e) {
e.printStackTrace();
} finally {
// 리소스 해제
try {
rs.close();
pstmt.close();
conn.close();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
}
6월 27일_SQL(데이터의 무결성, 제약조건) (0) | 2024.06.27 |
---|---|
6월 26일_SQL(서브쿼리문, 다중행연산자, DML, DDL) (0) | 2024.06.26 |
6월 25일_SQL( 단일함수, 그룹함수, JOIN) (0) | 2024.06.25 |
6월 24일_SQL(WHERE조건절, 연산자, 문자, 숫자, 날짜 함수) (0) | 2024.06.24 |
6월 21일_SQL(기초, 오라클 사용, SELECT 구문) (0) | 2024.06.21 |