DATABASE5

다원·2022년 12월 17일
0

DATABASE

목록 보기
6/13

제약조건

alter table > modify : not null 변경 같은
alter table > add constraint constriant_name check: 체크 제약 조건
alter table > drop constraint constraint_name :제약 조건 삭제

  • primary key
  • foreign key

    on delete cascade
    : foreign key를 보유하는 테이블이 삭제되면 참조된 내용에서도 삭제

하나의 항목에 primary key 가 존재할 경우 foreign key로 사용 할 수는 없다

  • 무결성 제약 조건이 위배되었을 경우
    • f.k 제약 조건 설정을 삭제
    • alter table table_name modify constriant deptfk disable
      : 제약 조건 설정 정지

Join

여러 개의 테이블을 묶어서 쿼리할 경우 from 절 에 원하는 항목이 들어있는 테이블 지정
요구하는 정보와 테이블명, 공통적으로 들어있는 정보가 필요

  • Inner: 기본 join, inner생략 가능, 두 테이블에서 항목/데이터의 수가 같을 때 사용

  • Oracle join: join 단어를 사용하지 않음

  • ANSI join : join 단어를 사용함

  • Outer: join 하는 두 테이블에서 항목/데이터의 수가 차이가 날 때 이를 커버
    테이블에서 데이터가 없는 것들이 존재하여, 항목의수가 차이날 경우

    • right outer join: 큰 테이블이 오른쪽일 경우
    • left outer join: 큰 테이블이 왼쪽일 경우
  • Self: 하나의 테이블을 Alias로 구분해서 마치 두 테이블인 것처럼 만들어 놓는 Join

    alias 구분자. 열 이름 as 사용할 이름 ~ from 테이블 alias구분자 join table alias 구분자
    : 테이블을 alias 구분자로 나누어 사용, 두 테이블을 조인하는 inner 조인 방식으로
    (스칼라 서브 쿼리를 이용하여, (select ~ where 조건)을 이용하여 mgr name을 처리할 수 있음)

  • Full: 양쪽 테이블에 데이터 내용을 모두 보여줌

집합연산자

두 테이블에 대해서 select 문으로 각각 데이터를 조회해서 새로운 데이터로 가공하고 싶을 때 사용
두 테이블에서 select 문의 컬럼명, 컬럼위치, 컬럼 수가 동일해야함
-> 다를 경우 질의 블록은 부정확한 수의 결과 열을 가지고 있음의 에러가 발생, 컬럼_명이 같지 않을 경우 ALIOS를 활용하여 같게 만들어야함

  • UNION (합집합): 중복된 데이터는 제거/UNION ALL : 중복된 데이터 출력
    self 조인하지 않고, 동일한 테이블의 이름을 사용해도 문제없음
  • MINUS (차집합): 공통적인 부분을 제외하고, 나머지를 반환
  • Inersect (교집합): 중복 값을 출력하고 싶은 경우 intersect 사용
    데이터 집합에서 공통된 항목만 추출

서브쿼리


하나의 쿼리 문에 두 개 이상의 select문 사용 시
첫번째 select문을 main query 문, 두번째 이하의 select문 sub query
=> mian query 문 안에 sub query 문이 들어가 있음
서브쿼리의 결과를 Scala 값(단일 값:하나의 값만 반환)
하나의 행으로 나오는 단일 행 서브쿼리
여러 행으로 나오는 다중 행 서브쿼리

  • IN(하나라도 일치하면True)

    :IN을 사용하면 쿼리가 실행될 때 내부적으로 OR 연산자로 변경되어 실행됨
    :select문에 조건에 맞춰 값이 추출되고 IN을 사용하게 되면서 서브쿼리의 결과 값과 같은 결과 값을 갖는 모든 데이터를 조회하게 되는 것
    같은 항목이 한개인 것만 조회할 경우 =, 여러개일 경우 in을 사용
  • ANY/SOME(결과가 1개 이상이면 True),
  • ALL(모든 결과가 일치하면 True),
  • EXISTS (서브쿼리의 결과가 있으면 True) 서브쿼리의 SELECT 문에 비교할 여러 대상을 넣는 다중 열 서브쿼리
    -> 인라인 뷰와 With-절, 스칼라 서브 쿼리 등
  • 서브쿼리의 규칙
    • 연산자 사용하여 비교나 조회 대상의 우측
    • 서브쿼리는 ()
    • 특수 경우 제외, 서브 쿼리 절에는 order by 사용하지 않음
    • 서버쿼리 명시된 열은 메인 쿼리의 비교대상과 같은 자료형과 동일한 수
    • 서브 쿼리에 있는 select 문의 수행 결과로 나오는 행의 수는 메인 쿼리의 연산자와 자료형 호환되어야 함
profile
공부일지,

0개의 댓글