강의목표
1. db설치 후 속성파일을 확인할 수 있다.
2. sid의 개념을 이해할 수 있다.
3. select 구문을 이해하고 활용할 수 있다.

뭔가 말하는 내용을 받아 적은 것이라 문장이 이상하다....

 

============================================================================

oracle11(XE)를 다운받아서 설치한다. oracle12부터는 c가 붙으며 cloud 연동이되서 무겁다.

오라클을 설치하면 데이터를 저장하는 서비스를 XE로 접근하게 해놨다. tomcat과 카타리나 같은 느낌.

XE = SID = Service ID

 

============================================================================

Window의 서비스 앱을 실행해서 oracle을 확인해보자.

OracleServiceXE : 오라클 서비스를 XE라는 서비스 아이디로 실행한다.
OracleXETNSListener : 클라이언트가 서버(XE)에 접속하게 해준다.

 

오라클 포트
1521: Oracle database listener
2030: Oracle Services for Microsoft Transaction Server
8080: HTTP port for the Oracle Database XE graphical user interface

 

port number :8080은 톰캣이랑 겹친다. WAS랑 서버(오라클)랑 있으면 오라클이 우선순위이므로
우선순위가 낮은 톰캣의 포트를 바꿔야한다.

 

C:\tomcat\apache-tomcat-9.0.45\conf에서 servel.xml을 실행한 후

69번째 라인의 포트를 8080에서 8787로 바꾼다.

 

    <Connector port="8787" protocol="HTTP/1.1"
               connectionTimeout="20000"
               redirectPort="8443" />

 

============================================================================

C:\oraclexe\app\oracle\product\11.2.0\server\log\diag
C:\oraclexe\app\oracle\product\11.2.0\server\network\ADMIN에서 
listner.ora, tnsnames.ora는 확인해야한다.
얘네 2개가 서비스에 OracleServiceXE, OracleXETNSListener 두 개의 속성을 확인한다.

 

C:\oraclexe\app\oracle\product\11.2.0\server에서 다른 프로그램이랑 연결하는 객체(드라이버)를 확인할 수 있다.
ASP.net : C#연동 객체
jdbc : java 
odbc, ode.net, odp.net : 기타언어
oledb : 윈도우 연결객체

 

겸사겸사 java의 jdk와 jre에 jdbc를 복사해놓는다.

C:\oraclexe\app\oracle\product\11.2.0\server\jdbc\lib에서 

ojdbc5.jar, ojdbc6.jar, ojdbc6_g.jar 파일을 복사해서
C:\Program Files\Java\jdk1.8.0_291\jre\lib\ext,
C:\Program Files\Java\jre1.8.0_291\lib\ext 두 곳에 붙여넣는다.

 

============================================================================

cmd에서 오라클을 실행하는 방법

1. sqlplus 입력 -> id 입력 -> pw 입력

2. sqlplus id 입력 -> pw 입력

3. sqlplus id/pw 입력

 

미리만들어진 sql문을 실행하려면
@"c:\test\scott.sql"

 

============================================================================

[1] 단일 select
    SELECT 컬럼리스트,,,,,[*]
    FROM 테이블명;

 

Q1) 생성된 모든 테이블을 확인
SELECT *
FROM TAB; 

Q2) 접속된 계정을 확인
SHOW USER;

 

Q3) 생성된 테이블 중 사원테이블(EMP)의 구조 확인
DESC EMP

 

Q4) 사원테이블에서 사원의 이름, 사번을 출력 해보자.
SELECT ENAME, EMPNO
FROM EMP;

 

Q5) 사원테이블과 부서테이블의 전체 내용을 출력하자
SELECT *
FROM EMP, DEPT; 

--> (EMP1 - DEPT1, EMP2 - DEPT1 ... EMP11 - DEPT4, EMP12 - DEPT4) 해서 12 * 4 = 48개 나옴

 

Q6) 사원의 이름과 부서번호, 부서이름을 출력하자
SELECT ENAME, DEPTNO, DNAME
FROM EMP, DEPT; --> 오류

SELECT EMP.ENAME, EMP.DEPTNO, EMP.DNAME
FROM EMP, DEPT;

 

============================================================================

[2]
    SELECT 컬럼 [AS] 별칭,,,,
    FROM 테이블명 별칭,,,,;

 

Q7) 사원의 이름고 부서번호, 부서이름을 테이블에 각각 사원, 부서로 별칭을 주어 출력하자
SELECT 사원.ENAME, 부서.DEPTNO, 부서.DNAME
FROM EMP 사원, DEPT 부서;

Q8) 사원테이블에서 사원의 이름, 부서번호, 봉급이라고 별칭을 주고 출력하자
SELECT ENAME "사원의 이름", DEPTNO "부서번호", SAL AS 봉급
FROM EMP;      --> 띄어쓰기가 있으면 "", AS는 생략 가능

 

Q9) 문자열 연결 연산자 || : SELECT 위치에 지정 이름 님이라고 출력하자
SELECT ENAME||'님'
FROM EMP;

 

Q10) 00님은 00일에 입사했다. 를 출력해보자
SELECT ENAME||'님은 '||HIREDATE||'일에 입사했다.'
FROM EMP;

 

Q11) 중복 데이터를 삭제하는 DISTINCT(열중복제거)
SELECT DISTINCT 컬럼
FROM 테이블;

SELECT DISTINCT JOB
FROM EMP;

Q12) 사칙연산 (컬럼)
사원테이블에서 연봉을 구하자
봉급 * 12 + 커미션
SELECT ENAME, SAL*12 + COMM
FROM EMP;  --> NULL은 더해지지 않는다

 

SELECT COMM, NVL(COMM, NULL을 대체할 값)
FROM EMP;

SELECT ENAME, SAL*12 + NVL(COMM, 0) AS 연봉
FROM EMP;

 

============================================================================

[3]
    SELECT 컬럼 [AS] 별칭,,,,
    FROM 테이블명 별칭,,,,;
    ORDER BY 정렬할 컬럼 [ASC(DEFAULT), DESC]  --> 컬럼명 대신 SELECT 순서에 따라 1234로 가능

 

Q13) 사원테이블에서 사원의 이름, 사번을 사번의 역순으로 출력해보자
SELECT ENAME, EMPNO
FROM EMP

ORDER BY 2 DESC;

+ Recent posts