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을 단순하게 만들수 있다.
'혼공단 > 혼공단 7기' 카테고리의 다른 글
혼자 공부하는 SQL 6장 - 인덱스 (0) | 2022.02.13 |
---|---|
[혼공단 7기] 혼자 공부하는 SQL 4주차 후기 및 미션 인증 (0) | 2022.02.06 |
혼자 공부하는 SQL 4장 - SQL 고급문법 (0) | 2022.01.29 |
[혼공단 7기] 혼자 공부하는 SQL 2주차 후기 및 미션 인증 (0) | 2022.01.22 |
혼자 공부하는 SQL 3장 - SQL 기본문법 (0) | 2022.01.22 |