KDT/TIL
2022-08-03 (Wed)
imname1am
2022. 8. 3. 19:10
반응형
CHAR VS VARCHAR2
DUAL 테이블
사용자가 계산/사용자 함수 등 실행하고자 할 경우 유용
(= dummy 테이블)
COMMENT ON COLUMN EMP.HIREDATE IS '입사일자';
-- 문제점 : deptABLE의 ROW 갯수만큼 나옴
SELECT sysdate FROM dept; -- 현재 일자 돌려주는
-- 해결 : DUAL 사용
SELECT sysdate FROM DUAL;
[ Database ] Dual 테이블이란?
@Overwrite '[Oracle] Dual 테이블이란?', 갓대희의 작은 공간, https://goddaehee.tistory.com/92 [Oracle] Dual 테이블이란? [Oracle] Dual 테이블이란? 안녕하세요. 갓대희 입니다. 이번 포스팅은 [Oracle Dua..
dadmi97.tistory.com
★ SQL 연산자 ★
연산자 | 의미 |
BETWEEN a AND b | a 이상 b 이하의 값 |
IN(a, b, c, ... ,n) | a,b,c,...,n 중 하나와 일치하면 참 |
LIKE | 문자 패턴과 부분적으로 일치 (%, _)하면 참 |
IS NULL | NULL 이면 참 |
▶ BETWEEN → AND 대신 보기 편하게
▶ IN → OR 대신 보기 편하게
PK(Primary Key) 특징
- UNIQUE
- NOT NULL
- 최소성
NULL
NVL | NULL인 경우만 지정된 값으로 대치 → NVL(NULL 판단 대상, NULL일 때 대체값) |
NVL2 | NULL 여부에 따라 지정한 값으로 대치 → NVL(NULL 판단 대상, NOT NULL일 때 대체값, NOT NULL일 때 대체값) |
UNION
-- UNION COLUMN이 다를 때 : 오류 발생!
(SELECT studno, name, userid FROM stud_heavy)
UNION
(SELECT studno, name FROM stud_101);
-- UNION : 중복 제거
(SELECT studno, name FROM stud_heavy)
UNION
(SELECT studno, name FROM stud_101);
-- UNION ALL : 중복 포함
(SELECT studno, name FROM stud_heavy)
UNION ALL
(SELECT studno, name FROM stud_101);
18. JDBC
★ JDBC 프로그래밍 단계 및 클래스 ★
▶ executeQuery() → select문에 사용
▶ executeUpdate() → insert, delete 문에 사용
코드 ! → SELECT문, INSERT문, DELETE문
OradDr.java
→ 자바 - 오라클 연결
package ch18;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
public class OraDr {
public static void main(String[] args) throws SQLException {
String driver = "oracle.jdbc.driver.OracleDriver";
// IP Port Service ID
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
try {
// 1. JDBC 드라이버 로드 - 드라이버 클래스 로딩
Class.forName(driver);
// 2. DB 연결 - Connection 객체 생성
// scott tiger 계정으로 접근할거야
Connection conn = DriverManager.getConnection(url, "scott", "tiger");
System.out.println("Start");
if(conn != null) { // 객체가 제대로 생성됐으면
System.out.println("Success 연결 성공");
} else {
System.out.println("Fail");
}
// 연결 해제
conn.close();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
}
OraSelect.java
→ 자바 - 오라클 연결해서 Select문 DB에 반영 (executeQuery())
package ch18;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class OraSelect1 {
public static void main(String[] args) throws SQLException {
Scanner sc = new Scanner(System.in);
System.out.println("부서코드를 입력하세요");
int deptno = sc.nextInt();
// url 한 번 검증되면 갖고 다님
String driver = "oracle.jdbc.driver.OracleDriver";
// Localhost -> 127.0.0.1; , Port 번호 : 1521, xe(orcl) -> Service ID(SID)
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
// DB에서 수행할 SQL문 (SELECT문)
String sql = "Select dname, loc From Dept Where deptno=" + deptno;
// 약속
Connection conn = null; // DB
Statement stmt = null; // SQL
ResultSet rs = null;
try {
Class.forName(driver); // Driver
conn = DriverManager.getConnection(url, "scott", "tiger");
stmt = conn.createStatement(); // stmt ; statement 생성
rs = stmt.executeQuery(sql); // SQL ; SQL문 전송
// rs Row
if(rs.next()) {
String dname = rs.getString("dname"); // rs.getString(1) <-- dname
String loc = rs.getString(2); // rs.getString(2) <-- loc
System.out.println("부서번호 : " + deptno);
System.out.println("부서명 : " + dname);
System.out.println("위치 : " + loc);
}
else {
System.out.println("자료가 없습니다.");
}
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
if(rs != null) rs.close();
if(stmt != null) stmt.close();
if(conn != null) conn.close();
}
sc.close();
}
}
OraInsert.java
→ 자바 - 오라클 연결해서Insert문 DB에 반영 (executeUpdate())
package ch18;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class OraInsert {
public static void main(String[] args) throws SQLException {
Scanner sc = new Scanner(System.in);
System.out.println("부서번호 입력?");
String deptno = sc.nextLine();
System.out.println("부서명 입력?");
String dname = sc.nextLine();
System.out.println("위치 입력?");
String loc = sc.nextLine();
// 약속
Connection conn = null; // DB
Statement stmt = null; // SQL
String driver = "oracle.jdbc.driver.OracleDriver";
// Localhost -> 127.0.0.1; , Port 번호 : 1521, xe(orcl) -> Service ID(SID)
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
// 수행할 SQL문 (INSERT문)
// String sql = "Insert Into dept values("+ deptno +",'" + dname + "','" + loc + "')";
String sql = String.format("Insert Into dept values(%s, '%s', '%s')", deptno, dname, loc);
System.out.println("sql ->" + sql);
try {
Class.forName(driver); // Driver
conn = DriverManager.getConnection(url, "scott", "tiger");
stmt = conn.createStatement();
// result Set
int result = stmt.executeUpdate(sql);
if(result > 0) System.out.println("입력 성공^^");
else System.out.println("입력 실패 T.T");
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
if(stmt != null) stmt.close();
if(conn != null) conn.close();
}
sc.close();
}
}
OraDelete.java
→ 자바 - 오라클 연결해서 Delete문 DB에 반영 (executeUpdate())
package ch18;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.Scanner;
public class OraDelete {
public static void main(String[] args) throws SQLException {
Scanner sc = new Scanner(System.in);
System.out.println("부서번호 입력?");
int deptno = sc.nextInt();
// 약속
Connection conn = null; // DB
Statement stmt = null; // SQL
String driver = "oracle.jdbc.driver.OracleDriver";
// Localhost -> 127.0.0.1; , Port 번호 : 1521, xe(orcl) -> Service ID(SID)
String url = "jdbc:oracle:thin:@127.0.0.1:1521:xe";
// DB에서 수행할 SQL문 (DELETE문)
String sql = "DELETE FROM DEPT WHERE DEPTNO=" + deptno;
System.out.println("sql -> " + sql);
try {
Class.forName(driver); // Driver
conn = DriverManager.getConnection(url, "scott", "tiger");
stmt = conn.createStatement();
// result Set
int result = stmt.executeUpdate(sql);
if(result <= 0) System.out.println("삭제 성공^^");
} catch (Exception e) {
System.out.println(e.getMessage());
} finally {
if(stmt != null) stmt.close();
if(conn != null) conn.close();
}
sc.close();
}
}
반응형