카테고리 없음

[혼공S] 4주차 _ chapter5

호정🐹 2025. 2. 9. 21:39

벌써 4주차라니... 잘 버텼다.. 할 수 있따!

 

1. 테이블

- 표 형태로 구성된 2차원 구조, 행과 열로 구성되어 있다.

행(row, record), 열(column, field)

테이블은 마이크로소프트 엑셀의 시트와 거의 비슷한 구조로 이루어져 있다.

 

* 실습! (테이블 만들기)

회원테이블(member)
구매테이블(buy)

- 구매테이블 : 순번(num)은 자동증가(auto_increment)를 위해 AI로 지정했고, 가격(price)과 수량(amount)은 음수가 들어가지 않아서 UN으로 처리

 

2. SQL로 테이블 만들기

CREATE TABLE sample_table(num INT);

- 데이터베이스와 회원 테이블을 생성하고, 데이터를 입력 할 수 있음.

 

* 데이터 베이스 생성하기

DROP DATABASE IF EXISTS naver_db; - 기존에 naver_db 테이블이 있다면 삭제하라는 의미

CREATE DATABASE naver_db; - 테이블을 만드는 구문

 

* null과 not null

- 아무것도 지정하지 않으면 기본값으로 null을 허용함 / not null은 반드시 값을 넣어야 한다는 의미

하지만 혼란스러움을 방지하기 위해 직접 null이나 not null을 모두 지정해주는 것이 좋다.

 

* primary key (기본 키)

- 기본 키로 설정하기 위해서는 지정할 열 뒤에 primary key문을 붙여주면 된다.

기본 키로 지정된 열에는 not null을 생략해도 not null로 취급함.

 

* 열을 외래 키로 지정하려면 FOREIGN KEY 예약어를 입력

 

3. 제약조건

기본 키와 외래 키가 대표적인 제약조건임.

기본 키는 학번, 아이디, 사번 등과 같은 고유한 번호를 의미하는 열, 외래 키는 연결되는 열에 지정

 

이메일, 휴대폰과 같이 중복되지 않는 열에는 고유키를 지정 할 수 있음

키를 실수하지 않게 입력하는 것을 방지하는 제약조건이 체크

매번 입력하기 귀찮다면 제약조건으로 기본값을 설정할 수 있음.

또한 값을 꼭 입력해야 하는 not null 제약조건도 있음

 

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

데이터의 무결성 : 데이터에 결함이 없음.

ex) 회원 아이디가 중복 된다? -> 결함이 있는 것

 

이런 결함을 미리 방지하기 위해 회원 테이블의 아이디를 기본 키로 지정

기본 키의 조건 : 중복되지 않고, 비어 있지도 않음 / 실수로 중복된 아이디를 넣으려고 해도 입력 조차 불가능

 

* mysql에서 제공하는 대표적 제약조건

- PRIMARY KEY

- FOREIGN KEY

- UNIQE

- CHECK

- DEFAULT

- NULL

 

4. 기본 키 제약조건 - primary key

- 테이블에는 많은 행 데이터가 있음. 이 중 데이터를 구분 할 수 있는 식별자를 기본 키라고 부름.

기본 키에 입력되는 값은 중복 될 수 없으며, null 값이 입력 될 수 없음

대부분 테이블은 기본 키를 가져야 함. 기본 키를 설정해야지 중복 된 데이터가 입력 되지 않음

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

 

5. 외래 키 제약조건 - foreidn key(열 이름) references 기준_테이블(열_이름)

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

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

 

기본 키가 있는 테이블 : 기준 테이블

외래 키가 있는 테이블 : 참조 테이블

 

* CREATE 테이블에서 설정하는 외래 키 제약조건 : FOREIGN KEY

- FOREIGN KEY(열 이름) REFERENCES 기준_테이블(열 이름)

 

6. 뷰(VIEW)

- 데이터베이스 개체 중에 하나, 테이블과 아주 밀접하기 연관되어 있음.

뷰는 한 번 생성해 놓으면 테이블이라고 생각하고 사용해도 될 정도로 사용자들의 입장에서는 테이블과 거의 동일한 개체로 취급

 

뷰는 SELECT 문으로 만들어져 있기 때문에 뷰에 접근하는 순간 SELECT가 실행 -> 결과가 화면에 출력

 

단순 뷰 : 하나의 테이블과 연관

복합 뷰 : 2개 이상의 테이블과 연관된 뷰

 

* 뷰를 사용하는 이유

- 보안에 도움이 됨

- 복잡한 SQL을 단순하게 만들 수 있음

 

* 뷰의 실제 작동

- 뷰 조회 시 열 이름에 공백이 있으면 백틱(`)으로 묶어줘야 함

- 뷰 수정 : ALTER VIEW

- 뷰 삭제 : DROP VIEW

 

- 뷰에 설정된 값의 범위가 벗어나는 값은 입력되지 않게 하려면 WITH CHECK OPTION라는 예약어를 사용하면 됨.

 

* 숙제