mysql alter table how add column table mysql
예를 들어 열, 인덱스, 제약 조건, 테이블 이름 변경 등을 추가 / 삭제하는 MySQL ALTER Table 명령에 대해 알아보십시오.
MySQL ALTER 명령은 새 열을 추가하거나 기존 열을 제거하거나 열의 데이터 유형을 변경하여 기존 테이블을 수정하는 데 사용됩니다.
간단히 말해서 ALTER 명령은 열 추가 / 제거 / 업데이트, 테이블 이름 변경 등을 통해 기존 테이블의 구조를 수정하는 데 사용됩니다.
특정 스키마에 대한 모든 요구 사항을 미리 사용할 수있는 것은 거의 불가능하므로 필요에 따라 테이블 구조를 업데이트하는 방법이 있어야합니다.
학습 내용 :
MySQL ALTER 테이블
통사론:
ALTER TABLE table_name (alter_option1, alter_option2...)
여기서 table_name은 변경 작업을 수행하려는 테이블의 이름입니다. 하나 이상의 alter_options를 ALTER TABLE 명령.
MySQL에서 제공하는 주로 사용되는 다른 alter_options를 살펴 보겠습니다.
샘플 데이터 및 테이블 설정
의 다른 사용법을 이해하기 위해 나이 명령을 내리면 아래에 언급 된 구조를 가진 Employee 및 Department의 두 가지 샘플 테이블을 사용합니다.
또한 두 테이블에 더미 데이터를 추가하고 있습니다.
이러한 테이블 사이에 FOREIGN KEY 제약 조건을 추가하지 않았습니다. 아래 섹션에 나와있는 예제에서 ALTER 명령을 사용하여 추가하는 방법을 배웁니다.
CREATE TABLE IF NOT EXISTS Employee_Department ( id INT, name VARCHAR(100), PRIMARY KEY (id) ); CREATE TABLE IF NOT EXISTS Employee ( name VARCHAR(100), id INT, address VARCHAR(100), department_id INT, PRIMARY KEY (id) ); INSERT INTO `employee_department`(`name`,`id`) VALUES ('Information Technology',1),('HR',2),('Finance',3),('Accounting',4),('Housekeeping',5 ),('Security',6),('Support',7),('Contract Staff',8),('Sales',9),('Management',10); INSERT INTO `employee` (`id`,`name`,`address`) VALUES (1,'Alyssa Villarreal','Ap #558-3012 Nulla Street'),(2,'Vanna Parks','103-986 Cursus Rd.'),(3,'Quyn Byers','770 Nulla Avenue'),(4,'Kristen Hall','Ap #622-9967 Nullam St.'),(5,'Chelsea Stone','6017 Elementum St.'),(6,'Sacha Sweeney','239-7402 Etiam St.'),(7,'Sophia Charles','799 -745 Tellus. Rd.'),(8,'Jennifer Joyner','5803 Ligula. Avenue'),(9,'Mercedes Head','Ap #375-7999 Facilisis Rd.'),(10,'Reagan Holland','P.O. Box 625, 5744 Proin Avenue');
ALTER 테이블 명령을 사용하는 다양한 방법
그만큼 MySQL ALTER 명령은 열 추가 / 삭제, 인덱스 또는 제약 조건 추가 / 삭제, 테이블 자체 업데이트와 같은 여러 작업에 사용할 수 있습니다. 예제를 통해 다양한 시나리오를 살펴 보겠습니다.
열 추가
위의 샘플 테이블을 사용하여 Employee 테이블에 INT 유형의 'department_id'라는 새 열을 추가해 보겠습니다.
ALTER TABLE employee ADD COLUMN department_id INT
드롭 컬럼
새 열을 추가하는 것과 유사하게 MySQL ALTER 명령을 사용하여 테이블에서 기존 열을 삭제할 수 있습니다.
Employee 테이블에서 위에서 추가 한 department_id 열을 제거하십시오.
ALTER TABLE employee DROP COLUMN department_id
COLUMN을 삭제하는 동안 데이터 유형이 아닌 열 이름 만 언급하면됩니다.
ALTER 명령이 성공했는지 확인하려면 SHOW COLUMNS 명령을 실행할 수 있습니다.
SHOW COLUMNS FROM employee;
산출:
들 | 유형 | 없는 | 키 | 기본 | 특별한 |
---|---|---|---|---|---|
이름 | varchar (100) | 예 | 없는 | ||
신분증 | int | 예 | 없는 | ||
주소 | varchar (100) | 예 | 없는 |
이제 'Employee'테이블에 department_id 열이 없음을 알 수 있습니다.
제약 조건 추가 / 삭제
이제 ALTER를 사용하여 제약 조건을 추가하는 방법을 살펴 보겠습니다.
ALTER 명령을 사용하여 기존 테이블에 대한 제약 조건을 추가하거나 제거 할 수 있습니다. 두 테이블 사이에 추가해야하는 FOREIGN KEY 제약 조건의 예를 살펴 보겠습니다.
ALTER 명령을 사용하여 employee_department 테이블의 Employee 테이블에 FOREIGN KEY CONSTRAINT를 추가합니다.
Employee 테이블에 department_id라는 새 열을 추가합니다.
ALTER TABLE employee ADD COLUMN department_id INT
이제 FOREIGN KEY 제약 조건을 추가하십시오.
ALTER TABLE employee ADD FOREIGN KEY (department_id) REFERENCES employee_department(id)
이 제약 조건을 확인하기 위해 SHOW 명령을 사용하여 테이블 정의를 볼 수 있습니다.
SHOW CREATE TABLE employee;
표 | 테이블 만들기 |
---|---|
종업원 | CREATE TABLE`employee` ( `name` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `address` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, KEY`department_id` (`department_id`), CONSTRAINT`employee_ibfk_1` 외래 키 (`department_id`) 참조`employee_department` (`id`) ) 엔진 = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
department_id 열에 만들어진 FOREIGN KEY 제약 조건이 있음을 알 수 있습니다.
이제 ALTER 명령을 사용하여 방금 추가 한 FOREIGN KEY 제약 조건을 제거하는 방법을 살펴 보겠습니다.
ALTER TABLE employee DROP CONSTRAINT employee_ibfk_1
생성 된 제약의 이름을 사용해야합니다. 따라서 위의 SHOW 명령 출력에서 MySQL이 FOREIGN KEY 제약 조건에 대해 생성 한 제약 이름이‘ employee_ibfk_1’
SHOW 명령을 실행하여 아래와 같이 제약 조건이 제거되었는지 확인합니다.
SHOW CREATE TABLE employee;
표 | 테이블 만들기 |
---|---|
종업원 | CREATE TABLE`employee` ( `name` varchar (100) DEFAULT NULL, `id` int DEFAULT NULL, `address` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, 키`department_id` (`department_id`) ) 엔진 = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
인덱스 추가 / 삭제
MySQL ALTER table 명령을 사용하면 테이블에 대해 INDEXES를 만들거나 삭제할 수도 있습니다.
ALTER TABLE 명령을 사용하여 추가 할 수있는 네 가지 유형의 인덱스가있을 수 있습니다.
# 1) PRIMARY KEY 추가 : 이 명령은 주어진 열 (또는 열)에 대해 PRIMARY KEY 인덱스를 추가합니다.
아래 예에서는 Employee 테이블을 사용하고 PRIMARY KEY 인덱스를 'Id'열에 추가합니다.
ALTER TABLE employee ADD PRIMARY KEY (id);
# 2) 고유 추가 : 주어진 열에 대해 고유 인덱스를 추가하거나 생성합니다.
가정적으로 우리는 테이블에서 고유 한 이름을 원한다고 가정합니다. 아래와 같이 Employee 테이블의 'name'열에 UNIQUE 인덱스를 추가합니다.
ALTER TABLE employee ADD UNIQUE (name);
# 3) INDEX 추가 : 열에 대해 일반 색인을 추가하십시오.
Employee 테이블의 'address'필드에 일반 색인을 추가하십시오.
ALTER TABLE employee ADD INDEX (name);
# 4) FULLTEXT 인덱스 추가 : 이것은 텍스트 검색 목적으로 사용되는 특수한 유형의 색인입니다.
Employee 테이블의 'name'열 값에 FULLTEXT 인덱스를 추가합니다.
ALTER TABLE employee ADD FULLTEXT(address);
위의 4 가지 예 모두에 대해 테이블 만들기 표시 작성된 색인에 대한 세부 사항을 가져 오려면 명령을 사용하십시오.
SHOW CREATE TABLE employee;
표 | 테이블 만들기 |
---|---|
종업원 | CREATE TABLE`employee` ( `name` varchar (100) DEFAULT NULL, `id` int NOT NULL, `address` varchar (100) DEFAULT NULL, `department_id` int DEFAULT NULL, 기본 키 (`id`), 고유 키`이름`(`이름`), 키`name_2` (`name`), FULLTEXT KEY`address` (`address`) ) 엔진 = InnoDB DEFAULT CHARSET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci |
위의 출력에서 모든 인덱스가 create_table 열의 값에 따라 생성되었음을 알 수 있습니다.
인덱스 생성과 유사하게 ALTER 명령을 사용하여 테이블에서 기존 인덱스를 삭제할 수도 있습니다.
예:
ALTER TABLE employee DROP INDEX address;
위의 명령은 주소 필드에 추가 한 FULLTEXT 인덱스를 삭제합니다.
이름에 주목 '주소'. 이는 출력의 색인 이름과 일치해야합니다. 테이블 만들기 표시 명령.
열 기본값 변경
ALTER TABLE 명령을 사용하여 기존 열의 DEFAULT 값을 설정 / 변경할 수도 있습니다.
QA 테스트에서 경력을 시작하는 방법
department_id 열의 기본값을 '1'로 변경하는 예를 살펴 보겠습니다. 이를 통해이 테이블에 대한 새 삽입은 department_id 열의 값을 1로 변경 / 설정합니다.
ALTER TABLE employee ALTER department_id SET DEFAULT 1
Employee 테이블에 새 레코드를 추가합니다.
INSERT INTO `employee` (`id`,`name`,`address`) VALUES (11,'Saket Sharma','NB 23 Domlur')
이제이 레코드에 대한 department_id를 쿼리하고 설정되는 값이 무엇인지 살펴 보겠습니다.
SELECT department_id FROM employee where id=11 //Output department_id 1
테이블 이름 업데이트
MySQL ALTER table 명령을 사용하여 기존 테이블의 이름을 업데이트 할 수도 있습니다. 때때로 스키마 구조를 업데이트해야하며, 테이블 이름 변경 / 업데이트가 포함될 수 있습니다.
예 - `employee` 테이블의 이름을`Employee_details`로 변경합니다.
ALTER TABLE table_name RENAME TO new_table_name;
자주 묻는 질문
Q # 1) MySQL에서 테이블 구조를 변경하려면 어떻게해야합니까?
대답: MySQL은 MySQL에서 기존 테이블의 구조를 변경하는 ALTER 명령을 제공합니다. ALTER 명령으로 다음과 같은 다양한 작업을 수행 할 수 있습니다.
- 열 추가 / 삭제
- 인덱스 또는 제약 추가 / 제거
- 테이블 이름 바꾸기
Q # 2) ALTER 명령은 테이블을 잠그나요?
대답: 버전에 따라 달라질 수 있습니다. 이전 버전의 MySQL은 ALTER 문을 실행하는 동안 테이블을 잠급니다. 일반적으로 잠금이 발생합니다. 즉, ALTER 중에 읽기 및 쓰기가 발생합니다.
예를 들면 – 기존 테이블에 새 열을 추가하면 열이 추가되는 테이블의 모든 행이 터치되고 테이블에 수백만 개의 레코드가있는 경우 ALTER 작업을 실행하는 데 시간이 걸릴 수 있습니다. 이 경우 데이터베이스가 다운되고 액세스 할 수 없기 때문에 읽기 / 쓰기에서 잠금이 발생하면 비용이 많이 듭니다.
Q # 3) ALTER 테이블에 둘 이상의 열을 추가 할 수 있습니까?
대답: 예, ALTER 명령을 사용하여 단일 문 내에 여러 열을 추가 할 수 있습니다.
열 ID, 이름 및 주소가 포함 된 Employee 테이블이있는 예를 살펴 보겠습니다. 이름이 가장 높은 열 2 개 (varchar 유형) 및 전화 번호 (varchar 유형)를 더 추가한다고 가정하겠습니다.
ALTER TABLE employee ADD highest_education VARCHAR(50), ADD phone_number VARCHAR(20);
테이블 정보를 살펴 보겠습니다.
SHOW COLUMNS FROM employee;
산출:
들 | 유형 | 없는 | 키 | 기본 | 특별한 |
---|---|---|---|---|---|
이름 | varchar (100) | 예 | 유나이티드 | 없는 | |
신분증 | int | 하지 마라 | PRI | 없는 | |
주소 | varchar (100) | 예 | 없는 | ||
부서 _ID | int | 예 | 1 | ||
최고 교육 | varchar (50) | 예 | 없는 | ||
전화 번호 | varchar (20) | 예 | 없는 |
위의 출력에서 가장 높은 교육 및 전화 번호가 추가 된 열을 볼 수 있습니다.
결론
이 튜토리얼에서 우리는 MySQL ALTER 테이블 명령. ALTER는 MySQL에서 기존 테이블의 구조를 변경하기 위해 여러 목적으로 사용할 수 있으므로 중요한 명령입니다.
열 추가 / 제거, 인덱스 또는 제약 조건 추가 / 삭제와 같은 작업에 사용할 수 있으며 기존 테이블의 이름을 바꾸는데도 사용할 수 있습니다.
MySQL을 배우는 사람은 기존 테이블 스키마를 변경해야하는 데이터베이스의 유지 관리 단계에서 주로 사용되므로 ALTER table 명령에 대해 깊이 이해하고 있어야합니다.
추천 도서
- 예제가 포함 된 MySQL 테이블 만들기 자습서
- MySQL Insert Into Table – Insert 문 구문 및 예
- MySQL 데이터 유형 | MySQL의 다른 데이터 유형은 무엇입니까
- 예제가 포함 된 MySQL FOREIGN KEY 제약 조건의 기초
- MySQL JOIN 튜토리얼 : 내부, 외부, 십자가, 왼쪽, 오른쪽 및 자기
- MySQL 데이터베이스 만들기-MySQL에서 데이터베이스를 만드는 방법
- Top 40 최고의 MySQL 인터뷰 질문 및 답변 (2021 질문)
- C ++의 해시 테이블 : 해시 테이블 및 해시 맵을 구현하는 프로그램