본문 바로가기
IT/SQL

SQL 정리2

by 김보리 2021. 11. 30.
728x90
반응형

키의 필요성

  • 중복여부를 효과적으로 알 수 있도록 하는 수단

기본키(Primary Key) : 후보키 중 튜플(행)을 식별하는데 기준으로 사용할 키

  • null값을 가질 수 없음
  • 중복된 값을 가질 수 없음
  • 모든 테이블에는 적어도 하나의 기본키가 존재

후보키(Candidate Key)

  • 테이블에 있는 각 튜플을 고유하게 식별할 수 있어야 함
  • 기본키(Primary Key) + 대체키(Alternate Key) = 후보키(Candidate Key)

대체키(Alternate Key) : 후보키 중 기본키로 선택되지 않은 나머지 키

  • 기본키를 대체할 수 있는 키

복합키(Composite Key) : 하나의 컬럼이 후보키의 역할을 하지 못하고 두 개 이상 컬럼이 합쳐져야 후보키의 역할을 하는 경우

 

외래키(Foreign Key): 다른 테이블의 키를 가져 오는 것

  • 다른 테이블의 기본키가 되거나, 일반 항목이 될 때 상위 항목의 키 = 외래키
  • 상호 관련이 있는 테이블들 사이에서 데이터의 일관성을 보장해주는 수단
  • 관계는 업무적인 연관성을 의미
  • 두 테이블 사이에 존재하며 관계를 맺고 있는 테이블 중 하나는 부모 테이블이고 하나는 자식테이블
  • 부모테이블의 기본키는 자식테이블에 외래키로 전이 되어짐
  • 식별관계와 비식별관계로 나눌 수 있음
  • 두 테이블 간에 외래키에 의한 참조관계에 있을 때 두 테이블간 데이터 불일치가 발생하는 상황이 되면 DBMS는 제한(restrict), 연쇄(csdcade), 널(null) 값으로 대체(nullify)
  • ex) 부서테이블의 첫 번째 튜플을 삭제하려 할 때
    • 제한(restrict) : 삭제하려는 튜플의 부서번호 값을 사원테이블에서 가지고있는 튜플이 있으므로 삭제연산을 거절
    • 연쇄(cascade) : Delete cascade ↔ Update cascade, 삭제된 부서번호 값을 갖는 사원테이블의 튜플도 함께 삭제
    • 널 값으로 대체(nullify) : 삭제연산을 수행한 뒤 삭제된 부서번호 값을 갖는 사원테이블의 튜플에서 부서번호를 null값으로 대체

참조 무결성 제약조건 : 외래키를 통해 두 테이블간의 데이터 무결성을 유지하는 것

 

식별자 관계 : 부모로부터 받은 식별자를 자식엔터티의 주 식별자로 이용하는 경우는 null값이 오면 안되므로 반드시 부모엔터티가 생성되어야 자기 자신의 엔터티가 생성되는 경우

 

비식별자 관계 : 부모엔터티로부터 속성을 받았지만 자식엔터티의 주 식별자로 사용하지 않고 일반적인 속성으로만 사용하는 경우

 

도메인(domain) : 각각의 속성들이 가질 수 있는 값들의 집합

 

튜플(tuple) = 행 : 개체에 속한 구성원들 각각의 정보를 표현

 

속성(attribute) = 열 : 릴레이션에서 관리하는 구체적인 정보 항목(필드)

  • 데이터 무결성
  • 참조 무결성
  • 개체 무결성
  • 도메인 무결성

2021-0608-01 SQL(Structed Query Language)의 개요

  • 관계형 데이터 베이스를 대상으로 데이터 조작을 수행하는 명령
  • DML(Data Manipulation Language) : 데이터 조작어 -- 만들어진 객체 안에 추가, 삭제 => INSERT, UPDATE, DELETE -- INSERT : 추가, DELETE : 삭제
  • DCL(Data Control Language) : 데이터 제어어 -- 프로그램 제어 => GRANT, COMMIT, ROLLBACK, SAVEPOINT -- GRANT : 권한 부여 COMMIT : 저장 ROLLBACK : 진행상태를 되돌림 SAVEPOINT : 특정위치 저장
  • DDL(Data Definition Language) : 데이터 정의어 -- 테이블 개체 생성, 삭제 및 변경 => CREATE, DROP, ALTER -- CREATE : 생성, DROP : 삭제, ALTER : 내용, 구조 변경
  • Query : 데이터 조회어 -- 데이터 조회 => SELECT -- 원하는 조건으로 조회(테이블, 데이터 있어야 가능)
  • 데이터 타입 CHAR : 고정적인 문자열 VARCHAR2 : 가변적인 문자열 NUMBER : 숫자(정수형, 실수형 가능) DATE : 날짜, 크기 필요X CLOB : 문자 대형 객체(Character), 크기 필요X BLOB : 이진 대형 객체(Binary) → 이미지, 동영상, mp3 등
  1. CREATE TABLE
오라클 객체를 생성하는 명령
(사용형식)
CREATE TABLE 테이블명(
컬럼명1 타입[(크기)] [NOT NULL] [DEFAULT 값][,] -- 생략 가능
[컬럼명2 타입[(크기)] [NOT NULL] [DEFAULT 값][,]] -- NOT NULL : 데이터 필수로 넣어야함
: -- 더 이어질 수 있음
컬럼명1 타입[(크기)] [NOT NULL] [DEFAULT 값][,] -- DEFAULT : 초기값 지정, 사용자가 입력 안했을 때 자동으로 값 지정
 
-- 기본키, 외래키 설정 : 기본키와 외래키는 중복되면 안됨
 [CONSTRAINT 기본키설정명 PRIMARY KEY(컬럼명[, 컬럼명, ...])[,] -- 한글 : 설정, 컬럼명 만든 제목 입력 / , : 다음 컬럼명 있을 경우 필수
 [CONSTRAINT 외래키설정명 FOREIGN KEY(컬럼명[, 컬럼명, ...]) -- 컬럼명 두 단어를 붙일 시 _ 붙이기 EX) Primary_Key
   REFERENCES 테이블명(컬럼명[, 컬럼명,...])[,]
 [CONSTRAINT 외래키설정명 FOREIGN KEY(컬럼명[, 컬럼명, ...]) -- CONSTRANT : 제약
   REFERENCES 테이블명(컬럼명[, 컬럼명, ...])[,] -- 다른 테이블의 컬럼명을 참조 / REFERENCE : 참조
                     :
 [CONSTRAINT 외래키설정명 FOREIGN KEY(컬럼명[, 컬럼명, ...])
   REFERENCES 테이블명(컬럼명[, 컬럼명, ...]));

사용 예) 다음 조건을 만족하는 사원테이블을 생성하시오

테이블명 : DEPT
-------------------------------------------------------------
컬럼명       데이터타입(크기)       NULL      KEY     DEFAULT
-------------------------------------------------------------
DEPT_ID      NUMBER(3)           N.N         P.K             -- P.K 자동으로 NOT NULL생성
DEPT_NAME    VARCHAR2(30)
------------------------------------------------------------

CREATE TABLE DEPT(
  -- 컬럼 생성 및 데이터타입(크기) 지정
  DEPT_ID NUMBER(3), -- 기본키, 숫자 999까지 처리 가능
  DEPT_NAME VARCHAR2(30), -- 가변적인 문자열
  
  -- 기본키 설정
  CONSTRAINT pk_dept PRIMARY KEY(DEPT_ID) -- 기본키
);

테이블명 : EMP
-------------------------------------------------------------
컬럼명      데이터타입(크기)       NULL      KEY     DEFAULT
-------------------------------------------------------------
EMP_ID      CHAR(4)             N.N         P.K
EMP_NAME    VARCHAR2(30)
EMP_JOB     VARCHAR2(30)
DEPT_ID     NUMBER(3)                       F.K
------------------------------------------------------------

CREATE TABLE EMP(
  -- 컬럼 생성 및 데이터타입(크기) 지정
  EMP_ID CHAR(4) NOT NULL, -- 기본키, 문자열
  EMP_NAME VARCHAR2(30), -- 가변적인 문자열 
  EMP_JOB VARCHAR2(30), -- 가변적인 문자열
  DEPT_ID NUMBER(3), -- 숫자 999까지 처리 가능
  
  -- 기본키, 외래키 설정
  CONSTRAINT pk_emp PRIMARY KEY(EMP_ID),
  CONSTRAINT fk_emp_dept FOREIGN KEY(DEPT_ID)
    REFERENCES DEPT(DEPT_ID)
);
728x90
반응형

'IT > SQL' 카테고리의 다른 글

SQL 정리6  (0) 2021.11.30
SQL 정리5  (0) 2021.11.30
SQL 정리4  (0) 2021.11.30
SQL 정리3  (0) 2021.11.30
SQL 정리1  (0) 2021.11.30

댓글