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를 하나둠
- 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로 만들어진 모든 개체들을 함께 삭제해라
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를 붙여서 답으로 내보낸다.