[옵션 수정]"."/> [옵션 수정]".">

 >  기사  >  데이터 베이스  >  mysql 데이터베이스 테이블을 수정하는 방법은 무엇입니까?

mysql 데이터베이스 테이블을 수정하는 방법은 무엇입니까?

青灯夜游
青灯夜游원래의
2020-10-02 09:46:0716059검색

mysql 데이터베이스 테이블 수정 방법: "ALTER TABLE" 문을 사용하여 필드 추가 또는 삭제, 원래 필드 데이터 유형 수정, 필드 또는 테이블 이름 바꾸기, 테이블 문자 집합 수정 등 원래 테이블의 구조를 변경합니다. 등. ;구문 "ALTER TABLE 34cd3e9c1174c81e3622d1820b4b2875 [옵션 수정]".

mysql 데이터베이스 테이블을 수정하는 방법은 무엇입니까?

데이터 테이블을 수정하기 위한 전제 조건은 해당 테이블이 데이터베이스에 이미 존재해야 한다는 것입니다. 테이블 수정은 데이터베이스에 있는 기존 데이터 테이블의 구조를 수정하는 것을 의미합니다. 데이터베이스 관리에서도 데이터 테이블 수정 작업은 필수입니다. 스케치를 그리는 것과 마찬가지로 너무 많이 그리면 지우개로 지울 수 있고, 너무 적게 그리면 펜으로 추가하면 됩니다.

데이터 테이블 수정 방법을 이해하지 못하는 것은 실수만 하면 버리고 다시 그리는 것과 같아서 불필요한 비용이 증가합니다.

MySQL에서는 ALTER TABLE 문을 사용하여 열 추가 또는 삭제, 원래 열 유형 변경, 열 또는 테이블 이름 바꾸기 등 원본 테이블의 구조를 변경할 수 있습니다.

구문 형식은 다음과 같습니다.

ALTER TABLE <表名> [修改选项]

수정 옵션의 구문 형식은 다음과 같습니다.

{ ADD COLUMN <列名> <类型>
| CHANGE COLUMN <旧列名> <新列名> <新列类型>
| ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT }
| MODIFY COLUMN <列名> <类型>
| DROP COLUMN <列名>
| RENAME TO <新表名>
| CHARACTER SET <字符集名>
| COLLATE <校对规则名> }

테이블 이름을 수정합니다.

MySQL은 ALTER TABLE 문을 사용하여 테이블 이름을 수정합니다. 규칙은 다음과 같습니다.

ALTER TABLE <旧表名> RENAME [TO] <新表名>;

그 중 TO는 선택적 매개변수로 사용 여부에 관계없이 결과에 영향을 미치지 않습니다.

예제 1

ALTER TABLE을 사용하여 학생 데이터 테이블의 이름을 tb_students_info로 변경합니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> ALTER TABLE student RENAME TO tb_students_info;
Query OK, 0 rows affected (0.01 sec)
mysql> SHOW TABLES;
+------------------+
| Tables_in_test   |
+------------------+
| tb_students_info |
+------------------+
1 row in set (0.00 sec)

팁: 테이블 이름을 수정해도 테이블의 구조는 변경되지 않으므로 이름을 수정한 후의 테이블 구조는 이름을 수정하기 전의 테이블과 동일합니다. 사용자는 DESC 명령을 사용하여 수정된 테이블 구조를 볼 수 있으며

테이블 문자 집합을 수정

MySQL은 ALTER TABLE 문을 사용하여 테이블 문자 집합을 수정합니다.

ALTER TABLE 表名 [DEFAULT] CHARACTER SET <字符集名> [DEFAULT] COLLATE <校对规则名>;

Among DEFAULT는 선택사항입니다. 매개변수는 사용 여부에 관계없이 결과에 영향을 주지 않습니다.

예제 2

ALTER TABLE을 사용하여 데이터 테이블 tb_students_info의 문자 집합을 gb2312로 수정하고 대조 규칙을 gb2312_chinese_ci로 수정합니다. SQL 문과 실행 결과는 아래와 같습니다.

mysql> ALTER TABLE tb_students_info CHARACTER SET gb2312  DEFAULT COLLATE gb2312_chinese_ci;
Query OK, 0 rows affected (0.08 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> SHOW CREATE TABLE tb_students_info \G
*************************** 1. row ***************************
       Table: tb_students_info
Create Table: CREATE TABLE `tb_students_info` (
  `id` int(11) NOT NULL,
  `name` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=gb2312
1 row in set (0.00 sec)

MySQL 데이터 테이블에 필드 추가

MySQL 데이터 테이블은 행과 열로 구성됩니다. 일반적으로 테이블의 "열"을 필드(Field)라고 하며, 테이블의 "행"을 필드(Field)라고 합니다. 기록(기록)). 비즈니스가 변경됨에 따라 기존 테이블에 새 필드를 추가해야 할 수도 있습니다.

MySQL에서는 시작, 중간, 끝 부분에 필드를 추가할 수 있습니다.

끝에 필드 추가

완전한 필드에는 필드 이름, 데이터 유형 및 제약 조건이 포함됩니다. MySQL에서 필드를 추가하는 구문 형식은 다음과 같습니다.

ALTER TABLE <表名> ADD <新字段名><数据类型>[约束条件];

구문 형식에 대한 설명은 다음과 같습니다. | 추가할 필드는 데이터를 저장할 수 있습니다.

  • [constraints]는 선택 사항이며 추가된 필드를 제한하는 데 사용됩니다.

  • 이 구문 형식은 기본적으로 테이블의 마지막 위치(마지막 열 뒤)에 새 필드를 추가합니다.

  • 참고: 이 섹션에서는 새 필드만 추가하고 제약 조건에는 주의를 기울이지 않습니다.
  • Example

  • 테스트 데이터베이스에 새 학생 데이터 테이블을 생성합니다. SQL 문 및 실행 결과는 다음과 같습니다.
  • mysql> USE test;
    Database changed
    mysql> CREATE TABLE student (
        -> id INT(4),
        -> name VARCHAR(20),
        -> sex CHAR(1));
    Query OK, 0 rows affected (0.09 sec)

    DESC를 사용하여 학생 테이블 구조를 보려면 다음과 같습니다.

    mysql> DESC student;
    +-------+-------------+------+-----+---------+-------+
    | Field | Type        | Null | Key | Default | Extra |
    +-------+-------------+------+-----+---------+-------+
    | id    | int(4)      | YES  |     | NULL    |       |
    | name  | varchar(20) | YES  |     | NULL    |       |
    | sex   | char(1)     | YES  |     | NULL    |       |
    +-------+-------------+------+-----+---------+-------+
    3 rows in set (0.01 sec)
  • ALTER TABLE 문을 사용하여 INT 유형을 추가합니다. age 필드, SQL 문 및 실행 결과는 다음과 같습니다.

mysql> ALTER TABLE student ADD age INT(4);
Query OK, 0 rows affected (0.16 sec)
Records: 0  Duplicates: 0  Warnings: 0

DESC를 사용하여 학생 테이블 구조를 보고 age 필드가 성공적으로 추가되었는지 확인합니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(4)      | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
| age   | int(4)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
4 rows in set (0.00 sec)

실행 결과에서 볼 수 있듯이 학생 테이블에 age 필드가 추가되었으며 해당 필드는 테이블의 마지막 위치에 성공적으로 추가되었습니다. .

처음에 필드 추가

MySQL은 기본적으로 테이블의 마지막 위치에 새 필드를 추가합니다. 처음(첫 번째 열 앞)에 새 필드를 추가하려면 다음을 사용하세요. FIRST 키워드 구문 형식은 다음과 같습니다.

ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] FIRST;

FIRST 키워드는 일반적으로 문의 끝에 배치됩니다.

예제

ALTER TABLE 문을 사용하여 테이블의 첫 번째 열에 INT 유형 필드 stuId를 추가합니다. SQL 문과 실행 결과는 다음과 같습니다.

mysql> ALTER TABLE student ADD stuId INT(4) FIRST;
Query OK, 0 rows affected (0.14 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| stuId | int(4)      | YES  |     | NULL    |       |
| id    | int(4)      | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
| age   | int(4)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

실행 결과를 보면 stuId 필드가 학생 테이블에 추가되었으며 해당 필드가 테이블의 첫 번째 위치에 성공적으로 추가된 것을 볼 수 있습니다.

중간 위치에 필드 추가

테이블의 시작과 끝 부분에 필드를 추가할 수 있을 뿐만 아니라 MySQL에서는 중간 위치(지정된 필드 뒤)에도 필드를 추가할 수 있습니다. , AFTER 키워드, 구문 형식을 사용해야 합니다. 다음과 같이

ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] AFTER <已经存在的字段名>;

AFTER는 기존 필드 뒤에 새 필드를 추가하는 데 사용됩니다.

새 필드는 기존 필드 뒤에만 추가할 수 있고 앞에는 추가할 수 없습니다.

使用 ALTER TABLE 语句在 student 表中添加名为 stuno,数据类型为 INT 的字段,stuno 字段位于 name 字段的后面。SQL 语句和运行结果如下:

mysql> ALTER TABLE student ADD stuno INT(11) AFTER name;
Query OK, 0 rows affected (0.13 sec)
Records: 0  Duplicates: 0  Warnings: 0
 
mysql> DESC student;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| stuId | int(4)      | YES  |     | NULL    |       |
| id    | int(4)      | YES  |     | NULL    |       |
| name  | varchar(20) | YES  |     | NULL    |       |
| stuno | int(11)     | YES  |     | NULL    |       |
| sex   | char(1)     | YES  |     | NULL    |       |
| age   | int(4)      | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

由运行结果可以看到,student 表中已经添加了 stuId 字段,且该字段在 name 字段后面的位置,添加字段成功。

MySQL 修改和删除数据表字段

修改字段名称

MySQL 中修改表字段名的语法规则如下:

ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;

其中:

  • 旧字段名:指修改前的字段名;

  • 新字段名:指修改后的字段名;

  • 新数据类型:指修改后的数据类型,如果不需要修改字段的数据类型,可以将新数据类型设置成与原来一样,但数据类型不能为空。

使用 ALTER TABLE 修改表 tb_emp1 的结构,将 col1 字段名称改为 col3,同时将数据类型变为 CHAR(30),SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_emp1
    -> CHANGE col1 col3 CHAR(30);
Query OK, 0 rows affected (0.76 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_emp1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| col3   | char(30)    | YES  |     | NULL    |       |
| id     | int(11)     | YES  |     | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float        | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.01 sec)

CHANGE 也可以只修改数据类型,实现和 MODIFY 同样的效果,方法是将 SQL 语句中的“新字段名”和“旧字段名”设置为相同的名称,只改变“数据类型”。

提示:由于不同类型的数据在机器中的存储方式及长度并不相同,修改数据类型可能会影响数据表中已有的数据记录,因此,当数据表中已经有数据时,不要轻易修改数据类型。

修改字段数据类型

修改字段的数据类型就是把字段的数据类型转换成另一种数据类型。在 MySQL 中修改字段数据类型的语法规则如下:

ALTER TABLE <表名> MODIFY <字段名> <数据类型>

其中:

  • 表名:指要修改数据类型的字段所在表的名称;

  • 字段名:指需要修改的字段;

  • 数据类型:指修改后字段的新数据类型。

使用 ALTER TABLE 修改表 tb_emp1 的结构,将 name 字段的数据类型由 VARCHAR(22) 修改成 VARCHAR(30),SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_emp1
    -> MODIFY name VARCHAR(30);
Query OK, 0 rows affected (0.15 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_emp1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| col1   | int(11)     | YES  |     | NULL    |       |
| id     | int(11)     | YES  |     | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| col2   | int(11)     | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float        | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
6 rows in set (0.00 sec)

语句执行后,发现表 tb_emp1 中 name 字段的数据类型已经修改成 VARCHAR(30),修改成功。

删除字段

删除字段是将数据表中的某个字段从表中移除,语法格式如下:

ALTER TABLE <表名> DROP <字段名>;

其中,“字段名”指需要从表中删除的字段的名称。

使用 ALTER TABLE 修改表 tb_emp1 的结构,删除 col2 字段,SQL 语句和运行结果如下所示。

mysql> ALTER TABLE tb_emp1
    -> DROP col2;
Query OK, 0 rows affected (0.53 sec)
Records: 0  Duplicates: 0  Warnings: 0
mysql> DESC tb_emp1;
+--------+-------------+------+-----+---------+-------+
| Field  | Type        | Null | Key | Default | Extra |
+--------+-------------+------+-----+---------+-------+
| col1   | int(11)     | YES  |     | NULL    |       |
| id     | int(11)     | YES  |     | NULL    |       |
| name   | varchar(30) | YES  |     | NULL    |       |
| deptId | int(11)     | YES  |     | NULL    |       |
| salary | float        | YES  |     | NULL    |       |
+--------+-------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

推荐教程:mysql视频教程

위 내용은 mysql 데이터베이스 테이블을 수정하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.