-인덱스가 설정된 컬럼을 조회하는 DD : user_ind_columns
컬럼의 값이 유일할 때 사용하는 인덱스.
테이블 생성 시 primary key나 unique 제약사항을 설정하면 자동 생성된다.
개발자가 컬럼의 값이 유일할 때 수동 생성도 가능하다.
작성법)
create unique index 인덱스명 on 테이블명( 컬럼명 asc)
-컬럼의 값이 중복될 때 사용하는 인덱스.( 일반컬럼에 주로 적용한다.)
-개발자가 수동으로 생성하는 index
문법)
create index 인덱스명 on 테이블명( 컬럼명 asc);
-컬럼의 값이 중복이 되긴하나 독특한 코드 형태의 값일 때 사용하는 인덱스.
문법)
create bitmap index 인덱스명 on 테이블명 (컬럼명 )
여러 개의 컬럼으로 인덱스가 구성되어야 할 때.
unique index 계열.
문법)
create index 인덱스명 on 테이블명 (컬럼명,,,, );
-order by절을 사용한 정렬은 레코드가 많을 수록 속도가 떨어진다.
(index가 설정된 컬럼은 order by 해도 괜찮다 )
index를 생성하면 컬럼의 asc이 기본 인덱스로 생성된다.
index를 설정한 후 index hint를 사용하면 정렬을 수행 할 수 있다.
index hint)
조회컬럼에 /+ / 또는 --+ 로 인덱스 힌트를 사용.
-인덱스를 사용한 오름차순 정렬
select /+ index( 테이블명 인덱스명 ) / 컬럼명,,,,,
-인덱스를 사용한 내림차순 정렬
select /+ index_desc( 테이블명 인덱스명 ) / 컬럼명,,,,,
type 1 : JDBC-ODBC Bridge Driver
-Windows 에서만 사용할 수 있는 Driver. DBMS와의 연동은 OS에서 설정하고,
Java에서 연결하여 사용하는 방식, 속도가 느리다.
-Java는 Windows에서 서비스되는 일이 많지 않기 때문에 거의 사용하지 않는다.
type 2 : native driver
-Driver를 제작한 언어가 Java와는 다른 언어로된 driver
-Driver를 사용하기 위해서 별도의 프로그램을 설치해야 한다.
-Middleware에서 주로 사용.
type 3 : network protocol driver
-applet에서 DBMS와 연동하기위한 driver.
type 4 : native protocol driver
-JDBC에서 가장 많이 사용하는 driver.(빠른 성능과 안정성을 제공)
-driver를 제작한 언어가 java언어이므로, driver를 사용하는 자바프로그램에서는

드라이버(자바언어로 구현된 DB Client)로딩
Class.forName("드라이버 클래스");
Class.forName("oracle.jdbc.OracleDriver")
로딩된 드라이버를 사용하여 커넥션 얻기.
String id="계정명";
String pass="비번";
String url="DBMS에 접속하기 위한 URL";
Connection con = DriverManager.getConnection(url, id, pass);
Statement, PreparedStatement, CallableStatement 객체를 제공.
-얻어진 객체는 SQL문을 알지 못한다.
-쿼리문을 실행할 때 마다 새로 생성하고 실행한다.
-동일 쿼리문이 여러 번 실행될 때에는 효율이 좋지 않다.
-SQLInjection공격에 취약하다.
-얻어진 객체는 SQL문을 안다.
-쿼리문을 한번만 생성하고, 값은 bind변수에 넣어 실행한다.
-동일 쿼리문이 여러 번 실행될 때 효율이 좋다.
-Bind변수를 사용(쿼리문의 특정위치에 값을 묶어주는 변수)
-SQLInjection공격에 안전하다.
-Procedure를 실행하기 위해 만들어진 객체.
-bind변수를 사용할 수 있다.
-SQL문은 DB프로시저에 작성하고, 자바에서는 프로시저를 호출하여 사용하기 때문에 코드와 SQL문이 분리될 수 있다.
쿼리문 생성객체 얻기
Statement stmt = con.createStatement();
쿼리문 실행(값과 쿼리문이 하나로 합쳐진다. '처리가 불편하다')
String name = "김동섭";
boolean flag = stmt.execute(쿼리문);
int cnt = stmt.executeUpdate(쿼리문);
ResultSet rs = stmt.executeQuery(쿼리문);