'SQL insert 문'에 해당되는 글 1건

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 라고도 한다.
-> 일반적으로 테이블 당 한개씩 생성한다.

 

블로그 이미지

itworldkorea

IT korea가 세상(world)을 변화시킨다.

,