[혼공학습단 13기] 활동의 일환으로 한빛미디어의 < 혼자 공부하는 SQL >을 읽고 요약 정리한 글입니다.
테이블
은 표 형태로 구성된 2차원 구조로, 행과 열로 구성.
(행은 로우
, 레코드
/ 열은 컬럼
, 필드
라고 부름)
MySQL 워크벤치를 통해 테이블을 만들 수 있다.
✅ 테이블 설계 : 테이블 이름, 열 이름, 데이터 형식, 기본 키 등 설정
PRIMARY KEY
문을 붙여준다.FOREIGN KEY
예약어로 지정한다.p. 226의 market_db의 회원 테이블(member) 생성하고, p. 229 데이터 입력한 후 인증하기
제약 조건
: 데이터의 무결성
을 지키기 위해 제한하는 조건
✅ 대표적인 제약조건
기본 키
: 데이터를 구분할 수 있는 식별자
👉 중복될 수 없고, NULL값이 입력될 수 없다. 테이블은 기본 키를 1개만 가질 수 있다.
PRIMARY KEY
를 붙여준다.PRIMARY KEY(열_이름)
을 추가한다.이미 만들어진 테이블을 수정하는 ALTER TABLE
구문을 통해 제약조건 설정
ALTER TABLE 테이블_이름
ADD CONSTRAINT
PRIMARY KEY (열_이름)
외래 키
: 두 테이블의 관계를 연결하여 데이터의 무결성 보장
기본 키가 있는 테이블을 기준 테이블
, 외래 키가 있는 테이블을 참조 테이블
이라고 한다.
마지막 행에 FOREIGN KEY(열_이름) REFERENCE 기준_테이블(열_이름)
추가
ALTER TABLE 참조_테이블_이름
ADD CONSTRAINT
FOREIGN KEY (열_이름)
REFERENCE 기준_테이블_이름(열_이름)
👉 기본 키-외래 키 관계가 설정되면 기준 테이블의 열은 변경되거나 삭제되지 않는다.
✅ON UPDATE CASCADE
, ON DELETE CASCADE
: 기준 테이블의 데이터가 변경, 삭제되면 참조 테이블도 함께 변경, 삭제된다.
👉 중복되지 않는 유일한 값을 입력해야 하며, NULL 값은 허용한다. 열 뒤에 UNIQUE
추가
👉 입력하는 데이터 점검. 열 뒤에 CHECK(조건)
추가. ALTER TABLE 구문으로 제약조건 추가 가능.
👉 값을 입력하지 않았을 때, 자동으로 입력될 값 미리 지정. 열 뒤에 DEFAULT 값
추가.
👉 열 뒤에 NOT NULL
추가. 기본 키는 생략해도 자동으로 NOT NULL로 인식.
뷰
는 데이터베이스 개체 중 하나로 가상의 테이블
이라고 할 수 있다.
CREATE VIEW 뷰_이름
AS
SELECT 문;
뷰의 실체는 SELECT 문. 뷰를 만든 후에는 테이블과 동일하게 사용.
사용자는 뷰를 테이블이라고 생각하고 접근한다.
뷰는 기본적으로 '읽기 전용'으로 사용되지만, 경우에 따라 뷰를 통해 원본 테이블의 데이터를 수정할 수 있다.
1️⃣ 보안에 도움이 된다.
(예시: 테이블의 일부 정보만을 포함하는 뷰를 생성하여, 뷰에만 접근할 수 있는 권한 부여)
2️⃣ 복잡한 SQL을 단순하게 만들 수 있다.
(예시: 자주 사용하는 SELECT문을 뷰로 생성하면, 복잡한 SQL을 입력할 필요 사라짐)
별칭
을 사용하여 뷰의 열이름을 테이블과 다르게 지정 가능
AS
를 붙여준다.백틱
으로 묶어줘야 한다.뷰의 수정은 ALTER VIEW
를, 뷰의 삭제는 DROP VIEW
를 사용한다.
※ 데이터베이스 개체는 서로 완전히 다른 기능을 하지만, 생성/수정/삭제하는 문법은 거의 동일
( CREATE / ALTER / DROP )
DESCRIBE
문으로 기존 뷰의 정보 확인 가능SHOW CREATE VIEW
문으로 뷰의 소스 코드 확인 가능입력: INSERT / 수정: UPDATE / 삭제: DELETE
뷰를 통해 데이터를 입력하려면, 뷰에서 보이지 않는 테이블의 열의 NOT NULL이 없어야 한다.
조건을 설정한 뷰에서 만족하지 않은 데이터를 입력하면 입력은 되지만 뷰에는 보이지 않는다.
👉 WITH CHECK OPTION
예약어를 사용하면 설정 범위의 데이터만 입력하도록 제한한다.
CHECK TABLE
문으로 뷰의 상태를 확인할 수 있다.※ 하나의 테이블로 만든 뷰는 단순 뷰, 두 개 이상의 테이블로 만든 뷰는 복합 뷰라고 한다.
p. 271 확인 문제 4번 풀고 인증하기
( ) 뷰_이름
AS
SELECT 문;
답: 2️⃣CREATE OR REPLACE VIEW