본문 바로가기
개발 공부 Today I Learned

[국비 5일차 TIL] 뷰, 시퀀스, 동의어, 제약 조건

by 개발자신입 2023. 11. 27.
반응형

2023.11.27 배운 내용

-- VIEW

-- 하나 이상의 테이블에서 가져온 데이터를 가상으로 나타내는 가상 테이블

-- CREATE VIEW 생성명 AS (어디에서 가져올지 SELECT);

-- AS로 뷰 정의 시작

 

CREATE VIEW VW_EMP30ALL
    AS (SELECT * FROM EMP
        WHERE DEPTNO = 30);
 
SELECT * FROM VW_EMP30ALL;

DROP VIEW VW_EMP30ALL;

 

-- ROWNUM

-- 칼럼 맨 앞 열에 번호 순서를 칼럼으로 만들어줌. 데이터에 매겨지는 번호.

-- ORDER BY절을 통해 정렬해도 처음 지정된 번호가 유지됨.

-- 실행순서가 ROUNUM이 먼저 실행되고, ORDER BY가 나중에 실행되기 때문에.

 

SELECT ROWNUM, E.*
FROM (SELECT * FROM EMP ORDER BY DEPTNO, SAL, EMPNO)E;

 

--> ORDER BY를 먼저 하기 위해 FROM절에 서브쿼리 사용해서 묶어줌.

 

SELECT ROWNUM, E.*
FROM (SELECT * FROM EMP ORDER BY SAL DESC)E
WHERE ROWNUM <= 5;

 

--> 5번까지 출력

 

-- 시퀀스 (Sequence)

-- 특정 규칙에 맞는 연속 숫자 생성

-- 데이터베이스에서 고유한 일련번호를 자동으로 생성하는 객체

-- 순차적으로 증가하는 값을 생성해 주는 도구

 

-- CREATE SEQUENCE 만들 시퀀스명

-- START WITH : 몇 번부터 시작할지. 보통은 1임.

 

  1. 테이블 생성 : DEPT_TEMP2라는 테이블을 생성
  2. 테이블 값 입력 : DEPT_TEMP2에 값을 넣어줌
  3. 시퀀스 생성 :  CREATE SEQUENCE
  4. 시퀀스 사용 : INSERT INTO ~ VALUES(시퀀스명.NEXTVAL, ~)

 

-- 시퀀스 사용 : [시퀀스이름.CURRVAL] / [시퀀스이름.NEXTVAL]

 

-- INSERT INTO 테이블명(칼럼, 칼럼, 칼럼)

-- VALUES(시퀀스명.NEXTVAL, 'DATAVASE', '내용');

 

INSERT INTO DEPT_TEMP2(DEPTNO, DNAME, LOC)
VALUES(SEQ_DEPT.NEXTVAL, 'DATABASE', 'SEOUL');

SELECT * FROM DEPT_TEMP2
ORDER BY DEPTNO;

--> 적용됐는지 확인

 

-- 동의어 (Synonym)

-- 먼저 권한이 필요함

-- CREATE SYNONYM (별칭) FOR (별칭으로 부를 테이블);

-- 동의어의 경우 뒤에 FOR를 씀.

 

CREATE SYNONYM E
FOR EMP;

 

--> 앞으로 SCOTT에서는 EMP의 동의어가 E가 됨.

 

-- 제약 조건

-- 데이터 무결성, 정확성과 일관성을 보장하기 위하여.

 

-- 제약 조건 종류

-- NOT NULL

NULL을 허용하지 않음. NULL을 제외한 데이터의 중복은 허용.

 

-- UNIQUE

지정한 열이 유일한 값을 가져야 함. 중복 불가.

 

-- PRIMARY KEY

UNIQUE & NOT NULL, 중복과 NULL 불가.

뒤 데이터의 유일성을 보장해 줌

자식 테이블이 있으면 삭제 불가.

 

-- FOREIGN KEY

프라이머리 키를 참조하는 키 (레퍼런스, 참고, 주소값을 공유) (FK)

 

-- CHECK

열에 저장할 수 있는 값의 범위 또는 패턴을 정의

 

-- 데이터 모델링

-- 개념적 데이터 모델 (conceptual modeling)

-- 현실 세계의 중요 데이터를 추출하여 개념 세계로 옮기는 작업

-- 개체 - 관계 모델

 

-- 논리적 데이터 모델링 (logical modeling)

-- 개념 세계의 데이터를 데이터베이스에 저장하는 구조로 표현하는 작업

-- 관계 데이터 모델

 

-- 개체 (entity)

-- 사람, 사물 등 꼭 필요한 구별되는 모든 것

-- 각 개체만의 고유한 특성이나 속성을 하나 이상 가지고 있음

-- ex) 서점에 필요한 개체 : 고객,

 

-- 속성 (attribute)

-- 개체나 관계가 가지고 있는 고유의 특성

-- 의미 있는 데이터의 가장 작은 단위

 

-- 단일 값 속성

-- 값을 하나만 가질 수 있는 속성 ex) 이름, 적립금

 

-- 다중 값 속성

-- 값을 여러 개 가질 수 있는 속성 ex) 연락처, 저자(공동저자)

 

-- 한 칼럼 안에는 한 개의 데이터만 들어가야 함.

 

-- E-R 다이어그램 (Entity Relationship Diagram)

 

-- 단순 속성 : 세분화 불가 (책 이름, ISBM )

-- 복합 속성 : 세분화 가능 (주소, 생년월일 등)

-- 유도 속성 : 기존의 다른 속성의 값에서 유도되어 결정되는 속성, 파생

                      (가격 할인율 - 판매가격, 출생연도 - 나이)

-- 키 속성    : 각 개체 인스턴스를 식별하는 데 사용되는 속성 (고객 개체의 고객아이디)

-- 관계         : 개체와 개체가 맺고 있는 의미 있는 연관성 (고객과 책 사이에 '구매')

 

-- 일대일 관계 : 남편-부인

-- 일대다 관계 : 부서-사원

-- 다대다 관계 : 고객-

 

-- 논리적 데이터 모델링

-- 데이터베이스의 논리적 구조 = 데이터베이스 스키마(SCHEMA)

 

-- 관계형 데이터 모델

-- 다이아그램을 표로 표현

 

-- 릴레이션의 특성

-- 투플()의 유일성 / 투플()의 무순서 / 속성의 무순서 / 속성의 원자성

 

-- (Key)

-- 유일성최소성

 

-- 기본키(Primary)     : 기본적으로 사용하기 위한 키

-- 후보키(Candidate) : NOT NULL, UNIQUE, 유일성과 최소성을 만족하는 속성 또는 속성집합

-- 대체키(Alternate)   : 기본키로 선택되지 못한 키

-- 슈퍼키(Super)        : 유일성을 만족하는 속성 또는 속성집합

-- 외래키(foreign)      : 다른 릴레이션의 기본키를 참조하는 속성 또는 속성집합

 

반응형

댓글