DB/이론

5. [ DB ] MySQL 테이블의 컬럼 설정

천재단미 2024. 11. 27. 10:00
728x90
반응형

 

MySQL 테이블의 컬럼 설정에 대하여 알아보고자 합니다. 

 

 

 

MySQL 테이블의 컬럼 설정은 데이터베이스의 구조와 데이터 무결성을 유지하는 데 중요한 역할을 합니다. 
주요 이유는 다음과 같습니다

 

 

 

 

 

1. NOT NULL 정의와 활용 (데이터 타입 지정)

 

'NOT NULL' 제약 조건은 MySQL에서 특정 컬럼이 NULL 값을 허용하지 않도록 설정하는 기능입니다.

 

 

 

1) NOT NULL 제약 조건의 중요성

 

 


(1) 데이터 무결성 유지

NULL 값은 값이 없음을 의미하며, 잘못된 계산이나 예기치 않은 동작을 초래할 수 있습니다.

NOT NULL 제약 조건은 이러한 문제를 방지하여 데이터의 완전성과 신뢰성을 보장합니다.

 

(2) 데이터베이스 설계

테이블을 설계할 때, 반드시 값이 필요한 컬럼에 NOT NULL 제약을 추가하여 필수 데이터를 놓치지 않도록 합니다

 

 

 

3) 사용법


NOT NULL 제약 조건은 테이블을 생성할 때 또는 기존 테이블의 컬럼을 수정할 때 적용할 수 있습니다.

 

 


(1) 테이블 생성 시 NOT NULL 설정

테이블을 생성할 때 특정 컬럼에 NOT NULL 제약 조건을 추가하는 방법은 다음과 같습니다.

 



CREATE TABLE Employees (ID
INT NOT NULL,
LastName
VARCHAR(255) NOT NULL,
FirstName
VARCHAR(255),
Age
INT
);


 

 

(2) 기존 테이블에 NOT NULL 추가

 



ALTER TABLE Employees MODIFY Age INT NOT NULL;


 

 

이 쿼리는 Age 컬럼에 NOT NULL 제약 조건을 추가하여, 이후에는 이 컬럼에 NULL 값을 삽입할 수 없도록 합니다.

 

 

위와 같이 Not Null 체크바에 손쉽게 체크가 가능합니다. 

 

 

4) 활용 예시

 


(1) 데이터 무결성 유지

고객 정보를 저장하는 테이블에서 이메일 주소와 같은 중요한 정보를 NOT NULL로 설정하여, 모든 고객 레코드가 유효한 이메일 주소를 가지도록 할 수 있습니다.


(2) 쿼리 오류 방지

NOT NULL 제약 조건을 설정하면 INSERT 또는 UPDATE 시 해당 컬럼에 값을 제공하지 않을 경우 오류가 발생하여, 잘못된 데이터 입력을 사전에 방지할 수 있습니다.

 

 


5) 주의사항


(1) 기본값 설정

NOT NULL 제약 조건이 있는 컬럼에는 기본값을 설정하지 않으면 INSERT 시 오류가 발생합니다. 따라서 기본값을 명시적으로 설정하는 것이 좋습니다.


(2) NULL과 NOT NULL의 차이

NULL은 값이 없음을 의미하며, 데이터베이스에서 해당 필드가 선택적임을 나타냅니다. 반면, NOT NULL은 반드시 값이 있어야 함을 의미합니다.

 

 


6) 결론

 

MySQL의 NOT NULL 제약 조건은 데이터베이스 설계에서 중요한 요소로, 데이터의 완전성과 일관성을 유지하는 데 필수적입니다. 이를 적절히 활용하면 데이터베이스의 신뢰성을 높이고, 잘못된 데이터 입력으로 인한 문제를 예방할 수 있습니다.

 

 

 

 

 

 

 

 

2. auto_increment의 정의와 활용 (관계 정의)

 

 

 

1) 정의


AUTO_INCREMENT는 MySQL에서 새로운 레코드가 추가될 때 자동으로 고유한 숫자를 생성하는 기능입니다. 주로 기본 키(Primary Key) 컬럼에 사용되며, 사용자가 직접 값을 입력하지 않아도 자동으로 증가하는 값을 할당받습니다. 기본적으로 AUTO_INCREMENT는 1부터 시작하여 각 새로운 레코드가 추가될 때마다 1씩 증가합니다.

 

 

 

2) 사용 방법

 

 

(1) 테이블 생성 시 AUTO_INCREMENT 설정

테이블을 생성할 때 특정 컬럼에 AUTO_INCREMENT 속성을 추가할 수 있습니다.

 

 



CREATE TABLE Persons (Personid
INT NOT NULL
AUTO_INCREMENT,
LastName
VARCHAR(255) NOT NULL,
FirstName
VARCHAR(255),
Age
INT,
PRIMARY KEY (Personid) );


 

위 예제에서 Personid 컬럼은 AUTO_INCREMENT 속성을 가지며, 새로운 레코드가 추가될 때마다 자동으로 고유한 값이 생성됩니다.

 

 

 

(2) 기존 테이블에 AUTO_INCREMENT 추가

기존 테이블에 AUTO_INCREMENT를 적용하려면 ALTER TABLE 문을 사용합니다.

 



ALTER TABLE Persons MODIFY Personid INT NOT NULL AUTO_INCREMENT;


 

 

 

(3) 초기값 및 증가값 설정

AUTO_INCREMENT의 초기값을 변경하려면 다음과 같이 설정할 수 있습니다.

 

 



ALTER TABLE Persons AUTO_INCREMENT = 100;


 

 

 

(4) 데이터 삽입

AUTO_INCREMENT가 설정된 컬럼에 대해 값을 명시하지 않고 데이터를 삽입할 수 있습니다.

 

 



INSERT INTO Persons (FirstName, LastName) VALUES ('Lars', 'Monsen');


 

위 쿼리를 실행하면 Personid는 자동으로 증가된 값이 할당됩니다.

 

 

 

 Not Null 과 동일하게 체크바에 손쉽게 체크가 가능하여 기본 세팅과정에서 위와 같이 체크 또한 가능합니다. 

 

 

 

3) 주의사항

 

NULL 값 허용 안 함: AUTO_INCREMENT 컬럼은 NULL 값을 허용하지 않으며, 반드시 고유한 값을 가져야 합니다.
삭제 후 값 재사용 안 함: 삭제된 레코드의 AUTO_INCREMENT 값은 재사용되지 않으며, 새로운 레코드는 항상 가장 높은 값에서 증가합니다.
서버 재시작 시 값 유지: MySQL은 AUTO_INCREMENT 최댓값을 내부적으로 저장하여 서버가 재시작되어도 이 값이 유지됩니다.

 

 


4) 결론


MySQL의 AUTO_INCREMENT 기능은 데이터베이스에서 고유한 식별자를 자동으로 생성하는 데 유용하며, 주로 기본 키와 함께 사용됩니다. 이를 통해 데이터 삽입 과정을 간소화하고 데이터의 무결성을 유지할 수 있습니다.

 

 

 

 

 

 

 

 

 

3. Primary의 정의와 활용 (데이터 타입 지정)

 

 

1) 정의


Primary Key는 MySQL에서 테이블의 각 레코드를 고유하게 식별하는 데 사용되는 하나 또는 여러 개의 칼럼(열)의 집합입니다. 

 

2) 특징

 

(1) 고유성

각 레코드는 Primary Key를 통해 유일하게 식별됩니다.


(2) NULL 불가

Primary Key 컬럼은 NULL 값을 허용하지 않습니다.


(3) 단일 또는 복합 키

하나의 컬럼으로 구성될 수 있으며, 여러 컬럼을 조합하여 복합 Primary Key를 만들 수도 있습니다.

 

 

 

위 와같이 Key란에 PRI 표기가 되어있다면 완료입니다. 

 

 

 

3) 활용 예시 

 

(1) 레코드 식별 

Primary Key는 특정 테이블의 각 레코드를 고유하게 식별하는 데 사용됩니다. 예를 들어, 사용자 정보를 저장하는 users 테이블에서 user_id를 Primary Key로 설정할 수 있습니다.

 



CREATE TABLE users ( user_id
INT PRIMARY KEY,
username
VARCHAR(50) NOT NULL,
email
VARCHAR(100) NOT NULL
);


 

 

 

(2) 다른 테이블과의 관계 정의

Primary Key는 다른 테이블에서 외래 키(Foreign Key)로 사용되어 두 테이블 간의 관계를 정의하는 데 필수적입니다.

예를 들어, "orders" 테이블에서 "user_id"를 외래 키로 사용하여 "users" 테이블과 연결할 수 있습니다.

 



CREATE TABLE orders ( order_id
INT PRIMARY KEY,
order_date
DATE,
user_id
INT,
FOREIGN KEY (user_id)
REFERENCES users(user_id)
);




 

(3) 데이터 무결성 유지

Primary Key는 데이터베이스 내에서 중복된 값이 입력되지 않도록 하여 데이터 무결성을 유지합니다.

예를 들어, 동일한 "user_id" 값을 가진 두 개의 레코드를 삽입하려고 하면 오류가 발생합니다.

 



INSERT INTO users (user_id, username, email)
VALUES (1, 'john_doe', 'john@example.com');




INSERT INTO users (user_id, username, email)
VALUES (1, 'jane_smith', 'jane@example.com'); -- 오류 발생


 

 

 

 

4) 결론


MySQL의 Primary Key는 데이터베이스 설계에서 필수적인 요소로, 데이터를 효율적으로 관리하고 무결성을 유지하는 데 중요한 역할을 합니다. 이를 통해 각 레코드를 고유하게 식별하고, 다른 테이블과의 관계를 명확히 하여 데이터베이스의 신뢰성을 높일 수 있습니다.

 

 

 

 

 

 

 

 

4. Unique의 정의와 활용 (데이터 타입 지정)

 

 

 

 

1) 정의

 

UNIQUE 은 MySQL에서 특정 컬럼이나 컬럼 조합이 중복된 값을 가질 수 없도록 설정하는 제약조건입니다. 이 제약 조건이 적용된 필드는 서로 다른 값을 가져야 하며, NULL 값은 허용되지만 각 NULL 값은 서로 다르게 간주됩니다. 즉, 동일한 컬럼에 대해 여러 개의 UNIQUE 제약 조건을 설정할 수 있습니다.

 

 

 

2) UNIQUE 제약 조건의 특징


(1) 중복 방지

UNIQUE 제약 조건이 설정된 컬럼에는 중복된 값이 저장될 수 없습니다.

(2) NULL 허용

UNIQUE 제약 조건은 NULL 값을 허용하며, 여러 NULL 값이 존재할 수 있습니다.
(3) 여러 개 가능

한 테이블에 여러 개의 UNIQUE 제약 조건을 설정할 수 있습니다. 반면, Primary Key는 한 테이블에 하나만 존재할 수 있습니다.
(4) 자동 인덱스 생성

UNIQUE 제약 조건이 설정된 컬럼은 자동으로 인덱스가 생성되어 검색 성능을 향상합니다.

 

 

 


3) 특징

 

(1) 컬럼 또는 컬럼 그룹의 값이 고유해야 합니다.
(2) NULL 값을 허용하며, 여러 개의 NULL 값이 존재할 수 있습니다.
(3) 하나의 테이블에 여러 개의 UNIQUE 제약 조건을 설정할 수 있습니다.
(4) 자동으로 해당 컬럼에 대한 인덱스를 생성합니다.

 

 

 

 

 

4) 활용 예시


(1) 테이블 생성 시 UNIQUE 설정

테이블을 생성할 때 특정 컬럼에 UNIQUE 제약 조건을 추가할 수 있습니다.

 



CREATE TABLE Users ( user_id
INT PRIMARY KEY,
username
VARCHAR(50)
UNIQUE,
email
VARCHAR(100)
UNIQUE
);


 

위 예제에서 "username" "email" 컬럼은 각각 고유한 값을 가져야 하며, 중복된 값을 입력할 수 없습니다.

 

 

(2) ALTER TABLE 문으로 UNIQUE 추가

기존 테이블에 UNIQUE 제약 조건을 추가하려면 ALTER TABLE 문을 사용합니다.

 



ALTER TABLE Users ADD CONSTRAINT unique_email UNIQUE (email);


 

이 쿼리는 "Users" 테이블의 "email" 컬럼에 대해 UNIQUE 제약 조건을 추가합니다.

 

 

(3) 다중 컬럼 UNIQUE 설정
여러 컬럼의 조합이 고유해야 하는 경우, 다음과 같이 설정할 수 있습니다.

 

 



CREATE TABLE Messages (
id INT AUTO_INCREMENT PRIMARY KEY,
user_id INT NOT NULL,
user_to INT NOT NULL,
top_num INT NOT NULL,
UNIQUE (user_id, user_to, top_num) );


 

이 경우 "(user_id, user_to, top_num) "조합이 중복될 수 없습니다.

 

 

 

 

위와 같이 Key란에 UNI 표기가 되어있다면 완료입니다.  

 

 

 

Primary, Unique 체크 후  insert 하게 되면 위와 같이 에레메세지가 나타나게 됩니다. 

 

 

 

5) 주의사항


중복 데이터 삽입 시 오류 발생: 이미 존재하는 값으로 새로운 레코드를 삽입하려고 하면 오류가 발생하여 데이터 무결성을 유지합니다.


인덱스 관리

UNIQUE 제약 조건은 인덱스를 자동으로 생성하므로, 해당 인덱스를 삭제하려면 DROP INDEX 명령어를 사용해야 합니다.

 


6) 결론


MySQL의 UNIQUE 제약 조건은 데이터베이스에서 중복된 값을 방지하고 데이터 무결성을 유지하는 데 중요한 역할을 합니다. 이를 통해 각 레코드가 고유하게 식별될 수 있도록 하여, 데이터베이스의 신뢰성과 효율성을 높일 수 있습니다.

 

 

728x90
반응형
home top bottom
}