혼공단/혼공단 7기

혼자 공부하는 SQL 5장 - 테이블과 뷰

하양훈 2022. 2. 6. 10:20
반응형

05-1 테이블 만들기

 

테이블 : 표 형태로 구성된 2차원 구조, 행과 열로 구성

※ 행 = 로우 = 레코드 / 열 = 컬럼 = 필드

 

<SQL로 테이블 만들기> : GUI는 도서 참고

CREATE TABLE sample_table (num INT);

- 기본적인 문법 형태

CREATE TABLE sample_table (
    id INT AUTO_INCERMENT NOT NULL PRIMARY KEY,
    name CHAR(8) NOT NULL,
    group_id CHAR(10) NOT NULL,
    phone CHAR(20) NULL
    FOREIGN KEY(group_id) REFERENCE company(group_id)
);

- AUTO_INCERMENT : 자동으로 증가함, AUTO_INCERMENT로 지정한 열은 PRIMARY KEY나 UNIQUE로 지정을 해야한다.

- NOT NULL/ NULL : 빈 값을 넣을수 있는지 체크하는 옵션

- PRIMARY KEY : 이 테이블의 기본키를 의미

- FOREIGN KEY : 외래키 참조의 의미

 

05-2 제약 조건으로 테이블을 견고하게

 

<제약조건>

- 데이터의 무결성을 지키기 위해 제한하는 조건

- 데이터의 결함이 없는 것을 말한다

EX) 아이디 중복 방지, 누락값 방지

- 대표적인 제약조건은 PRIMARY KEY, FOREIGN KEY, UNIQUE, CHECK, DEFAULT, NULL값 허용 등이 있다.

 

<PRIMARY KEY>

- 기본키에 입력된 값은 중복될 수 없으며 NULL값이 입력될 수 없다.

- 대부분의 테이블은 기본키가 있는게 좋다.

- 테이블은 기본키를 1개만 가질 수 있다.

[기본키 설정방법]

-- (1) 기본적인 방식
CREATE TABLE sample_table (
    id INT NOT NULL PRIMARY KEY,
    name CHAR(8) NOT NULL
);

-- (2) 마지막행에 추가
CREATE TABLE sample_table (
    id INT NOT NULL,
    name CHAR(8) NOT NULL,
    PRIMARY KEY (id)
);

-- (3) ALTER TABLE 활용
CREATE TABLE sample_table (
    id INT NOT NULL,
    name CHAR(8) NOT NULL,
);
ALTER TABLE sample_table
    ADD CONSTRAINT
    PRIMARY KEY (id);

 

<FOREIGN KEY>

- 두 테이블 사이를 연결해주고 그 결과 데이터의 무결성을 보장해주는 역할.

- 외래키가 설정된 열은 꼭 다른 테이블의 기본키와 연결됨.

[외래키 설정방법]

-- (1) 기본적인 방식
CREATE TABLE company (
    group_id CHAR(10) NOT NULL PRIMARY KEY,
    group_name CHAR(10) NOT NULL
);
CREATE TABLE sample_table (
    id INT NOT NULL PRIMARY KEY,
    name CHAR(8) NOT NULL
    group_id CHAR(10) NOT NULL,
    FOREIGN KEY(group_id) REFERENCE company(group_id)
);

-- (2) 마지막행에 추가
CREATE TABLE sample_table (
    id INT NOT NULL,
    name CHAR(8) NOT NULL,
    PRIMARY KEY (id)
);

-- (3) ALTER TABLE 활용
CREATE TABLE sample_table (
    id INT NOT NULL PRIMARY KEY,
    name CHAR(8) NOT NULL
    group_id CHAR(10) NOT NULL,
);
ALTER TABLE sample_table
    ADD CONSTRAINT
    FOREIGN KEY(group_id) REFERENCE company(group_id);

- 여기에 추가로 ON UNDATE CASCADE를 넣으면 수정시에 외래키를 참조하는 다른 테이블도 똑같이 반영이 된다는 의미다. 이와 비슷하게 삭제시에도 반영이 되도록 하려면 ON DELETE CASCADE를 넣으면 된다.

 

<UNIQUE>

- 기본키와 동일하지만 NULL값을 허용한다.

 

<CHECK>

- 입력되는 데이터가 조건에 맞는지 검증하는 기능을 한다.

CREATE TABLE sample_table (
    id INT NOT NULL PRIMARY KEY,
    name CHAR(8) NOT NULL
    height TINYINT CHECK(height >=100)
);

<DEFAULT>

- 값을 입력하지 않았을때 자동으로 입력될 값을 미리 지정해놓는 방법.

-- (1) 기본적인 방식
CREATE TABLE sample_table (
    id INT NOT NULL PRIMARY KEY,
    name CHAR(8) NOT NULL
    height TINYINT DEFAULT 160
);

-- (2) ALTER TABLE 활용
CREATE TABLE sample_table (
    id INT NOT NULL,
    name CHAR(8) NOT NULL,
    height TINYINT
);
ALTER TABLE sample_table
    ALTER COLUMN height SET DEFAULT 160

<NULL값 허용>

- NULL값을 허용하고 싶다면 뒤에 NULL을 넣으면 된다.

- NULL은 아무것도 없다는 의미로 공백이나 0과는 다른 의미를 지니고 있다.

 

05-3 가상의 테이블 : 뷰

 

<뷰>

- 데이터베이스의 개체 중 하나

- SELECT문으로 만들어짐, 일종의 바로가기 아이콘.

- 몇개의 테이블에 연관되었느냐에 따라 단순뷰(1개)와 복잡뷰(2개 이상)로 나뉜다.

[뷰를 만드는 형식]

CREATE VIEW 뷰_이름
AS
  SELECT 문;

- 뷰에 들어가는 SELECT문은 기본문법에서 배운 내용과 동일하다

- 뷰를 사용하면 보여주고 싶은거만 보여줄수 있기 때문에 보안에 도움이 되고, 복잡한 SQL을 단순하게 만들수 있다.

반응형