[DB(2)]관계형 데이터베이스 제약조건

이유정·2024년 6월 18일
0

데이터베이스

목록 보기
20/25
post-thumbnail

CREATE TABLE 명령과 SQL2의 데이터 타입 및 제약조건


DB를 만들었으니, table을 만들 수 있음

  • DEPARTMENT 이름의 테이블을 만들어라.
  • 필드가 4개로 구성되어 있다. (DNAME, DNUMBER, MGRSSN, MGRSTARTDATE)
  • 필드 이름 뒤에는: 필드의 데이터 타입을 지정
  • DNAME, DNUMBER에 제약조건 걸 수 있음. : NOT NULL :

  • PRIMARY KEY절은 릴레이션의 기본 키를 구성하는 하나 이상의 애트리뷰트들을 명시한다.


EMPLOYEE 테이블을 만들었음.

  • 그 아래 필드들 (FNAME, MINIT, LNAME, ...)
  • 그 옆에 데이터 타입 지정
  • 그 옆에 NOT NULL인 제약 조건 설정
  • PRIMARY KEY로 필드 SSN을 설정
  • FOREIGN KEY: SUPERSSN은 SSN을 참조하는 외래키다.
  • FOREIGN KEY: DNO는 DNUMBER를 참조하는 외래키다.


EMPLOYEE 테이블을 만들었음.

  • DNUMBER는 Integrity Constraint를 하나둠
    • 0보다 크고 21보다 작아야 함.
  • UNIQUE: DNAME(부서 이름)은 같아서는 안된다는 제약조건

아래 EMPLOYEE 테이블을 이런식으로 만들수도 있다는 것을 보여줌.

  • PRIMARY KEY가 SSN이다라는 제약조건의 이름을 별도로 EMPPK로 설정함.
  • SUPERSSN이 SSN을 참조하는 외래키(+아래 ON DELETE, ON UPDATE 조건 포함)라는 제약조건의 이름을 EMPSUPERFK 이름으로 설정함.

    이순신의 SSN이 삭제된다면, 그 값을 참조하고 있는 SUPERSSN에 값을 NULL을 넣어라.

    이순신이 UPDATE될 때 홍길도 필드 SUPERSSN도 UPDATE해라.

DROP SCHEMA와 DROP TABLE 명령


DROP SCHEMA COMPANY CASCADE
: COMPANY로 만들어진 모든 개체들을 함께 삭제해라

  • CASCADE를 썼기 때문임.

DROP TABLE

  • TABLE을 삭제하는 것
  • DRP TABLE DEPENDENT CASCADE
    : DEPENDENT 테이블에 만들어져있던 뷰, 제약조건 모두 없어진다 ~

ALTER TABLE 명령

ALTER TABLE COMPANY.EMPLOYEE ADD JOB VARCHAR (12)
: COMPANY 라는 데이터베이스의 EMPLOYEE 테이블을 바꿔라
: JOB이라는 필드를 하나 추가해라 ~ 12글자를 가진 데이터 타입이다 ~

  • 테이블의 구조를 바꾸는 것임.

예) 만약 필드가 하나 추가되면, 이후의 데이터 추가된 것들은 추가된 필드에 값이 들어오겠지만, 이전의 데이터의 해당 필드의 값은 어떻게 하나? => NULL값을 넣는다.

DBL vs SQL


SQL 질의의 SELECT-FROM-WHERE 구조

SQL에서의 기본질의


DB 테이블로부터 요건을 만족하는 결과를 찾아서 테이블 형태로 사용자한테 제공

  • Distinct 키워드를 쓰지 않으면 중복된 튜플들이 결과로 나온다.
    • 테이블은 아님 (테이블에는 중복된 튜플 안됨.)

SQL-Selection 연산


  • *를 쓰면 다 보여달라는 뜻.

  • where 조건 절을 and를 쓰면서 확장해 나갈 수 있다.
  • or를 쓸 수도 있음.

SQL-Join 연산

WHERE절의 조인조건이라고 한다. ~

  • join 연산은 두개의 테이블에 대한 연산으로 복잡해진다.
  • 두개 이상의 테이블로부터 어떤 조건을 제시하고, 그 조건을 만족하는 데이터를 찾아냄.
  • EMPLOYEE 튜플하고, DEPARTMENT 튜플이 JOIN 조건인 DNO = DNUMBER 를 만족하면 그 두 튜플 쌍이 나온다. 답으로 최종적으로 return 되기 전에 SELECT된 필드들만 밖으로 내보내준다. 그리고 조건에 맞게 합쳐서 답으로 나온다.

SQL 질의의 SELECT-FROM-WHERE 구조

원하는 형태로 SQL을 작성해도 된다.

  • 둘다 표준임.

SQL-Join 연산

  • DNAME="Research" : Selection 연산
  • Selection 연산과 join으로 결합된 모습 확인

  • where 조건이 없는 경우 => 카티전프로덕트
    : FROM 절에 있는 두 테이블의 튜플들을 카티전 프로덕트로 답을 낸다.
  • 모든 EMPLOYEE, DEPARTMENT를 붙여서 답으로 내보낸다.
profile
강의 기록 블로그

0개의 댓글