2024.02.22

김무영·2024년 2월 22일

select subquery

  • 단수행, 복수행, scalar subquery지원
  • 다른 컬럼의 값으로 조회할 때 사용.
  • 단수행 서브쿼리
    • where절에 사용.
    • select 컬럼명,,,,
      from 테이블명
      where 컬럼명 = (select,,,,)
  • 복수행 서브쿼리
    • 조회결과를 사용하여 재 조회하는 것.
    • 외부 커리문은 실제테이블을 조회하는 것이 아닌 조회결과(inline view)를 사용한 조회를 하기 때문에 안쪽 테이블에서 컬럼명에 alias가 사용된다면 외부 쿼리문에서 alias만 컬럼 명으로 인식된다.
    • 문법 )
    • select
      from ( select 컬럼명,,, from 테이블명,,, )
      • select 컬럼명: 실제 컬럼명이 아닌 inline view column 명
      • 안쪽 쿼리가 alias를 사용하면 바깥쿼리에서는 alias 명만 사용가능

scalar subquery

  • 조회하는 컬럼에 사용하는 subquery
  • 테이블은 다르고 컬럼명이 같다면 컬럼을 식별하기 위해'테이블명.컬럼명'의 문법을 사용한다.
  • scalar subquery는 단독으로 실행되지 않는다.
  • 문법 )
    • select 컬럼명 ,,, (select 컬럼명 from 테이블명 where 컬럼명 = 조건)
      from 테이블명

rownum

  • 조회되는 컬럼에 순차적인 번호를 부여하는 가상 컬럼. (pseudo column)
  • rownum을 where절에서 사용하면 시작값이 1번부터는 검색이 되나
    1번을 초과한 값을 검색하면 검색되지 않는다.
  • 모든 select마다 생성되고 사용된다.
  • order by절과 함께 사용되면 번호가 꼬인다.
  • 사용법 )
    select rownum

subquery exists

  • 조회 결과가 하나라도 존재하는 경우에만 바깥 쿼리를 실행해야할 때 사용하는 연산자.
  • 조회 결과가 없다면 바깥 쿼리를 실행하지 않습니다.
  • 속도가 빠르다.
  • 사용법 )
    • where exists ( select,,,, )
      • select : 조회 값을 가져오지 않고 레코드가 존재하는지만 확인하는 용도의 select
      • select의 조회 컬럼은 실제 컬럼을 사용해도 되고, 1이나 임의 값을 사용해도 된다.

Constraints ( 제약사항 )

  • 테이블에서 개발자가 원하는 값을 저장하기 위해 사용하는 것.
  • primary key, foreign key, unique, not null, check, default
    • default : 제약사항은 아니지만 같이 묶어서 봄
  • user_constraints DD에서 테이블에 설정된 제약사항을 확인할 수 있다.
  • column 단위 제약사항 또는 table 단위 제약사항으로 설정할 수 있다.
  • alter를 사용하여 편집할 수 있다.
  • 문법 )
    • create table 테이블명(
      컬럼명 데이터형(크기) constraint 제약사항명 제약사항 종류,
      . ,
      . ,
      constraint 제약사항명 제약사항 종류(적용컬럼명),
      .
      .
      .
      );
  • constraint 제약사항명 제약사항 종류
    • 컬럼단위 제약사항. Column level constraint
    • 제약사항을 받을 컬럼명 뒤에 선언하기 때문에 제약사항을 받을 컬럼명을 사용하지 않는다.
    • 모든 제약사항을 사용할 수 있다.
  • constraint 제약사항명 제약사항 종류(적용컬럼명)
    • 테이블 단위 제약사항. Table level constraint
    • 컬럼의 선언이 모두 끝난 뒤에 제약사항을 선언하기 때문에
      제약사항을 적용받을 컬럼명을 명시해야한다.
    • 모든 제약사항을 사용할 수 있다.
    • primary key, foreign key, unique, check만 사용가능하다.

DB-ERD ( Entity Relationship Diagram )

  • 테이블간의 관계를 도식화한 다이어그램.

primary key (주키, 기본키)

  • 테이블당 하나만 설정할 수 있다.
  • 컬럼 값이 null을 허용하지 않고 유일해야할 때 설정.
  • 단일 컬럼으로 구성될 수도 있고, 복합컬럼으로 구성 될 수 도 있다.
  • 다른 테이블(자식테이블)에서 부모테이블로 참조할 수 있다.(테이블간의 관계가)
  • primary key를 생성하면 Oracle에서는 index를 자동생성해준다.
    • index : User_indexes DD에서 확인 가능하다.
  • 후보키 중에서 선정된다.
  • 번호, 이름, 아이디, 주민번호, 이메일 , 의료보험번호, 전화번호, 주소를 저장하는 테이블 생성
  • 문법 )
    • Column level constraint
      • create table 테이블명(
        컬럼명 데이터형(크기) constraint pk_테이블명 primary key
        • constraint PK 테이블명 : 생략 가능 -> 생략하면 Oracle에서 SYS_C로 시작하는
          제약사항명을 자동으로 부여해줌
    • Table level constraint
      • create table 테이블명(
        컬럼명 데이터형(크기),
        constraint 제약사항명 primary key(적용컬럼명)

0개의 댓글