SQL - JOIN, 서브쿼리

양유준·2024년 5월 9일

코드 공부

목록 보기
5/5

JOIN

하나의 테이블로 원하는 칼럼정보를 참조
할수 없는 경우 관련된 테이블을 논리적으로
결합하여 원하는 칼럼 정보를 참조하는 방법
을 JOIN이라고 한다.

EX) 부서명이 'ACCOUNTNG' 인 사원의 이름,입사일,부서번호,부서명을 출력
SELECT ename, hiredate, e.deptno, dname
 FROM emp e
 INNER JOIN dept d ON e.deptno=d.deptno
 WHERE dname = 'ACCOUNTING' ;

띄어쓰기 또는 AS(Alias)를 통해 별칭을 지정하면 알아보기 쉽다.

서브쿼리

하나의 SQL 문장절에 포함된 또다른 SELECT 문장, 따라서 두번 질의를 해야 얻을수 있는 결과를 한번의 질의로 해결이 가능하게 하는 쿼리이다.

서브쿼리는 단일행 서브쿼리와 복수행 서브쿼리가 있다.

단일행 서브쿼리

서브쿼리의 실행결과가 하나의 칼럼과 하나의 행만을 리턴해주는 쿼리

  • 하나의 데이터만 리턴
ex) 'SMITH' 가 근무하는 부서명을 서브쿼리를 이용해서 출력
SELECT dname
FROM dept
WHERE deptno = (SELECT deptno FROM emp WHERE ename='SMITH');
복수행 서브쿼리

서브쿼리의 실행결과가 하나의 칼럼과 여러개의 행을 리턴해주는 쿼리

  • 다중행 서브쿼리의 결과값을 조건절에서 사용할때는 반드시 다중행 연산자와 함께 사용해야한다.
    ( IN, ALL, ANY, EXIST)
ex) 급여를 3000 이상받는 사원이 소속된 부서와 동일한 부서에서 근무하는 사원들의 이름과 급여, 부서번호를 출력
SELECT ename,sal,deptno
FROM emp
WHERE deptno IN(SELECT deptno FROM emp WHERE sal>=3000);

제약조건(Constraint)

종류

(1)NOT NULL :

NULL 로 입력이 되어서는 안되는 칼럼에 부여하는 조건으로 칼럼 레벨에서 만 부여할수 있는 제약조건이다.

(2)UNIQUE KEY (유일키) :

저장된 값이 중복되지 않고 오직 유일하게 유지되어야 할때 사용하는 제약조건이다. (NULL 은 허용된다)

(3)PRIMARY KEY (대표키) :

NOT NULL 조건과 UNIQUE KEY 를 합친 조건이다.

(4)CHECK :

조건에 맞는 데이터만 입력되도록 조건을 부여하는 제약 조건

(5)FOREIGN KEY (외래키) :

부모 테이블의 PRIMARY KEY 를 참조하는 칼럼에 붙이는 제약조건 이다(예 emp 테이블의 deptno 칼럼)

특징

  • 제약조건 이름 검색하기
SQL> SELECT CONSTRAINT_NAME FROM USER_CONSTRAINTS ;

  • 제약조건은 수정은 불가능하고 삭제만 가능하다
SQL> ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명 ;
  • 제약조건 추가하기
SQL> ALTER TABLE 테이블명
ADD( CONSTRAINT 제약조건명 PRIMARY KEY(키 명)) ;
  • CONSTRAINT 예약어

  • PRIMARY KEY 제약조건 위배 경우

  • NOT NULL, CHECK 제약조건 위배

  • 외래키 (FOREIGN KEY)

NOT NULL 제약 조건은 테이블 생성 시 추가하거나
ALTER TABLE 테이블명 MODIFY..
로 추가한다.

NULL

존재하는 테이블

ALTER TABLE 테이블명 MODIFY 컬러명 NOT NULL;
ALTER TABLE 테이블명 MODIFY (컬럼명 타입 NOT NULL);
ALTER TABLE 테이블명 ADD CONSTRAINT 제약조건명 CHECK(컬럼명 IS NOT NULL);

NOT NULL 제거

NOT NULL 제거  ALTER TABLE 테이블명 MODIFY 컬러명 NULL;
ALTER TABLE 테이블명 DROP CONSTRAINT 제약조건명

0개의 댓글