18일차 수업 (SQL - insert 문 ,Delete 문 )
1. 데이터 저장 ( insert 문 )
1) 첫번째 방법
insert into 테이블명 ( 컬럼명, 컬럼명2 )
values( 값, 값2 );
=> 컬럼명과 값이 일대일 대응 되며 지정하지 않은 컬럼에는 null값이 저장됨
---------------------------------------------------------------------
insert into person ( num, name, age )
values( 10, '홍길동', 20 );
insert into person ( num, name, age, address )
values( 11, '이순신', 44, '전라');
insert into person ( num, name, age )
values( 12, '유관순', 18, '서울' );
---------------------------------------------------------------------
2) 두번쨰 방법
insert into 테이블명
values( 값, 값2, 값3, 값4 );
=> 반드시 테이블의 모든 컬럼에 데이터 저장해야 된다. 또한 반드시 테이블의 컬럼순서대로 저장해야 된다.
---------------------------------------------------------------------
insert into person
values(15,'이순신',44,'전라'); -- 에러난다.
insert into person
values('이순신',15,44,'전라');
---------------------------------------------------------------------
2. 데이터 삭제 ( DELETE )
DML이기 때문에 commit/ rollback 가능
delete from 테이블명;
=> where 가 없기 때문에 전체 레코드가 삭제.
delete from 테이블명
where 조건식;
=> 조건에 일치하는 값만 삭제
데이터 삭제 ( truncate ) 문==> DDL 이기 때문에 rollback 불가.
truncate table 테이블명;
==> 성능은 truncate 이 좋다.
데이터 수정 ( updata ) 문==> DML이기 때문에 commit / rollback 가능
update 테이블명 set 컬럼명 = 새로운값, 컬럼명=새로운 값
=> 다 수정됨
update 테이블명 set 컬럼명 = 새로운값, 컬럼명=새로운 값
where 조건식;
==> 조건에 일치하는 레코드만 수정됨.
보충수엄 ===================
1. DDL 과 DML 차이
가. DDL
- create
- drop
- alter
- truncate
=> 트랜잭션이 발생안됨, 따라서 그냥 autoCommit 된다.
rollback 로 취소 불가.
나. DML
- insert
- delete
- update
- merge
=> 트랜잭션이 발생됨. 따라서 commit, rollback 해야된다.
2. 객체 삭제 ( 테이블 삭제 )
문법>
drop table 테이블명; ==> 테이블이 휴지통에 저장된다.
drop table 테이블명; purge recyclebin;
테이블 ----------------------> 휴지통 --------------------> 완전삭제
<---------------------
flashback table 테이블명 to before drop;
--------------------------------------------------->
3. 데이터 삭제 ( DELETE )
DML이기 때문에 commit/ rollback 가능
: 문법>
delete from 테이블명;
=> where 가 없기 때문에 전체 레코드가 삭제.
delete from 테이블명
where 조건식;
=> 조건에 일치하는 값만 삭제
4. 데이터 삭제 ( truncate )
==> DDL 이기 때문에 rollback 불가.
==> 문법 :
truncate table 테이블명;
==> 성능은 truncate 이 좋다.
5. 데이터 수정 ( updata )
: DML이기 때문에 commit / rollback 가능
문법 :
update 테이블명 set 컬럼명 = 새로운값, 컬럼명=새로운 값
=> 다 수정됨
update 테이블명 set 컬럼명 = 새로운값, 컬럼명=새로운 값
where 조건식;
==> 조건에 일치하는 레코드만 수정됨.
6. JDBC ( Java Database Connectivity)
: 자바프로그램과 데이터베이스와 연동하는 기술.
JDBC
자바프로그램 <-------------> 데이터베이스
* 고려사항
가. 데이터베이스 설치 및 실행여부 확인
나. 드라이버(dirver) 확인
-> 벤더(회사)에서 만든 클래스 파일들을 의미한다.
-> 압축해서 제공한다. ( *.jar, *.zip 형식 )
다. 클래스패스 ( classpath )
* 패스(path) 종류?
a. path
==> 명령어의 경로
b. classpath
==> 클래스파일의 경로
CLASSPATH 환경변수에 설정방법
C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6_g.jar
또는
ext 폴더에 저장하는 방법
1) 이클립스의 아무 프로젝트나 하나잡고 오른쪽클릭 -> Properties 들어간다
2) JRE System Library[JavaSE-1.7] 가 JRE인지 JDK 인지 확인하고
3) C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib\ojdbc6_g.jar 있는
ojdbc6_g.jar 파일을 ext 폴더에 복사하여 붙여넣고 이클립스 재실행
--> 외부 환경 설정 끝
라. 4가지 정보
// ojdbc6_g.jar 압축파일내의 핵심 클래스
String driver = "oracle.jdbc.driver.OracelDriver";
//서버의 ip,port번호, sid명
String url = "jdbc:oracle:thin:@localhost:1521:xe";
// 사용자 계정
String userid = "scott";
// 사용자 비번
String passwd = "tiger";
마. 드라이버 로딩
Class.forName ( driver );
바. Connection 맺기
import java.sql.Connection;
Connectioncon = DriverManager.getConnection( url,userid,passwd );
사. SQL 문 작성 ( ; 제외 )
String sql = "select * from person";
String sql2 = " insert ~ ";
아. Statement 생성 ( SQL 문 전송 )
* Statement 종류 3가지
- Statement
=>
예>
delete from person where age = 10;
delete from person where age = 11;
..
delete from person where age = 100;
=> statement 얻기
Statement stmt = con.createStatement();
- PreparedStatement (*)
예>
delete from person where age = ?;
나중에 ? 에 값을 지정하는 방식.
=> PreparedStatement 얻기
PreparedStatement pstmt = con.PreparedStatement( sql );
// ? 값 설정
pstmt.setInt(1,10);
insert into person ( num ,name, age, address)
- callableStatement
=> PL/SQL 사용시
자. SQL문 전송
- Statement 이용
: insert, delete, update ( DML 전송)
int n = stmt.executeUpdate(sqp);
=> n 값은 적용된 레코드 갯수
=> 디버깅 가능 ( 성공실패확인 가능 )
: select
ResultSet rs = stmt.executeQuery(sql);
while(rs.next()){
int num = rs.getInt("num");
String name = rs.getString("name");
int age = rs.getInt("age");
String address = rs.getString("addresss");
System.out.println(num+"\t"+name);
}
- PreparedStatement 이용
자. 외부자원 close
: 사용했던 자원 역순으로......
Connection con
Statement stmt
ResultSet rs
rs.close();
stmt.close();
con.close();
7. JDBC 사용시 반드시 적용시키는 2가지 패턴
가. DAO 패턴 ('다오'라고 읽지 말고 '디에이오'라고 읽기 )
-> Data Access Object 패턴
-> Data? (파일, 데이터베이스)
나. DTO 패턴
-> Data Transfer Object 패턴
-> 여러 데이터를 한꺼번에 효과적으로 전송하기 위한 클래스.
-> Value Object(vo), domain object ,entity 라고도 한다.
-> 일반적으로 테이블 당 한개씩 생성한다.
'프로그래밍 > Java' 카테고리의 다른 글
자바 [JAVA] 27일차 수업( JSP servlet 및 환경설치 ) (0) | 2017.08.21 |
---|---|
자바 [JAVA] 18일차 수업(2) ( JDBC ) (0) | 2017.08.21 |
자바 [JAVA] 17일 수업 보충 (오라클 설치,오라클 접속 ) (0) | 2017.08.21 |
자바 [JAVA]17일차 수업( SQL 종류, Select 문, 계정생성 및 권한부여) (0) | 2017.08.21 |
자바 [JAVA] 16일차 수업 ( DataBase install 및 uninstall ) (0) | 2017.08.21 |