디렉토리
데이터 테이블을 수정 MYSQL
그것은 기존의 데이터 테이블을 수정하는 데이터베이스에 수정 된 테이블 구조를 의미한다. 테이블을 수정하려면 ALTER TABLE 문을 사용하여 MYSQL. 작업은 일반적으로 테이블을 수정하는 데 사용됩니다 추가 및 필드 삭제, 테이블 이름을 수정할 필드 이름 또는 데이터의 필드 유형을 수정, 필드의 배열 위치는 변경 테이블 스토리지 엔진을 수정 외래 키 테이블 제약 조건을 제거합니다.
1 테이블 이름을 수정
다음과 같이 MySQL이 ALTER TABLE 문의 테이블 이름을 수정하여 달성, 특정 구문 규칙은 다음과 같습니다
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
제품에 사용 선택하지인지 어디 결과에 영향을 미친다.
[실시 예] : 데이터 테이블 tb_dept1 변경 tb_deptment1;
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| tb_dept1 |
| tb_emp1 |
| tb_emp5 |
+-------------------+
3 rows in set (0.00 sec)
mysql> alter table tb_dept1 rename tb_deptment1;
Query OK, 0 rows affected (0.22 sec)
mysql> show tables;
+-------------------+
| Tables_in_test_db |
+-------------------+
| tb_deptment1 |
| tb_emp1 |
| tb_emp5 |
+-------------------+
3 rows in set (0.00 sec)
2 변형 데이터 타입 필드
필드 데이터 형식을 수정, 데이터 유형 필드는 다른 데이터 형식으로 변환됩니다.
MySQL의에서 수정 구문 규칙 필드 유형의 데이터는 다음과 같습니다 :
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
테이블 "테이블 이름"의 이름은 단순히 더 필드의 데이터 형식을 수정하려면 "필드의 이름이"수정 될 현장의 요구를 의미하는 경우, "데이터 유형은"수정 된 데이터 필드의 새로운 유형을 말한다.
[예]를 VARCHAR VARCHAR (22)에 의해 수정 데이터 테이블 tb_deptl 이름 필드 (30)에서의 데이터 유형.
테이블 이름을 수정하는 작업을 수행하기 전에 DESC의 tb_dept 테이블 구조, 다음과 같은 결과를 볼 수 :
mysql> desc tb_dept1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(22) | NO | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.06 sec)
mysql> alter table tb_dept1 modify name varchar(30);
Query OK, 0 rows affected (0.36 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb_dept1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.89 sec)
3 필드 이름을 수정
다음과 같이 수정 MySQL의 테이블 필드 이름의 구문 규칙은 다음과 같습니다 :
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
유형 필드가 새로운 될 수있는 경우 "새로운 데이터 유형"은 수정 될 필요가 수정 된 데이터의 데이터 유형을 말한다있어서, "오래된 필드 이름"필드 이름을 변경하기 전에을 말한다 "새 필드의 이름이"수정 된 필드 이름을 참조 데이터 유형은 원래 동일 제공 될 수 있지만, 데이터 유형은 비어있을 수 없다.
다음 [예] tb_dept1의 LOC에 테이블 내의 위치 데이터 필드 명, 데이터 타입, SQL 문 변하지 :
ALTER TABLE tb_deptl CHANGE location loc VARCHAR(50);
mysql> desc tb_dept1;
+----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| location | varchar(50) | YES | | NULL | |
+----------+-------------+------+-----+---------+-------+
3 rows in set (0.04 sec)
mysql> alter table tb_dept1 change location loc varchar(50);
Query OK, 0 rows affected (0.38 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb_dept1;
+-------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| loc | varchar(50) | YES | | NULL | |
+-------+-------------+------+-----+---------+-------+
3 rows in set (0.02 sec)
4 추가 필드
비즈니스 요구 변화에 따라, 당신은 테이블에 이미 존재하는 새로운 필드를 추가해야 할 수도 있습니다. 필드 이름, 데이터 유형, 무결성 제약 조건을 포함하여 전체 필드. 다음과 같이 추가 필드 구문은 다음과 같습니다
ALTER TABLE<表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在字段名];
우리는 필드의 이름라는 새로운 필드를 추가 할 필요가;
"FIRST"는 그 역할이 새롭게 테이블의 첫 번째 필드에 필드 세트를 추가, 선택 사항입니다;
"AFTER"선택 사항이며, 그 역할은 지정된 "기존의 필드 이름"의 뒷면에 추가 된 새로운 필드를 추가하는 것입니다.
4.1 필드에는 무결성 제약 조건을 추가하지
[예]를 INT 타입 필드 관리자 ID 데이터 테이블 tb_deptl의 무결성 제약 (관리 번호)없이 추가,
다음과 같이 SQL 문은 다음과 같습니다
mysql> alter table tb_dept1 add managerId int(10);
Query OK, 0 rows affected (0.35 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb_dept1;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| loc | varchar(50) | YES | | NULL | |
| managerId | int(10) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
4 rows in set (0.50 sec)
무결성 제약 조건의 4.2 추가 필드
다음과 같이 예를 들면, 데이터 타입 필드의 columnI tb_deptl 테이블에 SQL 문을하지 않은 널 VARCHAR (12)를 추가
mysql> alter table tb_dept1 add column1 varchar(12) not null;
Query OK, 0 rows affected (0.25 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb_dept1;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| loc | varchar(50) | YES | | NULL | |
| managerId | int(10) | YES | | NULL | |
| column1 | varchar(12) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
5 rows in set (0.03 sec)
4.3 테이블의 첫 번째 열의 필드 추가
다음과 같이 데이터 테이블 tb_dept1의 2 열에서의 int 형 필드를 추가, SQL 문은 다음과 같습니다
mysql> alter table tb_dept1 add column2 int(11) first;
Query OK, 0 rows affected (1.44 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb_dept1;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| column2 | int(11) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| loc | varchar(50) | YES | | NULL | |
| managerId | int(10) | YES | | NULL | |
| column1 | varchar(12) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.64 sec)
테이블의 지정된 열 후 4.4 필드 추가
[예] 상기 데이터 테이블의 이름 열 tb_dept1 INT의 3 열 타입 필드를 추가 한 후, SQL 문장은 다음된다 :
mysql> alter table tb_dept1 add column3 int(11) after name;
Query OK, 0 rows affected (0.60 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb_dept1;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| column2 | int(11) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| column3 | int(11) | YES | | NULL | |
| loc | varchar(50) | YES | | NULL | |
| managerId | int(10) | YES | | NULL | |
| column1 | varchar(12) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
7 rows in set (0.02 sec)
5 삭제 필드
구문은 다음과 같은 필드가 상기 테이블에서 제거되고 데이터 테이블의 필드 삭제
ALER TABLE <表名> DROP <字段名>
"필드 이름은"테이블 tb_dept1 테이블에서 필요의 2 열 필드를 참조
[실시 예 5] 삭제 필드 데이터 테이블 2 열 테이블 tb_dept1
mysql> alter table tb_dept1 drop column2;
Query OK, 0 rows affected (0.66 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb_dept1;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| column3 | int(11) | YES | | NULL | |
| loc | varchar(50) | YES | | NULL | |
| managerId | int(10) | YES | | NULL | |
| column1 | varchar(12) | NO | | NULL | |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.32 sec)
필드 6 변형 배치 위치
데이터 테이블, 생성 시간에, 순서 테이블의 필드가 결정되고있다.
그러나이 구조는 테이블의 상대적 위치는 ALTER TABLE 통해 현장에서 변경 될 수 있고, 완전히 테이블이 변경 될 수 없다. 다음과 같은 구문은 다음과 같습니다
ALTER TABLE <表名> MODIFY <字段1> <数据类型> FIRST|AFTER <字段2>;
"필드 1"필드에 단순히 더 많은 변형 사이트 "데이터 형식"이라 함은 "필드 1"데이터 형식
"우선"선택 사항은 "필드 1"은 테이블의 첫 번째 필드로 변경을 의미
"필드가 AFTER 2"이하 "필드 2"로 "필드 1"을 의미한다.
6.1 테이블의 첫 번째 필드의 필드를 수정
[예] 테이블의 첫 번째 필드 내의 필드 데이터 테이블 컬럼 1의 tb_dept1 수정, SQL 문으로서 다음과 같다 :
mysql> alter table tb_dept1 modify column1 varchar(12) first;
Query OK, 0 rows affected (1.11 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb_dept1;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| column1 | varchar(12) | YES | | NULL | |
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| column3 | int(11) | YES | | NULL | |
| loc | varchar(50) | YES | | NULL | |
| managerId | int(10) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.18 sec)
6.2 목록 다음 지정된 필드를 수정합니다
[실시 예]는 필드 데이터 테이블 tb_dept1의 컬럼 1의 위치 필드 뒤에 삽입 SQL 문장은 다음이다 :
mysql> alter table tb_dept1 modify column1 varchar(12) after location;
Query OK, 0 rows affected (1.96 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> desc tb_dept1;
+-----------+-------------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-----------+-------------+------+-----+---------+-------+
| id | int(11) | NO | PRI | NULL | |
| name | varchar(30) | YES | | NULL | |
| column3 | int(11) | YES | | NULL | |
| location | varchar(50) | YES | | NULL | |
| column1 | varchar(12) | YES | | NULL | |
| managerId | int(10) | YES | | NULL | |
+-----------+-------------+------+-----+---------+-------+
6 rows in set (0.02 sec)
테이블 기억 엔진 7 명 변경
MySQL의 스토리지 엔진 지원
엔진 이름 | 지원 |
---|---|
FEDERATED | 아니오 |
MRG의 MYISAM | 그것은이다 |
MYISAM | 그것은이다 |
블랙홀 | 그것은이다 |
CSV | 그것은이다 |
기억 | 그것은이다 |
ARCHIVE | 그것은이다 |
이노 | 그것은이다 |
성능 SCHEMA | 디폴트 값 |
[예] 테이블 데이터 스토리지 엔진은 tb_emp1의 MyISAM 수정;
mysql> alter table tb_emp1 engine=MyISAM;
Query OK, 0 rows affected (0.18 sec)
Records: 0 Duplicates: 0 Warnings: 0
mysql> show create table tb_emp1\G;
*************************** 1. row ***************************
Table: tb_emp1
Create Table: CREATE TABLE `tb_emp1` (
`id` int(11) DEFAULT NULL,
`name` varchar(25) DEFAULT NULL,
`deptId` int(11) DEFAULT NULL,
`salary` float DEFAULT NULL
) ENGINE=MyISAM DEFAULT CHARSET=latin1
1 row in set (0.01 sec)
ERROR:
No query specified
표 8 삭제 외래 키 제약 조건
외래 키는 데이터베이스에 정의 된 경우, 더 이상 필요하지, 당신은 그것을 삭제할 수 있습니다. 당신이 외부 키를 제거하면 기본 테이블을 들어 올려 관계에서 테이블 간의됩니다,
MySQL은 다음과 같이 외래 키 구문은 삭제합니다 :
ALTER TABLE <表名> DROP FOREIGN KEY <外键约束名>
"외래 키 제약 조건 이름은"다음 매개 변수 정의 테이블을 참조 할 때 키워드 CONSTRAINT