Data Scientist 옌

매일 발전하는 IT문제해결사

국비지원교육 (22.01-22.07)/강의노트

22-03-04(금) 026일차 [Oracle] SELECT-FROM-WHERE, ORDER BY, 이클립스 데이터베이스 연결

옌炎 2022. 5. 10. 20:58
728x90

수업내용


1교시 (09:30-10:20)

  • 어제 배운 것 리뷰
    • 오라클 데이터베이스
      DBA : 시스템 어드미니스트레이터 : System Administrator
          데이터를 설치, 변경, 삭제
          테이블 생성, 변경, 삭제
          데이터를 백업하고 스토리지를 관리
      PL/SQL Developer

      ISUD    INSERT SELECT UPDATE DELETE
      CRUD   CREAT READ UPDATE DELETE

      DQL     SELECT
      DML     INSERT UPDATE DELETE
      DDL      CREATE DROP ALTER
      TCL       COMMIT ROLLBACK
      DCL GRANT

      시퀄: MS MS-SQL

2교시 (10:30-11:20)

  • [교재 29p, 31p, 32p, 26p, 80p]
    • 행, 열, 테이블, ...

3교시 (11:30-12:20)

  • SELECT
SELECT * FROM EMP;

-- COUNT() 함수 : 테이블의 로우 수를 보여준다. 테이블의 레코드 수를 보여준다.
SELECT COUNT(*) FROM EMP;
SELECT COUNT(EMPNO) FROM EMP;
SELECT COUNT(COMM) FROM EMP;

SELECT ROWID, EMPNO FROM EMP;
-- 유니크 UNIQUE NOT NULL

/*
스키마
테이블 로우 열 NULL PK FK
*/

SELECT SYSDATE FROM DUAL;
SELECT SYSTIMESTAMP FROM DUAL;

-- SELECT
/*
SELECT 키워드 : 테이블에서 데이터를 질의하는(조회하는) 키워드
SELECT 절 : 테이블에서 조회하고 싶은 컬럼 이름을 순차적으로 적는다, 구분자는 , (CSV)
FROM 키워드 : 데이터를 조회하고 싶은 테이블 이름을 정하는 키워드
FROM 절 : 조회하고자 하는 테이블 이름을 순차적으로 적는다. 구분자 ,
WHERE 키워드 : 데이터를 조회하는 조건을 적는 키워드
WHERE 절 : 조회 조건을 적는데 AND(그리고 연산) 키워드와 OR(또는 연산) 키워드를 이용할 수 있다.

SELECT
    SELECT 절
FROM
    FROM 절
WHERE
    WHERE 절
*/

-- EMP 테이블에서 테이블 데이터 전체를 조회하시오
-- * : 와일드 카드 : 테이블 전체를 의미한다. : FULL SCAN : 풀 스캔
-- 질의문은 항상 ; 종결해야 한다.
SELECT * FROM EMP;
-- 테이블은 계정명.테이블이름
SELECT * FROM SCOTT.EMP;

-- 테이블 이름은 항상 테이블 앨리어스(별칭)을 사용한다.
-- 테이블 앨리어스 : 자바에서 객체의 참조변수와 같은 역할을 한다.
-- FROM 절에서 테이블에 테이블 앨리어스(별칭)을 사용하면
-- 해당 테이블의 컬럼을 조회할 때 테이블 앨리어스를 사용해서 컬럼을 지정해야 한다.
SELECT A.* FROM SCOTT.EMP A;
SELECT B.* FROM SCOTT.EMP B;

4교시 (12:30-13:20)

  • 앨리어스
-- AS 컬럼 앨리어스(별칭) 식별자
-- AS EMPNO는 A.EMPNO의 별칭이다.
-- 사원번호 : 주석
SELECT
         A.EMPNO        AS EMPNO    -- 사원번호
        ,A.ENAME        AS ENAME    -- 사원이름
        ,A.JOB          AS JOB      -- 사원직책
        ,A.MGR          AS MGR      -- 상관사원번호
        ,A.HIREDATE     AS HIREDATE -- 입사일
        ,A.SAL          AS SAL      -- 급여
        ,A.COMM         AS COMM     -- 수당
        ,A.DEPTNO       AS DEPTNO   -- 부서 번호
FROM
    SCOTT.EMP A;
    
-- AS 키워드 꼭 사용하세요.
SELECT
         A.EMPNO        EMPNO    -- 사원번호
        ,A.ENAME        ENAME    -- 사원이름
        ,A.JOB          JOB      -- 사원직책
        ,A.MGR          MGR      -- 상관사원번호
        ,A.HIREDATE     HIREDATE -- 입사일
        ,A.SAL          SAL      -- 급여
        ,A.COMM         COMM     -- 수당
        ,A.DEPTNO       DEPTNO   -- 부서 번호
FROM
    SCOTT.EMP A;

SELECT EMPNO, ENAME, JOB, MGR, HIREDATE,
        SAL, COMM, DEPTNO
FROM    EMP;

-- EMP 테이블에서 사원번호, 부서, 입사일을 조회하시오
SELECT
     A.EMPNO    AS EMPNO    -- 사원번호
    ,A.JOB      AS JOB      -- 부서
    ,A.HIREDATE AS HIREDATE -- 입사일
FROM
    EMP A;

5교시 (14:30-15:20)

  • 조회된 데이터 정렬하기
-- 조회된 데이터 정렬하기, SORT 하기
-- ORDER BY DESC, ASC
-- Ascending 오름차순
-- Descending 내림차순
/*
SELECT *
FROM   T
WHERE  조건식
ORDER BY 컬럼명1 [ASC|DESC], 컬럼명 2 [ASC|DESC], 컬럼명 2 [ASC|DESC] ...
*/

SELECT ROWID, A.* FROM EMP A;
SELECT ROWID, A.* FROM EMP A ORDER BY A.EMPNO ASC; -- DEFAULT
SELECT ROWID, A.* FROM EMP A ORDER BY A.EMPNO DESC;

-- SELECT 절에 있는 컬럼 EMPNO 1, ENAME 2, JOB 3, MGR 4
-- SELECT 절에서 순차적으로 나열된 컬럼 명의 숫자가 INDEX이다.
SELECT EMPNO, ENAME, JOB, MGR FROM EMP A ORDER BY 1 ASC; -- DEFAULT

6교시 (15:30-16:20)

  • Oracle Eclipse Connection
    • 1번: C:\app\kosmo\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar
    • 2번: C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext\ojdbc6.jar
    • 1번 경로의 ojdbc5.jar를 2번경로에 복사해둔다.
    package a.b.c.oracle;
    
    import java.sql.Connection;
    import java.sql.DriverManager;
    import java.sql.ResultSet;
    import java.sql.Statement;
    
    public class OracleTest {
    
    	public static void main(String[] args) {
    		// TODO Auto-generated method stub
    
    		try {
    
    			// C:\\app\\kosmo\\product\\11.2.0\\dbhome_1\\jdbc\\lib\\ojdbc6\\
    			// oracle\\jdbc\\driver\\OracleDriver.class
    			// oracle.jdbc.driver.OracleDriver
    			/*
    				0. 환경변수에 CLASSPATH 설정하기 
    				1. C:\\Program Files\\Java\\jdk1.8.0_202\\jre\\lib\\ext\\ojdbc6.jar <-- 이것으로 사용한다.
    				2. C:\\Program Files\\Java\\jre1.8.0_202\\lib\\ext\\ojdbc6.jar 
    				3. 이클립스 프로젝트에서 Bulid Path -> Configure Build Path... -> Librarias 탭-> Add External JARS...
    			*/
    			Class.forName("oracle.jdbc.driver.OracleDriver");
    			System.out.println("" + Class.forName("oracle.jdbc.driver.OracleDriver"));
    			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orclKSY00", "scott", "tiger");
    			System.out.println("conn >>> : " + conn);
    			Statement stmt = conn.createStatement();
    			System.out.println("stmt >>> : " + stmt);
    			ResultSet rsRs = stmt.executeQuery("SELECT * FROM EMP ORDER BY 1 DESC");
    			System.out.println("rsRs >>> : " + rsRs);
    			
    			while (rsRs.next()) {
    				System.out.print(rsRs.getString(1) + " : ");
    				System.out.print(rsRs.getString(2) + " : ");
    				System.out.print(rsRs.getString(3) + " : ");
    				System.out.print(rsRs.getString(4) + " : ");
    				System.out.print(rsRs.getString(5) + " : ");
    				System.out.print(rsRs.getString(6) + " : ");
    				System.out.print(rsRs.getString(7) + " : ");
    				System.out.println(rsRs.getString(8));
    			}
    			
    		}catch(Exception e) {
    			System.out.println(e);
    		}
    	}
    }
    

7교시 (16:30-17:20)

  • Oracle Eclipse Connection (계속)
package a.b.c.oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class OracleTest {
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		try {
			
			// =======================================================
			// ojdbc6.jar <-- JDBC 드라이버
			// Oracle 11g 2 Release <--> Java Application jdk 1.8
			// =======================================================
			
			// C:\app\kosmo\product\11.2.0\dbhome_1\jdbc\lib\ojdbc6.jar
			// oracle\jdbc\driver\OracleDriver.class
			// oracle.jdbc.driver.OracleDriver
			
			/* =======================================================
				0. 환경변수에 CLASSPATH 설정하기
				// =======================================================
				1. C:\Program Files\Java\jdk1.8.0_202\jre\lib\ext\ojdbc6.jar <-- 이것을 사용한다.
				// =======================================================
				2. C:\Program Files\Java\jre1.8.0_202\lib\ext\ojdbc6.jar
				3. 이클릾스 프로젝트에서 Build Path -> Configuration Build Path... -> Libraries 탭 -> Add External JARS...
			// ======================================================= 
			*/
			
			/*
				1. oracle.jdbc.driver.OracleDriver : ojdbc6.jar 오라클 드라이버 찾는 시작점 클래스의 네임 스페이스
				   oracle.jdbc.driver : 패키지 이름
				   OracleDriver : 클래스 이름
				   
				2. jdbc:oracle:thin - 오라클 jdbc thin 드라이버 찾는 문자열
				
				3. @ : 구분자
				
				4. localhist - localhost : 데이터베이스가 설치된 컴퓨터 이름
							   127.0.0.1
							   172.30.1.30
							   DESKTOP-Q0ENOC3
							   
				5. 1521 - 오라클 데이터베이스 가리키는 port 번호
				
				6. orclKSY00 - 데이터베이스 식별자 : SID 또는 전역데이터베이스 이름
				
				7. scott : 계정
				
				8. tiger : 비밀번호
							   
			*/
			
			Class.forName("oracle.jdbc.driver.OracleDriver");
			System.out.println("" + Class.forName("oracle.jdbc.driver.OracleDriver"));
			Connection conn = DriverManager.getConnection("jdbc:oracle:thin:@localhost:1521:orclKSY00", "scott", "tiger");
			System.out.println("conn >>> : " + conn);
			Statement stmt = conn.createStatement();
			System.out.println("stmt >>> : " + stmt);
			ResultSet rsRs = stmt.executeQuery("SELECT * FROM EMP ORDER BY 1 DESC");
			System.out.println("rsRs >>> : " + rsRs);
			
			while (rsRs.next()) {
				System.out.print(rsRs.getString(1) + " : ");
				System.out.print(rsRs.getString(2) + " : ");
				System.out.print(rsRs.getString(3) + " : ");
				System.out.print(rsRs.getString(4) + " : ");
				System.out.print(rsRs.getString(5) + " : ");
				System.out.print(rsRs.getString(6) + " : ");
				System.out.print(rsRs.getString(7) + " : ");
				System.out.println(rsRs.getString(8));
			}
			
		} catch (Exception e) {
			System.out.println(e);
		}
	}
}

8교시 (17:30-18:30)

  • OracleTest_1
package a.b.c.oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class OracleTest_1 {

	// DataSource 정보 : 데이터베이스 연결 정보
	public static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";
	public static final String JDBC_URL = "jdbc:oracle:thin:@localhost:1521:orclKSY00";
	public static final String JDBC_USER = "scott";
	public static final String JDBC_PASSWORD = "tiger";
	
	// sql Query
	public static String sqlQuery = "SELECT EMPNO, ENAME, JOB, MGR FROM EMP ORDER BY 1 DESC";
	
	// 생성자
	public OracleTest_1() {
		
		try {
			Class.forName(JDBC_DRIVER);
		} catch (Exception e) {
			System.out.println("JDBC 드라이버를 찾지 못했어요 >>> : " + e.getMessage());
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		try {
			
			Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
			Statement stmt = conn.createStatement();
			// stmt.executeQuery("쿼리문"); 시작점
			ResultSet rsRs = stmt.executeQuery(sqlQuery);
			
			if (rsRs != null) {
				while (rsRs.next()) {
					System.out.print(rsRs.getString("EMPNO") + " : ");
					System.out.print(rsRs.getString("ENAME") + " : ");
					System.out.print(rsRs.getString("JOB") + " : ");
					System.out.println(rsRs.getString("MGR"));
				}
			}
		} catch (Exception e) {
			System.out.println(e);
		}
	}
}
  • OracleTest_1_1
package a.b.c.oracle;

import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.Statement;

public class OracleTest_1_1 {

	// DataSource 정보 : 데이터베이스 연결 정보
	public static final String JDBC_DRIVER = "oracle.jdbc.driver.OracleDriver";
	public static final String JDBC_URL = "jdbc:oracle:thin:@localhost:1521:orclKSY00";
	public static final String JDBC_USER = "scott";
	public static final String JDBC_PASSWORD = "tiger";
	
	// sql Query
	public static String sqlQuery = "SELECT EMPNO AS AA, ENAME AS BB, JOB, MGR FROM EMP ORDER BY 1 DESC";
	
	// 생성자
	public OracleTest_1_1() {
		
		try {
			Class.forName(JDBC_DRIVER);
		} catch (Exception e) {
			System.out.println("JDBC 드라이버를 찾지 못했어요 >>> : " + e.getMessage());
		}
	}
	
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		try {
			
			Connection conn = DriverManager.getConnection(JDBC_URL, JDBC_USER, JDBC_PASSWORD);
			Statement stmt = conn.createStatement();
			// stmt.executeQuery("쿼리문"); 시작점
			ResultSet rsRs = stmt.executeQuery(sqlQuery);
			
			if (rsRs != null) {
				while (rsRs.next()) {
//					System.out.print(rsRs.getString("AA") + " : ");
//					System.out.print(rsRs.getString("BB") + " : ");
//					System.out.print(rsRs.getString("JOB") + " : ");
//					System.out.println(rsRs.getString("MGR"));
					System.out.print(rsRs.getString(1) + " : ");
					System.out.print(rsRs.getString(2) + " : ");
					System.out.print(rsRs.getString("JOB") + " : ");
					System.out.println(rsRs.getString("MGR"));
				}
			}
		} catch (Exception e) {
			System.out.println(e);
		}
	}
}

Notes


728x90