23.04.05 데이터베이스

천용·2023년 4월 5일
0

데이터베이스

목록 보기
1/22

키의 종류

후보키(Candidate Key)

  • 후보키는 릴레이션을 구성하는 속성들 중에서 튜플을 유일하게 식별하기 위해 사용하는 속성들의 부분집합, 즉 기본키로 사용할 수 있는 속성들을 말한다.

  • 하나의 릴레이션내에서는 중복된 튜플들이 있을 수 없으므로 모든 릴레이션에는 반드시 하나 이상의 후보키가 존재한다.

  • 후보키는 릴레이션에 있는 모든 튜플에 대해서 유일성최소성을 만족시켜야 한다.

유일성 : 하나의 키값으로 하나의 튜플만을 유일하게 식별할 수 있어야한다.
최소성 : 모든 레코드들을 유일하게 식별하는데 꼭 필요한 속성만으로 구성되어 있어야한다.

기본키(Primary Key)

  • 기본키는 후보키 중에서 선택한 주키(Main Key)이다.

  • 한 릴레이션에서 특정 튜플을 유일하게 구별할 수 있는 속성이다.

  • Null값을 가질 수 없다.

  • 기본키로 정의된 속성에는 동일한 값이 중복되어 저장될 수 없다.

대체키(Alternate Key)

  • 후보키가 둘 이상일 때 기본키를 제외한 나머지 후보키들을 말한다.

  • 보조키라고도 한다.

슈퍼키(Super Key)

  • 슈퍼키는 한 릴레이션 내에 있는 속성들의 집합으로 구성된 키로서 릴레이션을 구성하는 모든 튜플들 중 슈퍼키로 구성된 속성의 집합과 동일한 값을 나타나지 않는다.

  • 슈퍼키는 릴레이션을 구성하는 모든 튜플에 대해 유일성을 만족시키지만, 최소성은 만족시키지 못한다.

ex) 학번 + 주민번호를 사용하여 슈퍼키를 만들면 다른 튜플들과 구분할 수 있는 유일성은 만족하지만 학번이나 주민번호 하나만 가지고도 다른 튜플들을 구분할 수 있으므로 최소성은 만족시키지 못한다.

외래키(Foregin Key)

  • 관계를 맺고 있는 릴레이션 R1,R2에서 릴레이션 R1이 참조하고 있는 릴레이션 R2의 기본키와 같은 R1 릴레이션의 속성을 외래키라고 한다.

  • 외래키는 참조되는 릴레이션의 기본키와 대응되어 릴레이션 간에 참조관계를 표현하는데 중요한 도구이다.

테이블 생성

CREATE TABLE EMPOLYER
(EMPNO CHAR(6) NOT NULL, 사원번호
ENAME VARCHAR2(20) NOT NULL, 사원이름
DEPT VARCHAR2(16) NOT NULL, 파트
TEL VARCHAR2(14), 전화번호
SALARY NUMBER(10), 급여
CONSTRAINT PK_EMPOLYER PRIMARY KEY (EMPNO)); 기본키 설정

테이블 수정

ALTER TABLE EMPOLYER ADD (ADDRESS VARCHAR2(50) NOT NULL);주소값 추가
ALTER TABLE EMPOLYER MODIFY(DEPT VARCHAR2(20));

데이터 삽입

INSERT INTO EMPOLYER(EMPNO,ENAME,DEPT,TEL,SALARY,ADDRESS)
VALUES('100','김기훈','영업부','010-8422-8117',300,'대전광역시 서구 둔산로31번길 31');
INSERT INTO EMPOLYER(EMPNO,ENAME,DEPT,TEL,SALARY,ADDRESS)
VALUES('101','홍성범','기획부','010-7562-3217',350,'대전광역시 서구 계룡로29번길 50');
INSERT INTO EMPOLYER(EMPNO,ENAME,DEPT,TEL,SALARY,ADDRESS)
VALUES('102','이만수','기획부','010-5562-6677',500,'대전광역시 중구 대사로30번길 10');
INSERT INTO EMPOLYER(EMPNO,ENAME,DEPT,TEL,SALARY,ADDRESS)
VALUES('103','강나미','영업부','010-4442-5614',350,'대전광역시 중구 선화로10번길30');
INSERT INTO EMPOLYER(EMPNO,ENAME,DEPT,TEL,SALARY,ADDRESS)
VALUES('109','민병철','총무부','010-2542-8211',250,'대전광역시 동구 산내로1205번길 24');
INSERT INTO EMPOLYER(EMPNO,ENAME,DEPT,TEL,SALARY,ADDRESS)
VALUES('110','정천용','개발부','010-3085-9999',600,'대전광역시 서구');


영업부인 사람의 이름과 번호 조회
SELECT ename, tel
FROM empolyer
WHERE dept = '영업부';

전체 데이터조회
SELECT * FROM EMPOLYER;

전체 데이터 삭제
DROP TABLE EMPOLYER;

사원번호가 110인 사람의 번호와 이름 조회
select empno, ename
from empolyer
where empno = 110;

급여가 250인 사람의 이름과 급여조회
select ename, salary
from empolyer
where salary = 250;

현재 사원수 조회
select COUNT(*) as 현제사원수
from empolyer;

급여가 300이 넘는 사람의 이름과 급여 조회
select ename, salary
from empolyer
where salary > 300;

오늘 알게 된 것
VARCHAR2(20) 20 사용 후 남은 값 반환
SQL에서 '200'이면 문자 200이면 숫자
(')홑따옴표 : 문자열을 감싸주는 기호
(")쌍따옴표 : 컬럼명 등을 감싸주는 기호

profile
성장하는 개발자가 되자

0개의 댓글