본문 바로가기

JAVA/JDBC

JDBC API java.sql Package 살펴보기 java.sql.Driver- DriverManager에 의해서 관리되고 Class.forName(Driver이름);을 주면 DriverManager에 register한다. java.sql.ConnectionConnection 에다가 url과 user ,password를 넘겨줘서 네트워크 소켓 넘겨주듯, 넘겨준다.- conn = DriverManager.getConnection(url,user,password); java.sql.preparedStatementstatement를 가져옴.stmt = conn.prepareStatement(sql); java,sql.resultSetDB가 swap 공간에 resultSet을 넘겨주면, 그 주소를 연결해서 가지고 있는다!.. 더보기
JDBC의 구성 & 주요 DBMS 더보기
DAO (Data Access Objects) DAO와 DatabaseUtil 이 만들어지게 된 논리적 흐름. 1. 프로그램 실행시 DB에 연결을 유지시켜주는 것보다 DB에 연결을 시도할 때마다 연결하고 연결을close 해주는 것이 좋은데 이렇게 연결을 자꾸 연결했다, 닫았다 를 반복한다면, 퍼포먼스가 떨어진다. 그렇다면, 어떻게 구현을 할까??? 연결을 반복하면 안되지만, 연결을 유지해서도 안된다. 2. 연결을 만들어 놓자!!!!! 그러면 만들어진 연결을 가져다 쓰면 될것 아니겠음?? 그 연결을 관리하는 클래스가 필요했다. BasicDataSource!! DatabaseUtil Class의 탄생 3. 그런데 이렇게 만들어진 DAO와 Util이 여러개가 있다면? - 객체가 생성될 때마다 제한을 두는 행동들이 의미가 없어진다. 때문에 싱글톤 패턴이 필.. 더보기
JDBC Driver Loading 1.Driver loading2.Connection(연결)3.Statement/PreparedStatement4.SQL문 전송–ResultSet(Select의 경우)5.close(1. ResultSet, 2. Statement, 3. Connection) String url = "jdbc:oracle:thin:@192.168.7.195";//:1521:XE";String user = "scott"; // IDString password = "tiger"; // PWString driveClass = "oracle.jdbc.driver.OracleDriver"; Connection conn = null;Statement statement = null;ResultSet resultSet = null; 1. .. 더보기
조인 (JOIN) 조인 : 일반적으로 부모테이블과 자식테이블을 연결해서 조회 ( 부모의 PK와 자식의 FK 연결 ) 0. 카티션 조인(CARTESIAN JOIN) - 그냥 막 묶어줌 N x M 개 만큼 나온다.SELECT e.employee_name, d.department_nameFROM employee e, department d 1. 내부조인(INNER JOIN)두 테이블간의 연결고리가 되는 컬럼이 필요 SELECT e.employee_name, d.department_nameFROM employee e, department dWHERE e.department_id = d.department_id AND e.employee_id = 100 2. 외부조인(OUTER JOIN)- 내부조인의 경우 Join 조건을 만족하지.. 더보기
WHERE절 주요 연산자 -- and / or / LIKESELECT dept_id, dept_name, locationFROM DEPARTMENTWHERE location = '서울' or dept_name LIKE '영업%';WHERE location = '서울' and dept_name [NOT] LIKE '영업_'; -- inSELECT dept_id, dept_name, locationFROM DEPARTMENTWHERE location [NOT] IN ('서울',부산'); -- betweenSELECT dept_id, dept_name, locationFROM DEPARTMENTWHERE dept_id >= 100 and dept_id 더보기
DCL (Data Control Language) [GRANT / REVOKE] -- GrantGRANT SELECT, INSERT ON emp TO scott*설명 : scott 사용자에게 emp테이블을 SELECT, INSERT할 수 있는 권한을 부여했습니다. -- RevokeREVOKE SELECT, INSERT ON emp FROM scott *설명 : scott 사용자에게부여한 emp테이블에 대한 SELECT, INSERT권한이 회수 됩니다.. 더보기
DQL (Data Query Language) [SELECT] SELECT 조회컬럼 [alias][, 조회컬럼,...]FROM table_name [alias][WHER 제약조건][GROUP BY 그룹화할 기준컬럼][HAVING 조건][ORDER BY 정렬기준컬럼 [ASC | DESC]] –SELECT 절 : 조회할 컬럼들 지정. 모든 컬럼 조회시 *. alias–조회 결과값을 넣을 컬럼명–FROM 절 : 조회할 컬럼들을 가진 테이블명. alias – 테이블명 대신 쿼리 내에서 사용할 별칭–WHERE 절 :조회할 row을 찾기 위한 제약 조건을 넣는다.–GROUP BY 절 : Group으로 묶어서 조회할 때 묶을 조건이 될 컬럼들 지정. 주로 그룹함수와 연결되어 사용–HAVING 절 : 그룹함수로 조회한 결과에 조건을 줄 때 사용.–ORDER BY : 조회결과 정렬.. 더보기
DML(Data Manipulation Language) [INSERT / UPDATE / DELETE] INSERT : INSERT INTO 테이블명 (컬럼명, 컬럼명 [,….]) VALUES (값1, 값2 [,...]) INSERT INTO DEPARTMENT (dept_id, dept_name, location) values (100,'홍길동','서울');INSERT INTO DEPARTMENT values (200,'심청','성남'); -- 전부 넣을 때는 , 바로 values 가능하다.INSERT INTO DEPARTMENT (dept_id,dept_name) values (300,'노답'); -- not null인 친구만 너줄 수 있음 UPDATE : UPDATE 테이블명SET 컬럼=변경할값 [, 컬럼=변경할값][WHERE] 조건 UPDATE DEPARTMENTSET location = '성남'W.. 더보기
DDL (Data Definition Language) [create / drop / alter] + 제약조건 CREATE : (만들기) 문자형 데이터 타입 데이터 유형 설명 길이 char[(size[BYTE |CHAR])](가장 많이 사용)고정 길이의 문자형 데이터 타입으로 그 크기는 SIZE만큼의 BYTE수 혹은 문자 개수가 된다. 최대 크기는 2000BYTE가 될수 있으며 byte,char명시 안하면 디폴트로 byte가 된다.size 값을 명시하지 않을 경우 디폴트 값은 1이다. VARCHAR2[size[BYTE | CHAR]](가장 많이 사용)가변 길이의 문자형 데이터 타입으로 그 크기는 최대 SIZE만큼의 BYTE수 혹은 문자수가 된다. 반드시 size값을 명시해야 한다. 최대 크기는 4000byte가 될 수 있으며,byte나 char를 명시하지 않을 경우 디폴트값은 byte가 되며, size값을 생략할.. 더보기