728x90
반응형
📒 테이블과 뷰
📕 1. 제약 조건
1) PRIMARY KEY 제약 조건
- 입력되는 값 중복X, NULL값 X
- 기본 키로 생성한 것은 자동으로 클러스터형 인덱스가 생성됨
- CREATE TABLE 구문 안에서 기본 키를 지정하면 MySQL이 알아서 설정
- 기본 키는 각 테이블 별로 하나만 존재
- 두 개 이상의 열을 합쳐서 기본 키로 설정 가능
# 기본 키 지정
CREATE TABLE userTBL
(
userID CHAR(8) NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL
);
# 기본 키 이름 지정
CREATE TABLE userTBL
(
userID CHAR(8) NOT NULL,
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL,
CONSTRAINT PRIMARY KEY PK_userTBL_userID (userID)
);
# 기본 키 변경
ALTER TABLE userTBL
ADD CONSTRAINT PK_userTBL_userID
PRIMARY KEY (userID);
2) FOREIGN KEY 제약 조건
- 두 테이블 사이의 관계를 선언함으로써 데이터의 무결성을 보장하는 역할
- 외래 키 관계를 설정하면 하나의 테이블이 다른 테이블에 의존
# 외래 키 지정
CREATE TABLE userTBL
(
userID CHAR(8) NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL
);
CREATE TABLE buyTBL
(
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
userID CHAR(8) NOT NULL,
prodName CHAR(6) NOT NULL,
FOREIGN KEY(userID) REFERENCES userTBL(userID)
);
# 외래 키 이름 지정
CREATE TABLE buyTBL
(
num INT AUTO_INCREMENT NOT NULL PRIMARY KEY,
userID CHAR(8) NOT NULL,
prodName CHAR(6) NOT NULL,
CONSTRAINT FK_userTBL_buyTBL FOREIGN KEY(userID) REFERENCES userTBL(userID)
);
# 외래 키 변경
ALTER TABLE buyTBL
ADD CONSTRAINT FK_userTBL_buyTBL
FOREIGN KEY (userID)
REFERENCES userTBL(userID);
3) UNIQUE 제약 조건
- 중복되지 않는 유일한 값 입력 조건
- PRIMARY KEY와 비슷, NULL 허용
# 고유 키 지정
CREATE TABLE userTBL
(
userID CHAR(8) NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL,
email CHAR(30) NULL UNIQUE
);
# 고유 키 이름 지정
CREATE TABLE userTBL
(
userID CHAR(8) NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL,
email CHAR(8) NULL,
CONSTRINT AK_email UNIQUE (email);
);
4) CHECK 제약 조건
- 입력되는 데이터 점검
# CHECK 제약 조건 설정
CREATE TABLE userTBL
(
userID CHAR(8) PRIMARY KEY,
name VARCHAR(10),
birthYear INT CHECK (birthYear >= 1900 AND birthYear <= 2023),
CONSTRAINT CK_name CHECK (name IS NOT NULL)
);
# CHECK 제약 조건 추가
ALTER TABLE userTBL
ADD CONSTRAINT CK_mobile1
CHECK (mobile IN ('010', '011', '016', '017', '018', '019'));
5) DEFAULT 정의
- 값을 입력하지 않았을 때, 자동으로 입력되는 기본 값을 정의
# DEFAULT 정의
CREATE TABLE userTBL
(
userID CHAR(8) NOT NULL PRIMARY KEY,
name VARCHAR(10) NOT NULL,
birthYear INT NOT NULL DEFAULT -1
);
# DEFAULT 변경
ALTER TABLE userTBL
ALTER COLUMN birthYear SET DEFAULT -1;
6) 임시 테이블
- 임시로 잠깐 사용하는 용도
- TEMPORARY TABLE 외에는 테이블과 정의/사용법이 동일
- 세션 내에서만 존재, 세션이 닫히면 자동으로 삭제
- 임시 테이블은 생성한 클라이언트에서만 접근 가능, 다른 클라이언트는 접근 불가
- 데이터베이스 내의 다른 테이블과 이름 동일하게 생성 가능 (기존 테이블은 접근 불가능)
- 임시 테이블 삭제 시점
- 사용자가 DROP TABLE로 직접 삭제
- Workbench를 종료하거나 mysql 클라이언트를 종료하면 삭제됨
- MySQL 서비스가 재시작되면 삭제됨
- 형식
CREATE TEMPORARY TABLE (IF NOT EXISTS) 테이블 이름
( 열 정의 ... )
📕 2. 뷰
- 일반 사용자 입장에서는 테이블과 동일하게 사용하는 개체
- SELECT문의 결과
- 원래 테이블에 접근한 것과 동일한 결과
- 뷰를 통해서 원테이블 데이터 수정 가능
- 사용 이유
- 개인정보 등 보안 효과
- 복잡한 쿼리를 단순화 시킴
CREATE VIEW v_usertbl
AS
SELECT userid, name, addr FROM usertbl;
📕 3. 테이블스페이스
- 대용량의 데이터를 다룰 때 성능 향상
- 데이터베이스가 테이블이 저장되는 논리적 공간, 테이블 스페이스는 테이블이 실제로 저장되는 물리적인 공간
- 별도의 테이블스페이스를 지정하지 않으면, 시스템 테이블스페이스에 테이블 저장
- 시스템 변수 innodb_data_file_path에 시스템 테이블스페이스 정보 저장 (파일명 : 파일크기 : 최대파일크기)
SHOW VARIABLES LIKE 'innodb_data_file_path';
728x90
반응형
'BE > SQL' 카테고리의 다른 글
6. 스토어드 프로그램 (0) | 2025.04.09 |
---|---|
5. 인덱스 (0) | 2025.04.09 |
3. SQL 문법 (2) | 2025.04.09 |
2. MySQL 유틸리티 (0) | 2025.04.09 |
1. MySQL 설치 (0) | 2025.04.09 |