컬럼속성

기혁·2023년 2월 15일
0

DBMS 학습

목록 보기
10/13
post-thumbnail

day05

📌 기본 이론

PK와 FK 이해링크

  • not null : null값이 입력되지 못하게 하는 조건
  • unique : 종복된 값이 입력되지 못하게 하는 조건
  • check : 주어진 값만 허용하는 조건
  • primary key : not null + unique _ index의 의미
  • foreign key : 다른 테이블의 필드(컬럼)를 참조해서 무결성을
    검사하는 조건

📌 not null인 경우

💡 예시

null_test이라는 테이블 만들어주고
co1, co2, co3 의 컬륨을 만들어준다.

not null
CREATE TABLE null_test(
	col1		varchar2(10) NOT NULL,
	col2		varchar2(10) NULL,
	col3		varchar2(10)
);

co1는 not null을 넣어줬기 때문에 null값을 설정할수 없음
co1과 co2에 데이터를 넣어줌

INSERT INTO NULL_TEST (col1, COL2)
VALUES ('aa', 'bb');

col1와 col3에 데이터를 넣어준다. 만약 col1에 null값을 넣으면 오류가 나타난다.

INSERT INTO NULL_TEST (col1, COL3)
VALUES ('aa', 'bb');

📌 unique인 경우

💡 예시1

unique

CREATE TABLE unique_test(
	col1	varchar2(20) UNIQUE NOT NULL,  -- 중복된값 투입 불가 and null값 투입 x
	col2	varchar2(20) UNIQUE ,   -- 중복된 값을 넣을수 없음
	col3	varchar2(20) NOT NULL,  -- null값 투입 불가
	col4	varchar2(20) NOT NULL,  -- null값 투입 불가
	CONSTRAINT temp_unique unique(col3, col4) -- col3 + col4 합쳐서 중복 불가능
);

💡 예시 2

CREATE TABLE UNIQUE_TEST2(
	col1	varchar2(20),
	col2	varchar2(10),
	CONSTRAINT temp_unique2 unique(col1, col2)
);
INSERT INTO UNIQUE_TEST2 (col1 , col2) -- ('aa','bb')를 중복을 방지
values('aa','aa');
INSERT INTO UNIQUE_TEST2 (col1 , col2)
values('aa','bb');
INSERT INTO UNIQUE_TEST2 (col1 , col2)
values('aa','cc');

📌 check인 경우

💡 예시

컬륨안에 특정 데이터만 들어올수있게 만듬

check
CREATE TABLE check_test(
	gender varchar2(10) NOT NULL
	CONSTRAINT check_gender CHECK (gender IN('여성','남성'))
);
SELECT * FROM CHECK_TEST ct ;
INSERT INTO CHECK_TEST VALUES ('여성');
INSERT INTO CHECK_TEST VALUES ('남성');
INSERT INTO CHECK_TEST VALUES ('F'); -- 오류
INSERT INTO CHECK_TEST VALUES ('M'); -- 오류 특정 컬륨에서 여성 남성만 들어올 수 있음

기본키 (Primary Key)

기본키 외래키 서로 이어지게 하는법

  • 기본키 역시 기본적인 제약조건들은 테이블을 생성할때 같이 정의한다.
  • 테이블당 하나만 정의 가능하다.
  • 기본키, 식별자, pk, 등으로 불리고 있다.
  • not null + unique + index

pk 선언 방법

CREATE TABLE constTest(
	pkCol1	varchar2(10) PRIMARY KEY,  -- 1번째 방법 이것만 기억해도됨
	pkCol2	varchar2(10) CONSTRAINT pk_test1 PRIMARY KEY, -- 2번째 방법
	pkCo13	varchar2(10), 
	CONSTRAINT pk_test2 PRIMARY KEY (pkcol3) -- 3번째 방법
);

기본키 생성

CREATE TABLE primary_test( 
	student_id 	NUMBER(10) PRIMARY KEY,
	name		varchar2(20)
);

Foreign Key(외래키)

  • 외부키, 외래키, 참조키, fk, 외부식별자 불린다.
  • FK가 정의된 테이블을 자식 테이블이라고 칭한다.
  • 참조되는 테이블 즉 PK가 있는 테이블을 부모 테이블이라고 한다.
  • 부모테이블의 PK컬럼에 존재하는 데이터만 사식 테이블에 입력할 수 있다.
  • 부모테이블은 자식의 데이터나 테이블이 삭제 된다고 영향을 받지 않는다.
  • 참조하는 데이터 컬럼과 데이터 타입이 반드시 일치해야 한다.
  • 참조할 수 잇는 컬럼은 기본키이거나 unique만 가능하다.
    (보통은 pk랑 엮는다)
CREATE TABLE foreign_key(
	department_id 	varchar2(10)
	CONSTRAINT dept_fk REFERENCES departments(department_id), -- 인라인
	name			varchar2(10),
	salary			number(10)
);
CREATE TABLE foreign_key(
	department_id 	varchar2(10),
	name			varchar2(10),
	salary			number(10),
	CONSTRAINT dept_fk 
	FOREIGN KEY department_id
	REFERENCES departments(department_id) -- 아웃라인
);
profile
⭐️내가만든쿠키⭐️

0개의 댓글