• Queue
      • 컴퓨터의 기본적인 자료구조이다
      • 터널과 같은 구조로 데이터가 들어가는 부분, 나오는 부분이 있다
      • 데이터가 들어간 순서대로 나온다.
      • FIFO(First In First Out) 구조라고 부른다
      • 위의 그림과 같이 1번이 제일 먼저 들어갔다면 1번이 제일 먼저 나오는 구조이다
    • Code
      • 간단하게 구현한 코드
      • 입력후 결과를 확인해 보면 입력한 순서대로 작동하는 것을 알 수 있다.
      • remove의 경우 큐의 특성대로 순서대로 데이터를 빼주면 된다 그러므로 리스트의 제일 앞 요소를 빼주면 되고 결과는 처음 넣은 A와 C가 리스트에서 빠져나오고 D와 B가 남은걸 확인할 수 있다. 
      • List<String> queue = new ArrayList<>();
        
        queue.add("A");
        queue.add("C");
        queue.add("D");
        queue.add("B");
        
        System.out.println(queue);
        // A C D B
        
        queue.remove(0);
        queue.remove(0);
        
        System.out.println(queue);
        // D B

'자료구조' 카테고리의 다른 글

4. Tree  (0) 2021.10.18
3. Linked List  (0) 2021.10.18
2. Stack  (0) 2021.10.13
- 자료구조란?  (0) 2021.10.13
  • 데이터의 효율적인 접근 및 수정을 가능하게 하는 자료의 조직, 관리, 저장을 의미한다.

- 자료구조의 종류

  • 선형 구조
    • 스택(Stack) : LIFO(Last In First Out) / 마지막에 들어간 값이 먼저 나오는 구조
    • 큐(Queue) : FIFO(First In First Out) / 처음 들어간 값이 처음 나오는 구조
    • 덱(Deque) : 큐와 스택을 합쳐놓은 것과 비슷하게 볼 수 있다. / 양쪽 끝에서 삽입과 삭제가 모두 가능한 구조
  • 비선형 구조
    •  그래프(Graph) : 노드와 노드를 연결하는 간선을 하나로 모아놓은 자료구조
    •  트리(Tree) : 그래프의 한 종류로 여러 노드가 한 노드를 가리킬 수 없는 구조
      • 이진트리 : 자식 노드가 최대 두개인 트리구조 
        • 힙(Heap) : 이진트리의 일종으로 이진트리에 특성을 부여한 것(일반적으로 최댓값을 구하기 편하다)

'자료구조' 카테고리의 다른 글

4. Tree  (0) 2021.10.18
3. Linked List  (0) 2021.10.18
2. Stack  (0) 2021.10.13
1. Queue  (0) 2021.10.13
    • 오라클 객체
      1. VIEW
        • 가상의 테이블
        • 필요한 정보가 여러 테이블에 분산 저장되어있어 자주 조인이 발생되는 경우
        • 테이블 중 일부 칼럼이나 행만 요구되는 경우
        • 특정 테이블의 접근을 제한하고 결과만 제공하는 경우
        • VIEW가 바뀌면 원본도 같이 바뀌기 때문에 이러한 상황을 원치 않는다면 READ ONLY를 작성해 줘야 한다
        • CREATE [OR REPLACE] VIEW 뷰이름[(컬럼 리스트)]
              AS
                SELECT 문
                [WITH CHECK OPTION]
                [WITH READ ONLY]
      2. SEQUENCE
        • 자동적으로 증가 또는 감소되는 번호를 생성
        • 테이블과 독립적 사용
        • 테이블에 기본키로 사용된 적당한 칼럼이 없는 경우 기본키로 사용될 수 있음(게시판 글 번호 등)
        • CREATE SEQUENCE 시퀀스명
                [START WITH n]                시작값(생략되면 MINCALUE)
                [INCREMENT BY n]              증감 값 (DEFAULT 1)
                [MAXVALUE n|NOMAXVALUE]       최대값(DEFAULT NOMAXVALUE(10^27))
                [MINVALUE n|NOMINVALUE]       최솟값(DEFAULT MOMINVALUE(1))
                [CYCLE|NOCYCLE]               최대(최소)걊 도달 후 다시 시퀀스 생성 여부(기본값 NOCYCLE)
                [CACHE n|NOCACHE]             메모리에 미리 시퀀스 생성저장 후 사용(기본값 CACHE 20)
                [ORDER|NOORDER]               요청한 대로 생성 보장 (기본값 NOORDER)
        • 시퀀스 값 참조
        • 시퀀스명.CURRVAL : 시퀀스의 현재값 반환
          시퀀스명.NEXTVAL : 시퀀스의 다음값 반환
          해당 세션에서 시퀀스 생성 후 첫 번째 명령은 반드시 시퀀스명.NEXTVAL이어야함
          시퀀스명.CURRVAL은 시퀀스명.NEXTVAL가 한번은 수행된 후 값 참조 가능
      3. SYNONYM
        • 동의어
        • 오라클에서 사용된 모든 객체를 대상으로 별칭을 부여
        • 긴 테이블명 등에 대한 단축어 기능 제공
        • 칼럼의 별칭이나 FROM절에 사용되는 테이블의 별칭과의 차이점은 적용 범위에 있다
        • CREATE [OR REPLACE] SYNONYM 동의어명
                 FOR 원본 객체명
      4. INDEX
        • 데이터 검색의 효율성을 증가시키기 위하여 사용
        • DB Server의 성능 개선
        • 인덱스를 관리하는데 시간이 오래 걸릴 수도 있으므로 조심해서 사용한다
          1. 인덱스가 요구되는 칼럼
            • 검색이 빈번히 사용되는 칼럼
            • 기본키와 외래 키
            • SORT나 JOIN에 사용되는 칼럼
            • WHERE절의 조건에 '='연산자가 사용된 경우와 범위를 정하여 비교하는 경우
          2. 인덱스가 불필요한 칼럼
            • 칼럼 도메인 작은 칼럼(성별, 학년 등)
            • 검색(select)보다 INSERT, UPDATE, DELETE 등의 명령이 더 중요한 경우
            • 검색 결과 대부분의 자료가 반환된 조건에 사용되는 칼럼
          3. 인덱스 종류
            • Unique/Non-Unique
              • 중복 값의 허용 여부에 따른 분류, Null 값은 허용되나 Unique Index에서 한 번만 허용(단, 기본키 인덱스에서는 Null불허용)
            • Normal Index
              • default 인덱스        
              • 칼럼 값과 rowid(물리적 위치정보)를 조합 사용하여 자료 저장
              • 2진 트리구조 사용으로 각 노드의 평균 검색시간이 동일
            • Bitmap Index
              • Cardinality가 적은 경우 효율적이고 삽입/삭제/수정이 빈번히 발생되는 경우 비효율적
              • 칼럼과 rowid를 이진으로 조합하여 사용
            • Function-Based Normal Index
              • where절에 함수가 사용되어 검색하는 경우가 많이 발생하는 경우 함수가 사용된 칼럼의 값을 기반으로 인덱스 생성
          4. 인덱스 재구성
            • 인덱스나 테이블을 다른 테이블 저장공간(테이블스페이스)으로 이동시킨 후 삽입/삭제 동작이 많이 발생된 경우
            • ALTER INDEX 인덱스명 REBUILD
  • CREATE [ UNIQUE | BITMAP ] INDEX 인덱스명
              ON 테이블명(컬럼명[, 컬럼명, ...]) [ASC|DESC]

'DataBase > Oracle' 카테고리의 다른 글

오라클 데이터 delete시 복구 방법  (0) 2021.11.09
17. 집합연산자  (0) 2021.07.24
16. 서브쿼리  (0) 2021.07.24
15. Join - 외부조인  (0) 2021.07.24
14. Join - 내부조인  (0) 2021.07.24
  • 집합 연산자
    • UNION
      • 합집합의 결과 반환
      • 중복 자료는 배제
    • UNION ALL
      • 합집합의 결과 반환
      • 중복자료 출력
    • INTERSECT
      • 교집합의 결과 반환
    • MINUS
      • 차집합의 결과 반환
      • A MINUS B : A에서 B를 뺀 결과

'DataBase > Oracle' 카테고리의 다른 글

오라클 데이터 delete시 복구 방법  (0) 2021.11.09
18. 오라클 객체  (0) 2021.07.24
16. 서브쿼리  (0) 2021.07.24
15. Join - 외부조인  (0) 2021.07.24
14. Join - 내부조인  (0) 2021.07.24
  • 서브 쿼리
    • SQL 구문 안에 또 다른 SQL 구문이 포함된 형태
    • 많은 JOIN을 대신할 수 있음
    • 서브 쿼리는 반드시 () 안에 기술해야 한다
    • 연관성
      • 연관성 없는 서브 쿼리 : 메인쿼리와 조인으로 연결되지 않은 서브쿼리
      • 연관성 있는 서브쿼리 : 메인쿼리와 조인으로 연결된 서브쿼리
    • 사용 위치
      • 일반 서브쿼리 : SELECT절에 사용
      • 인라인 서브 쿼리 : FROM절에 사용(독립실행이 가능해야 한다)
      • 중첩 서브 쿼리 : WHERE절에 사용
    • 반환 값
      • 단일행, 단일 열
      • 단일행, 다중 열
      • 다중행, 단일 열
      • 다중행, 다중 열
      • 단일행 서브 쿼리 : 하나의 행만 반환하는 서브쿼리 (=, >=, <=, <, >,!=)만 사용 가능
      • 다중행 서브 쿼리 : 서브 쿼리의 결과가 여러 행 반환되는 경우 (IN ANY SOME ALL EXISTS) 사용

'DataBase > Oracle' 카테고리의 다른 글

18. 오라클 객체  (0) 2021.07.24
17. 집합연산자  (0) 2021.07.24
15. Join - 외부조인  (0) 2021.07.24
14. Join - 내부조인  (0) 2021.07.24
13. Function - NULL 처리 함수  (0) 2021.07.24
  • 외부 조인
    • 조인 조건을 만족하지 않는 테이블에 NULL값을 갖는 행을 추가하여 조인 수행
      1. 일반 외부 조인
        • SELECT [테이블명 | 테이블 별칭]컬럼 명 [AS 컬럼 별칭],
          	   [테이블명 | 테이블 별칭]컬럼 명 [AS 컬럼 별칭],
                 						:
                                      :
            FROM 테이블 명1[별칭], 테이블 명2[별칭], ...
           WHERE 테이블명1.컬럼명[(+)] = 테이블명2.컬럼명[(+)]
            [AND 일반 조건]
        • 데이터가 부족 한쪽에 (+)를 붙여준다
        • 양쪽에 (+)를 사용할 수 없다
      2. ANSI 외부 조인
        • SELECT [테이블명 | 테이블 별칭]컬럼 명 [AS 컬럼 별칭],
          	   [테이블명 | 테이블 별칭]컬럼 명 [AS 컬럼 별칭],
                 						:
                                      :
            FROM 테이블 명1[별칭]
            [RIGHT | LEFT | FULL] OUTER JOIN 테이블 명2[별칭] ON(조인조건 [AND 일반 조건])
           WHERE 일반조건
        • RIGHT : FROM 절의 테이블명 1의 값보다 더 많을때 사용 / 오른쪽이 더 많다
        • LEFT : FROM 절의 테이블명1의 값보다 더 적을 때 사용 / 왼쪽이 더 많다
        • FULL : 양쪽의 테이블 모두가 서로 부족할 때 사용

'DataBase > Oracle' 카테고리의 다른 글

17. 집합연산자  (0) 2021.07.24
16. 서브쿼리  (0) 2021.07.24
14. Join - 내부조인  (0) 2021.07.24
13. Function - NULL 처리 함수  (0) 2021.07.24
12. Function - 집계함수  (0) 2021.07.24
  • Join
    • 관계형 데이터베이스의 핵심 기능
    • 여러 테이블에 분산되어있는 자료를 조회하는 방식
    • 조인에 참여하는 테이블들은 반드시 관계가 존재해야 함
    • 테이블 개수가 N개일 때 관계 조건은 적어도 N-1개 이상이 되어야 한다
    • 일반 조인 / ANSI 조인, 내부 조인 / 외부 조인으로 구분
    • 조인 조건 구성에 사용되는 연산자에 따라 동등 조인 / 비 동등 조인으로 구분
  • 내부 조인(INNER JOIN)
    • 각 DBMS회사에서 자사 DBMS에 최적화되도록 구성한 문법
      1. CARTESIAN PRODUCT
        • 조인 조건이 없거나 조인 조건을 잘못 기술했을 때 발생
        • 꼭 필요한 경우가 아니면 사용하지 않는 것이 좋다
        • ANSI의 CROSS JOIN에 해당한다
      2. EQUI-JOIN(동등 조인)
        • 일반 내부 JOIN
        • SELECT [테이블명 | 테이블 별칭]컬럼 명 [AS 컬럼 별칭],
          	   [테이블명 | 테이블 별칭]컬럼 명 [AS 컬럼 별칭],
                 						:
                                      :
            FROM 테이블 명[별칭], 테이블 명[별칭], ...
           WHERE 조인 조건
            [AND 일반 조건] 
          [GROUP BY 컬럼명, [컬럼명, ...]]
          [HAVING 조건]
           [ORDER BY 컬럼명 | 컬럼 인덱스 [ASC | DESC]]
        • ANSI INNER JOIN
        • SELECT [테이블명 | 테이블 별칭]컬럼 명 [AS 컬럼 별칭],
          	   [테이블명 | 테이블 별칭]컬럼 명 [AS 컬럼 별칭],
                 						:
                                      :
            FROM 테이블 명[별칭]
           INNER JOIN 테이블명[별칭] ON(조인조건 [AND 일반조건])
           WHERE 조인 조건
            [AND 일반 조건] 
          [GROUP BY 컬럼명, [컬럼명, ...]]
          [HAVING 조건]
           [ORDER BY 컬럼명 | 컬럼 인덱스 [ASC | DESC]]
        • INNER JOIN의 경우 이렇게 두 가지 방법으로 사용이 가능하다
      3. NON-EQUI-JOIN(비 동등 조인)
        • 조인 조건에 =연산자 이외의 연산자가 사용되는 조인
        • EXISTS, IN, ANY, SOME 등이 주로 사용된다
          • EXISTS(서브 쿼리)
            • TRUE / FALSE 반환
            • 무조건 서브 쿼리가 들어가야 되며 하나의 행이라도 존재하면 TRUE 아니면 FALSE
            • WHERE절에 사용

'DataBase > Oracle' 카테고리의 다른 글

16. 서브쿼리  (0) 2021.07.24
15. Join - 외부조인  (0) 2021.07.24
13. Function - NULL 처리 함수  (0) 2021.07.24
12. Function - 집계함수  (0) 2021.07.24
11. Function - 변환함수  (0) 2021.07.24
  1. IS [NOT] NULL
    • 특정 칼럼 값이 널 인지 확인
  2. NVL(col, value)
    • col의 값이 NULL이면 value를 반환
  3. NVL2(col, val1, val2)
    • col의 값이 NULL이면 val2를 반환, NULL이 아니면 val1을 반환
  4. NULLIF(col1, col2)
    • col1과 col2가 같으면 NULL반환, 다르면 col1반환

'DataBase > Oracle' 카테고리의 다른 글

15. Join - 외부조인  (0) 2021.07.24
14. Join - 내부조인  (0) 2021.07.24
12. Function - 집계함수  (0) 2021.07.24
11. Function - 변환함수  (0) 2021.07.24
10. Function - 날짜 함수  (0) 2021.07.24

+ Recent posts