2008. 6. 27. 16:21

sql 문법

Java/SQL 2008. 6. 27. 16:21
※데이타베이스
: 많은양의 자료를 특정한 규칙에 맞게 저장장치에 보관하여 필요한
  업무에 사용하는 저장매체
※ DBMS
    데이타베이스 안에 있는 데이타를 관리하는것
    (읽기,변경,삭제,추가가 가능)

※기본적인 SQL문
1. create문(테이블생성)
create table 테이블명(필드이름  데이터타입  [not null], 필드이름 데이터타입 [not null].........);
예) create table member(name varchar(20), email varchar(30));

2. drop문
drop tabele 테이블명 : 테이블제거
drop database 데이타베이스명 :DB삭제
예)drop table member;  //member테이블 제거

3. alter문(table구조변경)
alter table 테이블이름 add 필드이름 데이터타입 [not null];
예)alter table member add addr varchar(50);    //member테이블에 addr필드 추가
   alter table 테이블명 add  primary key (필드명)  //기본키설정

4. use 데이타베이스명(사용할 데이타베이스)
예) use member;

5. show 테이블명/show 데이타베이스명 (테이블/DB보기)
예) show member
    show mem_table

6. desc 테이블명(테이블속성(구조)보기)
 예) desc mem_table

7. 질의문(Query)
(1) select문(테이블의 레코드 검색)
select 필드리스트 from 테이블명 [where 조건] [group by 필드리스트] [having 조건] [order by 필드리스트 [asc | desc]];
예) select * from member where addr like '%서울%'

(2) insert문(테이블에 레코드 추가)
insert into 테이블명 [(필드이름1, 필드이름2....)] value (data1,data2...)
예)insert into member(name, email, addr) values ('magic', ;magic@m.com', '서울');

(3) delete문(레코드 삭제)
delete from 테이블명 [where 조건]
예)delete from member name = 'magic'

(4) update문(데이터의 값변경)
update 테이블리스트 set 필드이름1=data1, 필드이름2=data2......where 조건문
예)update member set tel='123-4567' where name='magic'

=======================================================================================
JDBC 드라이버 로드  -> 데이타베이스 연결 -> SQL문실행 -> 결과처리 -> 데이터베이스와 연결 해제


1단계 : JDBC드라이버 로드
Class.forName("드라이버종류");

★ 드라이버 종류
1. Access드라이버(ODBC) : Class.forName("sun.jdbc.odbc.JdbcOdbcDriver");
2. MySQL 드라이버:        Class.forName(“com.mysql.jdbc.Driver”);
3. 오라클 드라이버 :      Class.forName(“oracle.jdbc.driver.OracleDriver”);
4. MS-SQL 드라이버 :      Class.forName("com.microsoft.jdbc.sqlserver.SQLServerDriver ");

ODBC(Open DataBase Connectivity)
JDBC (Java DataBase Connectivity)
--------------------------------------------------------------------------------------
2단계 :  데이터베이스 연결객체 생성
Connection con = DriverManager.getConnection(url, uid, pwd);
url : JDBC형식의 url
uid : 사용자명
pwd : 패스워드

예)Connection con = DriverManager.getConnection("jdbc:odbc:jdbc", "master","java");

1. Access인경우 : jdbc:odbc:ODBC명
2. 오라클인경우 : jdbc:oracle://localhost:1521:SID
3. MySQL인경우  : jdbc:mysql://localhost:3306/DB명
4. MS-SQL인경우 : jdbc:Microsoft:sqlserver://localhost:1433;databasename=DB명

★ sql 에서 한글이 깨질경우
url에    jdbc:mysql://localhost:3306/DB명?useUnicode=true&characterEncoding=euckr
---------------------------------------------------------------------------------------
3단계 : SQL문실행
(방법1)
Statement stmt=null;
stmt = conn.createStatement();
String sql="insert into PostDBTest values +"('"+sname+"','"+stel+"','"+saddr+"')";
stmt.executeUpdate(sql);

(방법2)
PreparedStatement pstmt=null;
String sql="insert into PostDBTest values(?,?,?)";
pstmt=conn.prepareStatement(sql);
pstmt.setString(1, sname);
pstmt.setString(2, stel);
pstmt.setString(3, saddr);
pstmt.executeUpdate();

(참고)-------------------------------------------------------------------------------
i)  executeUpdate() : insert, update, delete, create문
II) executeQuery() : select문

int executeUpdate()
int : 처리된 결과 개수 (입력 or 수정된 개수 …)
ResultSet exeucteQuery()
ResultSet : select문의 결과 집합 (테이블)
Cursor의 위치를 이동(next())해 가며 결과를 가져옴(getXxxx())

예)
String query = “SELECT COF_NAME, PRICE FROM COFFEES”;
ResultSet rs = stmt.executeQuery(qeury);
while( rs.next() )
{
    String s = rs.getString(“COF_NAME”);
    float n = rs.getFloat(“PRICE”);
    System.out.println(s + “ “ + n);
}
----------------------------------------------------------------------------------------
4단계 : 결과처리
String str = "select name,age from member";
ResultSet rs = stmt.executeQuery(str);
--------------------------------------------------------------------------------------
5단계 : 데이타베이스와 연결해제
rs.close();    //ResultSet해제
stmt.close();  //Statement해제
con.close();   //Connection해제

★레코드이동
next() : 다음레코드
previouse() : 이전레코드
first() : 첫레코드
last() : 마지막레코드
====================================================================
※ DB설치
1. MySQL 5.0.x 설치
    http://www.mysql.com 에서 다운 받으시오 ^^
    (mysql-essential-5.0.22-win32.msi)
    설치후.......
    시작 -> 설정 -> 제어판 -> 관리도구 -> 컴퓨터관리 -> 서비스및 응용프로그램 ->
    서비스 -> mysql (자동) 확인

2. MySQL-Front 3.2 설치
   (MySQL-Front_Setup3.2.exe)

3. JDBC드라이버 설치
    (mysql-connector-java-3.1.12.zip)
    C:\Java\mysql-connector-java-3.1.12

     해당 DB 드라이버(mysql-connector-java-3.1.12-bin.jar)를
     JAVA_HOME/jre/lib/ext 와 TOMCAT_HOME/common/lib 아래에 복사

4. Database별 Driver 와 connection URL
DATABASE  |   VALUE
----------------------------------------------------------------------------------
ORACLE    |  DRIVER  |   oracle.jdbc.driver.OracleDriver
          |  URL     |   jdbc:oracle:thin:@hostname:port:SID
MSSQL     |  DRIVER  |   com.microsoft.jdbc.sqlserver.SQLServerDriver
          |  URL     |   jdbc:Microsoft:sqlserver://localhost:1433;databasename=DB명
MYSQL     |  DRIVER  |   org.gjt.mm.mysql.Driver
          |          |   (또는)com.mysql.jdbc.Driver
          |  URL     |   jdbc:mysql://localhost:3306/DB명