MySQL은 다양한 데이터 유형을 제공하며, 이를 크게 숫자형(Numeric), 날짜·시간형(Date and Time), 문자열(String) 세 가지 그룹으로 분류합니다. 각 그룹별 주요 유형과 특징을 자세히 살펴보겠습니다. 1. 숫자형(NUMERIC) 데이터 유형 MySQL은 표준 ANSI SQL 숫자 데이터 유형을 모두 지원합니다. 따라서 다른 데이터베이스 시스템에서 MySQL로 넘어온 개발자라면 익숙하게 사용할 수 있습니다. 정수 유형 아래 정수 유형은 모두 부호 있는(SIGNED) 값과 부호 없는(UNSIGNED) 값으
MySQL에서 부모 테이블(parent table)의 행을 삭제하려고 할 때, 해당 행의 데이터가 자식 테이블(child table)에서 참조되고 있다면 외래 키(Foreign Key) 제약 조건 위반으로 인해 삭제가 실패하고 오류가 발생합니다. 이는 잘못된 데이터 참조를 막아 데이터 무결성을 지키기 위한 중요한 안전장치입니다. 예제로 이해하는 부모 테이블과 자식 테이블 이해를 돕기 위해 customer(고객)와 orders(주문)라는 두 개의 테이블을 예로 들어 보겠습니다. 여기서 customer는 부모 테이블, orders는
MySQL 테이블에서 UNIQUE 제약 조건을 삭제하려면 먼저 해당 제약 조건이 생성한 인덱스의 이름을 확인해야 합니다. 이를 위해 SHOW INDEX 문을 사용할 수 있으며, 결과 집합의 key_name 항목에 인덱스 이름이 포함되어 있습니다.인덱스 이름을 확인한 후에는 DROP INDEX 문 또는 ALTER TABLE 문 중 하나를 사용하여 UNIQUE 제약 조건을 삭제할 수 있습니다. 두 문장의 기본 문법은 다음과 같습니다.문법DROP INDEX index_name ON table_name; 또는 ALTER TABLE tabl
여러 열(멀티 컬럼)로 구성된 UNIQUE 인덱스를 생성하려면 CREATE UNIQUE INDEX 문에서 인덱스 이름을 지정하고, 그 뒤에 두 개 이상의 열을 나열하면 됩니다. 이렇게 하면 해당 열들의 조합 전체가 중복되지 않도록 데이터베이스가 보장합니다.멀티 컬럼 UNIQUE 인덱스 생성 예제다음 예제는 employee 테이블의 empid, first_name, last_name 세 개의 열에 id_fname_lname이라는 이름의 멀티 컬럼 UNIQUE 인덱스를 생성합니다.mysql> Create UNIQUE INDEX i
여러 열(컬럼)로 구성된 UNIQUE 인덱스는 테이블에서 UNIQUE 제약 조건을 제거할 때와 동일한 방식으로 제거할 수 있습니다. 이때 DROP INDEX 인덱스명 ON 테이블명 구문을 사용하면 됩니다.예제다음 예제에서는 employee 테이블에 설정된 여러 열로 구성된 UNIQUE 인덱스를 아래 쿼리를 통해 제거합니다.mysql> DROP index id_fname_lname on employee;Query OK, 0 rows affected (0.30 sec)Records: 0 Duplicates: 0 Warnings:
MySQL에서 동일한 열에 UNIQUE 제약 조건을 여러 번 추가하면, 제약 조건을 추가한 횟수만큼 해당 열에 고유(unique) 인덱스가 생성됩니다. 즉, MySQL은 중복된 제약 조건을 자동으로 병합하지 않고 매번 새로운 인덱스를 만들어냅니다.예제employee 테이블의 empid 열에 이미 UNIQUE 제약 조건이 설정되어 있다고 가정해 보겠습니다. 다음 쿼리로 현재 상태를 확인할 수 있습니다.mysql> Describe employee; +------------+-------------+------+-----+-----
PRIMARY KEY(기본 키)는 데이터베이스에서 각 행(row)을 고유하게 식별하는 역할을 합니다. 기본 키에는 반드시 중복되지 않는 고유한 값이 저장되어야 하며, NULL 값은 허용되지 않습니다. 또한 하나의 MySQL 테이블에는 PRIMARY KEY가 하나만 존재할 수 있습니다.기본 키 컬럼은 테이블을 생성할 때 PRIMARY KEY 제약 조건(constraint)을 정의하여 만들 수 있습니다. 제약 조건을 지정하려면 테이블 생성 시 PRIMARY KEY 키워드를 사용해야 하며, 아래 예시를 통해 확인해 보겠습니다.예제다음 쿼
MySQL에서 기본 키(PRIMARY KEY) 열은 반드시 고유한 값을 가져야 하며 NULL 값을 허용하지 않습니다. 이러한 특성을 활용하면 PRIMARY KEY 키워드를 직접 사용하지 않고도 기본 키 열을 정의할 수 있습니다. 바로 열에 UNIQUE와 NOT NULL 제약 조건을 동시에 적용하면, 해당 열은 자동으로 기본 키 열로 인식됩니다. 예제 다음 예제에서는 RollNo 열에 UNIQUE와 NOT NULL 제약 조건을 함께 정의하여 Student123이라는 테이블을 생성합니다. 이후 DESCRIBE 명령어로 테이블 구조를 확
이미 생성된 MySQL 테이블의 특정 컬럼에 PRIMARY KEY(기본 키) 제약 조건을 적용하려면 ALTER TABLE 문을 사용하면 됩니다. 테이블을 새로 만들 필요 없이 기존 구조를 간단히 수정할 수 있다는 점이 큰 장점입니다.기본 문법ALTER TABLE table_name MODIFY column_name datatype PRIMARY KEY;또는ALTER TABLE table_name ADD PRIMARY KEY (column_name);두 가지 방식 모두 동일한 결과를 가져오며, 상황에 따라 편한 방법을 선택하면 됩니다
MySQL에서 ALTER TABLE 문과 DROP 키워드를 함께 사용하면 기존 테이블의 특정 열에 설정된 PRIMARY KEY(기본 키) 제약 조건을 손쉽게 제거할 수 있습니다.예제다음과 같이 ID 열에 PRIMARY KEY 제약 조건이 설정되어 있는 Player 테이블이 있다고 가정해 보겠습니다.mysql> DESCRIBE Player; +-------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Ext
AUTO_INCREMENT 속성을 가진 열에는 반드시 PRIMARY KEY(기본 키) 제약 조건이 함께 정의되어 있어야 합니다. 따라서 AUTO_INCREMENT 열에서 PRIMARY KEY 제약 조건을 삭제하려고 시도하면, MySQL은 잘못된 테이블 정의(Incorrect table definition)와 관련된 오류 메시지를 반환합니다.아래 예제를 통해 이 동작을 자세히 살펴보겠습니다.예제다음과 같은 구조를 가진 Accounts 테이블이 있다고 가정해 보겠습니다.mysql> Describe accounts; +------
MySQL은 여러 열에 하나의 PRIMARY KEY(기본 키)를 설정하는 것을 허용합니다. 이렇게 하면 여러 열을 마치 하나의 단위처럼 다룰 수 있다는 장점이 있습니다. 이를 복합 기본 키(Composite Primary Key)라고 부르며, 두 개 이상의 열 값 조합이 테이블 전체에서 고유하도록 보장하는 역할을 합니다.예제다음과 같이 여러 열에 복합 기본 키를 정의하여 allotment 테이블을 생성해 보겠습니다. mysql> Create table allotment( RollNo Int, Name Varchar(20)
제약 조건(Constraint)은 말 그대로 데이터에 적용되는 일종의 제한이나 규칙을 의미합니다. MySQL에서 제약 조건은 테이블에 입력될 수 있는 데이터를 제한하는 규칙을 정의하는 데 사용됩니다. 제약 조건을 활용하면 테이블 내부 데이터의 정확성(Accuracy)과 무결성(Integrity)을 효과적으로 유지할 수 있습니다.MySQL 제약 조건의 두 가지 유형MySQL의 제약 조건은 적용 범위에 따라 크게 두 가지로 나눌 수 있습니다.1. 컬럼 레벨(Column Level) 제약 조건테이블의 특정 컬럼에만 적용되어 해당 컬럼의
MySQL NOT NULL 제약 조건이란?MySQL에서 NOT NULL 제약 조건은 테이블의 특정 열(컬럼)에 NULL 값이 저장되지 않도록 제한하는 규칙입니다. NOT NULL 제약 조건이 적용된 열에는 NULL 값을 삽입하거나 업데이트할 수 없으며, 해당 열에는 반드시 유효한 데이터가 들어가야 합니다.특히 주목할 점은 NOT NULL이 테이블 전체 단위가 아니라 개별 열 단위(컬럼 레벨)로만 선언된다는 것입니다. 즉, 여러 열 중 일부에만 NOT NULL을 적용할 수 있고, 나머지 열은 NULL 값을 허용하도록 설정할 수 있습니
이미 생성된 MySQL 테이블의 특정 열에 NOT NULL 제약 조건을 추가하려면 ALTER TABLE 문을 사용하면 됩니다. 이를 통해 테이블을 삭제하고 다시 만들 필요 없이 기존 열의 NULL 허용 여부를 손쉽게 변경할 수 있습니다.기본 문법ALTER TABLE table_name MODIFY column_name datatype NOT NULL;적용 예시먼저 NOT NULL 제약 조건이 없는 간단한 테이블을 생성하고, DESCRIBE 명령으로 현재 구조를 확인해 보겠습니다.mysql> Create table test123
MySQL에서 NULL 값이 포함된 열에 ALTER TABLE 문을 사용하여 NOT NULL 제약 조건을 적용하려고 하면, 해당 열에 대해 데이터가 잘렸다(Data truncated)는 의미의 오류 메시지가 반환됩니다. 다음 예시를 통해 자세히 살펴보겠습니다. 예시 test2라는 테이블에 ID 열의 두 번째 행에 NULL 값이 저장되어 있다고 가정해 보겠습니다. 이 상태에서 ID 열을 NOT NULL로 변경하려고 하면 MySQL은 다음과 같은 오류를 반환합니다. mysql> Select * from test2; +------+
ALTER TABLE 문을 사용하면 기존 테이블의 특정 열에 설정된 NOT NULL 제약 조건을 간단히 제거할 수 있습니다. 이 글에서는 실제 예제를 통해 그 과정을 단계별로 살펴보겠습니다. 예시 먼저 test123이라는 테이블의 ID 열에 NOT NULL 제약 조건이 설정되어 있다고 가정해 보겠습니다. DESCRIBE 명령어로 현재 테이블 구조를 확인하면 다음과 같습니다. mysql> DESCRIBE test123; +-------+---------+------+-----+---------+-------+ | Field
NOT NULL 제약 조건이 설정된 문자형 열에도 NULL 키워드를 값으로 삽입하는 것은 충분히 가능합니다. 그 이유는 작은따옴표로 묶여 삽입된 NULL은 실제 NULL 값이 아니라 하나의 문자열 값으로 취급되기 때문입니다. 즉, NOT NULL 제약 조건은 값이 없는 상태만 금지하므로, NULL이라는 문자열 자체는 유효한 값이 됩니다.예제문자형 열 Name에 NOT NULL 제약 조건이 걸려 있는 test2 테이블이 있다고 가정해 보겠습니다. 아래와 같이 DESCRIBE 문을 통해 제약 조건을 확인할 수 있습니다.mysql>
MySQL UNIQUE 제약 조건이란?이름 그대로 MySQL의 UNIQUE 제약 조건은 테이블 내 특정 컬럼 값의 고유성을 보장하는 기능입니다. 즉, 해당 컬럼에는 중복된 값을 삽입할 수 없습니다. UNIQUE 제약 조건은 일종의 인덱스를 생성하며, 인덱스가 걸린 컬럼의 모든 값은 반드시 서로 달라야 합니다.또한 한 가지 중요한 점은 하나의 MySQL 테이블에 여러 개의 UNIQUE 컬럼을 둘 수 있다는 것입니다. 예를 들어 사용자 테이블에서 이메일 주소와 전화번호를 각각 UNIQUE로 설정해 중복 가입을 방지할 수 있습니다.컬럼
이미 생성된 MySQL 테이블의 특정 컬럼에 UNIQUE 제약 조건을 추가해야 하는 경우가 종종 있습니다. 이때는 ALTER TABLE 문을 사용하면 간단하게 해결할 수 있습니다.기본 문법UNIQUE 제약 조건은 아래 두 가지 방식 중 하나로 적용할 수 있습니다.ALTER TABLE table_name MODIFY colum_name datatype UNIQUE; OR AL