전체 글 (30)
SELECT 구문

[제어판] -> [시스템 및 보안] -> [관리도구] -> [서비스]

tnsnames.ora 내에서 우리가 필요한 부분

XE =

(DESCRIPTION =

(ADDRESS = (PROTOCOL = TCP)(HOST = kitri-PC)(PORT = 1521))

(CONNECT_DATA =

(SERVER = DEDICATED)

(SERVICE_NAME = XE)

)

)

샘플 SQL이 저장된 경로

C:\oraclexe\app\oracle\product\10.2.0\server\RDBMS\ADMIN

접속

http://127.0.0.1:8080/apex/

테이블 - Entity : 컬럼 네임

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

name kor eng mat

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

kim 90 50 90

lee 80 40 80

JI 70 50 70

[쿼리파일 불러오는 방법]

select * from tab; -> 생성된 테이블 확인하는 방법

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

DB - Server, Client / Program : PL-SQL / xml 맵핑, 분석코드

계정 권한 / sys, sysdba(ID, PW), system 등

SID(XE) : 기본 DB의 영역, 작업공간, 메모리, 임시기억장소 등

Create(crud), Table(crud)

Read

Updata

Delete

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

host help - 도스 모드 도움말

SAVE A.SQL -> 내문서에 저장됨

HELP SET -> 커멘드창에서 구현할 수 있는 명령어

DESC 테이블명 -> 테이블의 구조를 본다

VARCHAR2 - 4000자까지 가능하다

1. 생성된 Table 안에 자료를 추가한 후, 자료의 속성을 통해서 Read하는 구문

- 테이블의 구조를 확인한다. DESC 테이블명;

* 속성을 이용한 구문 처리

SELECT 칼럼리스트,,,,

FROM 테이블명;

Q1) 사원 테이블의 모든 내용을 보자.

SELECT * FROM EMP;

Q2) 사원 테이블의 사원의 이름과 직업을 출력하자.

Q3) 사원 테이블의 사원의 이름과 직업 월급을 출력하자.

Q4) 사원 테이블의 사원의 이름과 사번, 부서번호를 출력하자.

Q5) 부서테이블의 구조를 보자.

DESC DEPT;

Q6) 부서테이블의 전체 내용을 보자.

SELECT * FROM DEPT;

Q7) 사원테이블과 부서테이블의 내용을 보자.

SELECT * FROM EMP, DEPT;

Q8) 컬럼의 별칭을 줄 수 있다.

SELECT 칼럼명 별칭 FROM EMP; (오라클에서, 오라클에서 문자열은 ‘홍길동’ VARCHAR2)

SELECT 칼럼명 AS “별칭” EMP; (다른 DB)

사원테이블의 ENAME을 사원이름이라고 출력해보자.

SELECT ENAME 사원이름 FROM EMP;

Q9) 사원테이블에서 사원번호, 봉급, 부서번호 라고 출력하자.

SELECT EMPNO 사원번호, SAL 봉급, EMPNO 부서번호 FROM EMP;

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

SELECT E.ENAME, D.NAME, E.DEPTNO FROM EMP E, DEPT D;

Q11) 연결문자열 ||

SELECT ENAME || '님‘ FROM EMP;

데이터 뒤에 님이 붙는다

SELECT ENAME || '님의 월급은 ' || SAL || '이고 입사일은 ' || HIREDATE || '입니다.' FROM EMP;

FROM 뒤에가 먼저 수행되고 SELECT가 나중에 수행된다.

COL 컬럼명 FOR A 숫자크기; // 문자

COL 컬럼명 FOR 999; // 숫자

컬럼에 산술 연산, 논리, 비교 등을 할 수 있다.

Q12) 사원의 이름과, 월급, 연봉을 출력해보자.

SELECT ENAME, SAL, SAL*12 AS 연봉 FROM EMP;

Q13) 사원의 이름과 커미션을 출력해보자.

SELECT ENAME, COMM FROM EMP;

Q14) 봉급을 구하되 월급 + 커미션

이름 월급 커미션 봉급

SELECT ENAME 이름, SAL 월급, COMM 커미션, SAL+COM 봉급 FROM EMP;

NULL값은 연산이 안된다!

해결방안? -> NVL(컬럼명, 대처값)

SELECT SAL, NVL (SAL, 0) FROM EMP;

SELECT SAL, NVL(COMM, SAL) FROM EMP;

SELECT ENAME 이름, SAL 월급, COMM 커미션, SAL+NVL(COMM, 0) 봉급 FROM EMP;

[결과]

[조건부]

SELECT FROM WHERE 컬럼과 비교 연산

Q15) 사원 테이블에서 월급을 2000 이상 받는 사원을 출력하자.

SELECT * FROM EMP WHERE SAL>=2000;

Q16) 사원 테이블에서 부서번호가 10인 사원의 이름과 부서번호를 출력하자.

SELECT ENAME, DEPTNO FROM EMP WHERE DEPTNO=10;

Q17) 사원 테이블에서 입사년도가 82년 이후에 입사한 사원의 이름과 입사년도

SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE>'82/01/01';

SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE>'82-01-01';

SELECT ENAME, HIREDATE FROM EMP WHERE HIREDATE>'1982-01-01';

Q18) 사원의 봉급이 2000에서 4000 사이의 사원의 이름과 봉급을 출력하세요.

SELECT ENAME, SAL FROM EMP WHERE (SAL>=2000 AND SAL<=4000);

SELECT ENAME, SAL FROM EMP WHERE SAL BETWEEN 2000 AND 4000;

Q19) 사번이 7521, 7566, 7788인 사원의 사번과 이름을 출력하자.

SELECT EMPNO, ENAME FROM EMP WHERE EMPNO= 7521 OR EMPNO=7566 OR EMPNO=7588;

SELECT EMPNO, ENAME FROM EMP WHERE EMPNO IN(7521, 7566, 7588);

[그룹핑]

SELECT 컬럼 ----2

FROM 테이블 ----1

GROUP BY 컬럼(그룹) ----3

Q20) 사원 테이블에서 부서별로 출력해보자.

SELECT DEPTNO FROM EMP GROUP BY DEPTNO;

Q21) 사원 테이블에서 직업별로 출력해보자.

SELECT JOB FROM EMP GROUP BY JOB;

[집계 함수]

SUM(), AVG(), MAX(), MIN(), COUNT(*);

Q22) 사원 테이블에서 인원수를 출력해보자.

SELECT COUNT(*) FROM EMP;

SELECT COUNT(COMM) FROM EMP; (NULL값은 출력하지 않는 것이 특징)

Q23) 사원 테이블에서 봉급의 합계, 평균, 큰값, 작은값을 출력해보자.

SELECT SUM(SAL), AVG(SAL), MAX(SAL), MIN(SAL) FROM EMP;

Q24) 사원 테이블에서 직업별 봉급의 합을 구하시오

SELECT JOB, SUM(SAL) FROM EMP GROUP BY JOB;

SELECT ENAME, JOB, SUM(SAL) FROM EMP GROUP BY JOB; (X)

-> GROUP BY를 할 때 SELECT에 올 수 있느 것은 GROUP BY 대상과 집계 함수만 올 수 있다!

Q25) SELECT ENAME FROM EMP ORDER BY ENAME;

SELECT ENAME FROM EMP ORDER BY ENAME ASC; (기본)

SELECT ENAME FROM EMP ORDER BY ENAME DESC;

SELECT ENAME, JOB FROM EMP ORDER BY 2; -> JOB으로 정렬

SELECT ENAME, JOB FROM EMP ORDER BY 1; -> ENAME으로 정렬

Q26) 사원 테이블에서 이름은 오름차순 직업은 내림차순으로 출력해보자.

SELECT ENAME, JOB FROM EMP ORDER BY ENAME, JOB DESC;

Q27) 부서별로 출력하되 같은 직업의 개수를 출력해라.

SELECT DEPTNO, COUNT(JOB) AS “직업의 개수” FROM EMP GROUP BY DEPTNO ORDER BY 1;

SELECT JOB, COUNT(JOB) AS “직업의 개수” FROM EMP GROUP BY JOB ORDER BY 2;

Q28) 10번 부서의 사원의 이름, 사번, 부서명을 출력하자.

SELECT E.ENAME, E.EMPNO, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND E.DEPTNO=10;

Q29) 20번 부서에서 1982년에 입사한 사원의 이름과 부서명을 출력하자.

SELECT E.ENAME, D.DNAME FROM EMP E, DEPT D WHERE E.DEPTNO=D.DEPTNO AND D.DEPTNO=20 AND E.HIREDATE BETWEEN '82-01-01' AND '82-12-31';

[SELECT 구문정리]

<실행순서>

SELECT ------------5

FROM -------------1

WHERE ------------2

GROUP BY ---------3

HAVING -----------4

ORDER BY ---------6

Q1. 직업별 총 월급의 합을 구하고, 총 직업별 월급의 합이 5000 이상인 것만 출력하라

SELECT SUM(SAL) FROM EMP WHERE SUM(SAL)>=5000 GROUP BY JOB; (X)

*** 집계함수 비교는 WHERE 뒤에 올 수 없다.

SELECT JOB, SUM(SAL)

FROM EMP

GROUP BY JOB

HAVING SUM(SAL)>=5000;

Q2. 부서별 월급의 합을 구하고 그 총합이 10000 이상인 것을 출력하라.

SELECT DEPTNO, SUM(SAL)

FROM EMP

GROUP BY DEPTNO

HAVING SUM(SAL)>=10000;

[WILD CARD]

_ (Underscore) : 한문자

% : 모든 거, 아무 것도 없느 sruddn도 포함

Q1. 이름이 S로 끝나는 경우 : ‘%S'

SELECT ENAME

FROM EMP

WHERE ENAME LIKE '%S'

Q2. 이름의 두 번째 글자가 A인 경우 : ‘_A%'

SELECT ENAME

FROM EMP

WHERE ENAME LIKE '_A%'

Q3. 이름에 T가 두 번 들어가는 경우 : ‘%T%T%'

SELECT ENAME

FROM EMP

WHERE ENAME LIKE '%T%T%';

Q4. 이름의 첫 글자가 A ~ S로 시작하는 경우 :

SELECT ENAME

FROM EMP

WHERE ENAME BETWEEN 'A%' AND 'S%';

Q5. 이름의 첫 글자가 A, S로 시작하고 두 번째 글자가 C가 아닌 경우 :

SELECT ENAME

FROM EMP

WHERE ENAME LIKE 'A%' OR ENAME LIKE 'S%'

AND ENAME NOT LIKE '_C%';

Q6. 10%라는 문자열을 포함한 모든 문자열

LIKE '%10E%%' ESCAPE 'E' (E 뒤에 오는 %는 문자열로 간주함!)

: 이 문자열을 찾으려면 %가 WILD CARD 문자이기 때문에 ESCAPE 문자라는 것을 삽입해야 한다.

즉, LIKE '%10E%%' ESCAPE 'E'라고 하면, ‘%’가 출력된다.

여기서 E 대신에 어떤 문자라도 삽입할 수 있다.

SELECT * FROM EMP WHERE JOB LIKE '%\%AL\%%' ESCAPE '\';

 

'BigData > DB/Oracle' 카테고리의 다른 글

DB에서 1:1, 1:N, N:M 관계에 관하여  (0) 2015.04.02
  Comments,     Trackbacks
[Day13] 파일 입출력

[ 파일 입출력 : 스트림(Stream) ]

0, 1(bit) * 8 = 8bit = 1byte = 최소 코드 크기 = stream

 Reader - read() / Writer - write()

1. 스트림(byte) : read() / write() - 이미지, 동영상 등

2. 한글자(char) : read() / write() - 파일문서

3. Object형 - node(class) : read() / write() - 클래스를 통해서 자료 입출력


File : 디렉토리, 파일

c - createNewFile()
r - list()
u - renameTo(File dest)
d - delete()

 

'BigData > JAVA' 카테고리의 다른 글

JAVA 이미지 사이즈 조절하기  (0) 2015.05.18
[Day11] 예외처리(Exception)  (0) 2015.03.05
[Day10] 추상화  (0) 2015.03.05
[Day8] 캐스팅 연산자  (0) 2015.03.05
[Day7] 상속, 다형성  (0) 2015.03.05
  Comments,     Trackbacks
[Day11] 예외처리(Exception)

Throwable: JVM에서 프로그램 실행할 때 프로그램이 중단되는 경우에 자동으로 생성되는 클래스 (Exception, Errors)
Errors는 막을 수 없으나 Exception은 예외처리를 할 수 있다.

예외처리 - Exception(1983년도의 C++부터 생김)란?
Run Time시에 외부에 의한 값에 의하여 프로그램이 중단할 때 생성되는 클래스를 말하며
생성되는 클래스를 try~catch 문을 이용해서 처리하는 것을 말한다.

ex) NumberFormatException N=new NumberFormatException();
 [형식]
 단일 try~catch
   try { 오류가 날만한 코드;
    } catch(해당 Exception 객체) {
     처리코드;
    } finally { }
    
 다중 try~catch
  하나의 try에 여러개의 catch 구문을 사용하여
  후손의 Exception부터 선조의 Exception 순으로 예외처리를 구현한다.
 
 중첩 try~catch
 
 throws(위임) : Exception이 발생한 메소드가 try~catch를 처리하지 않고 호출하는 쪽에서
       try~catch를 처리하도록 위임하는 키워드 해당 메소드 뒤에 선언한다.
 throw(생성) : 발생하고자 하는 Exception을 명시 생성하는 키워드
     Ex) throw new Exception(); 

'BigData > JAVA' 카테고리의 다른 글

JAVA 이미지 사이즈 조절하기  (0) 2015.05.18
[Day13] 파일 입출력  (0) 2015.03.05
[Day10] 추상화  (0) 2015.03.05
[Day8] 캐스팅 연산자  (0) 2015.03.05
[Day7] 상속, 다형성  (0) 2015.03.05
  Comments,     Trackbacks
[Day10] 추상화

interface(full추상화) : public(공개), ① 상수(필드), ② 추상메소드, ③ jdk 1.8 default 메소드
      : 다중 상속(구현), 인터페이스는 공개형(jdk 1.8부터)이다!
     
[형식]     
class C extends A implements B {}
class는 다중 상속은 안되지만 class My extends A implements B, D {}
         =class My extends A implements D, B {}
interpace는 다중 상속이 가능하다
interface C extends A,B {}
class D implements C {}

[문법]

인터페이스의 접근 지정자는 무조건 다 public! 나머지 접근지정자는 사용하지 않는다.
멤버 없이 혼자 사용한다.

interface ITest { 필드, 추상, default
     void Prn(); // public abstract Prn();
     int a=10; // public (static final-필드) int a=10;
     default String getName() { return "홍길동"; }
    }
    
public static void Prn()
{ // 필드 - 변수를 상수화(pi=3.14 등등)
 final int k=10; // 지역필드, 변수 k는 20으로 변경할 수 없다.
}

interface ITest {} -> ITest.java -> ITest.class 생성자를 가지지 않는다.

class Test {

 int a;
 My m;
 public Test() {
 
     m=new My();

      }
 
 }
}

 

'BigData > JAVA' 카테고리의 다른 글

[Day13] 파일 입출력  (0) 2015.03.05
[Day11] 예외처리(Exception)  (0) 2015.03.05
[Day8] 캐스팅 연산자  (0) 2015.03.05
[Day7] 상속, 다형성  (0) 2015.03.05
[Day7] 2차원 배열  (0) 2015.03.05
  Comments,     Trackbacks
[Day8] 캐스팅 연산자

<캐스팅 하는 법>


(다운캐스팅-명시형)

bouble d=90.9;
int a = (int)d;

(업캐스팅-묵시형)
     
int a=100;
double d=a;

Object -> Test

Object obj=null;
Test T1=new Test();
  obj=T1;
 
Test T2=(Test)obj;

 

ex)

public void Prn(Object obj) {

}

Object i1 = new Object();
Prn(01);
Test T1 = new Test();
Prn(T1);

 

<주말>

주말 공부 ^.^

1. 자바의 자료형(7)
2. 자바의 기본 구문
   if, for, while, do while, switch, 중첩 for 등
 봄, 여름, 가을, 겨울, 구구단 짜기
3. 메소드 - Static, void, return Type

Test {

 main() {}
 Prn(100); // 출력
 Prn(100,200); 출력
 Prn(90.9);
 Prn('A');
 int a= Disp(100)); 출력
 double d=disp(100.0);
 char ch=disp02('A');
 String str=disp03("연습이야");

 My.Prn(100); // 출력
 My.Prn(100,200); 출력
 My.Prn(90.9);
 U_Test.Prn('A');
 int a= U_Test.Disp(100)); 출력
 double d= U_Test.disp(100.0);
 char ch=U_Test.disp02('A');
 String str=disp03("연습이야");

}

 

 

'BigData > JAVA' 카테고리의 다른 글

[Day11] 예외처리(Exception)  (0) 2015.03.05
[Day10] 추상화  (0) 2015.03.05
[Day7] 상속, 다형성  (0) 2015.03.05
[Day7] 2차원 배열  (0) 2015.03.05
[Day6] 배열  (0) 2015.03.05
  Comments,     Trackbacks
[Day7] 상속, 다형성

1. 캡슐화 : 클래스 = 속성(필드, 변수) + 메시지(기능, 메소드)
 
 2. 상속 : 캡슐화로 지정된 단일 클래스의 기능을 확장해서 사용하는 구조를 말한다.

 ex) 5과목의 총평균을 구하고 싶다.
      Score(3) -> MyScore(2) + = 5과목
     
       공학용 계산기를 만들고 싶다.
     Calc (4칙) -> 추가....
    
 클래스 간의 상속 : extends
 인터페이스 간의 상속 : extends
 클래스가 인터페이스를 상속 : implements
 
 특징 : 자바의 클래스간의 상속은 단일 상속을 원칙으로 한다.
    다중상속은 인터페이스를 여러개 구현하면서 이루어진다.
    상속시에 선조클래스와 후손클래스의 관계로 지정되며 내부적으로 생성자를 통해서 구조를 이룬다.
 
 3. 다형성
 
  public class Vector <E>
   extends AbstractList <E>
    implements List <E>
     RandomAccess, Cloneable, Serializable
     
  [형식]
   접근제한자 class 후손클래스이름
     extends 선조클래스이름{}
     
  
     
 

'BigData > JAVA' 카테고리의 다른 글

[Day10] 추상화  (0) 2015.03.05
[Day8] 캐스팅 연산자  (0) 2015.03.05
[Day7] 2차원 배열  (0) 2015.03.05
[Day6] 배열  (0) 2015.03.05
[Day5] 캡슐화  (0) 2015.03.05
  Comments,     Trackbacks
[Day7] 2차원 배열

다차원 배열(2차원)
 : 차원이 행, 열을 가진 구조를 가진 배열
 
 [형식]
  dataType [][] 변수 = { {,,,}, {,,,} };
  dataType []변수[] = { {,,,}, {,,,} };
  
  dataType [][]변수 = new dataType[요소의 크기][요소의 크기];
  dataType [][]변수 = new dataType[][] { {,,,}, {,,,} };
  
 ============================================================
 
 ex)     0   1   2
    -----------
   0  10, 20, 30
     -----------
   1  40, 50, 60
  
   2 줄의 3칸 : ar.length=2, ar[0].length=3, ar[1].length=3
       
   ar.length + ar[0].length + ar[1].length =? -> 8
 
   int [][] ar = { {10, 20, 30},
         {40, 50, 60} }; // 2, 3의 배열
         ar[행][열]
   10 -> ar[0][0]
   20 -> ar[0][1]
   30 -> ar[0][2]
   40 -> ar[1][0]
   50 -> ar[1][1]
   60 -> ar[1][2]
  
   0 -> 0, 1, 2
   1 -> 0, 1, 2
  
   for(int i=0; i<=1; i++) {
    for(int j=0; i<=2; j++) {
     System.out.println(ar[i][j]);
    }
   }
    
  
  
 ============================================================  

'BigData > JAVA' 카테고리의 다른 글

[Day8] 캐스팅 연산자  (0) 2015.03.05
[Day7] 상속, 다형성  (0) 2015.03.05
[Day6] 배열  (0) 2015.03.05
[Day5] 캡슐화  (0) 2015.03.05
[Day5] 반복문  (0) 2015.03.05
  Comments,     Trackbacks
[Day6] 배열
배열이란?
 같은 자료형의 나열형 값들을 하나의 이름으로 등록해서 사용하는 것을 말한다.
 값은 0부터 시작하는 인덱스로 시작된다.
 length라는 속성으로 배열의 요소의 개수를 리턴받는다.
 
 목적 : 메모리 효율성과 관리의 유연성
    ex) 달걀꾸러미
   
 자바의 배열 : 차원이 하나인 일차원 배열, 다차원, 객체배열(Object Array)이 있다.
 
 - 1. 일차원 배열 : 행으로 값을 관리하는 차원이 하나인 배열
   [형식]
  
   ex) 10 20 30 40 : Ar
  
   dataType [] 변수 = {,,,,}; int [] ar = {10, 20, 30, 40};
   dataType 변수 [] = {,,,,}; int ar[] = {10, 20, 30, 40};
   dataType [] 변수 = new dataType[요소의 크기];
       int [] ar = new int [4]; // 자유영역 공간에 정수형 4개 확보, 0으로
        ar[0]=10;
        ar[1]=20;
        ar[2]=30;
        ar[3]=40;
         => ar.length=4 (값(요소)의 개수를 리턴한다)
         => 값(요소)의 개수(4)와 인덱스(3)는 -1의 차이가 난다
         
   dataType [] 변수 = new dataType[] {,,,,};
       int [] ar = new int [] {10, 20, 30, 40};
      
   =========================================================
  
   int []a = {10, 20};  (O)  -> a.length(2) // 이 방식을 더 권장한다
   int a[] = {10, 20};  (O)
   int []a = {10, 20,}; (O)   -> a.length(2)
   
   int [] a = {10,,20}; (X) // 중간의 공백은 허용이 안됨
   int [] a = {,,};     (X)
   int [5] a = {10, 20, 30, 40, 50}; (X)
   
   =========================================================  
  
  

 

'BigData > JAVA' 카테고리의 다른 글

[Day7] 상속, 다형성  (0) 2015.03.05
[Day7] 2차원 배열  (0) 2015.03.05
[Day5] 캡슐화  (0) 2015.03.05
[Day5] 반복문  (0) 2015.03.05
[Day4] 조건문  (0) 2015.03.05
  Comments,     Trackbacks