ホームページ >データベース >mysql チュートリアル >mysql がテーブル構造を変更するために使用するステートメントは何ですか?
テーブル構造を変更する Mysql ステートメントは「ALTER TABLE」です。このステートメントは、列の追加または削除、元の列タイプの変更、列またはテーブルの名前変更など、元のテーブルの構造を変更できます。 ; 構文形式は「ALTER TABLE [オプションの変更]」です。
このチュートリアルの動作環境: Windows7 システム、mysql8 バージョン、Dell G3 コンピューター。
テーブル構造を変更するMysqlステートメントは「ALTER TABLE」です。
ALTER TABLE
ステートメントは、列の追加または削除、インデックスの作成またはキャンセル、元の列タイプの変更、列またはテーブルの名前変更など、元のテーブルの構造を変更できます。等。
MySQL は、ALTER TABLE ステートメントを使用してテーブルを変更します。テーブルを変更するために一般的に使用される操作には、テーブル名の変更、フィールドのデータ型またはフィールド名の変更、フィールドの追加と削除、フィールドの配置の変更、テーブルのストレージ エンジンの変更、テーブルの外部キー制約の削除などが含まれます。
一般的に使用される構文形式は次のとおりです:
ALTER TABLE <表名> [修改选项]
オプションを変更するための構文形式は次のとおりです:
{ ADD COLUMN <列名> <类型> | CHANGE COLUMN <旧列名> <新列名> <新列类型> | ALTER COLUMN <列名> { SET DEFAULT <默认值> | DROP DEFAULT } | MODIFY COLUMN <列名> <类型> | DROP COLUMN <列名> | RENAME TO <新表名> | CHARACTER SET <字符集名> | COLLATE <校对规则名> }
フィールドの追加
ビジネスの変化に伴い、既存のテーブルに新しいフィールドを追加することが必要になる場合があります。完全なフィールドには、フィールド名、データ型、整合性制約が含まれます。フィールドを追加する構文形式は次のとおりです:
ALTER TABLE <表名> ADD <新字段名> <数据类型> [约束条件] [FIRST|AFTER 已存在的字段名];
新しいフィールド名は追加する必要があるフィールドの名前です。FIRST はオプションのパラメータであり、その機能は新しく追加されたフィールドを次のように設定することです。テーブルの最初のフィールド。AFTER はオプションのパラメーターであり、その機能は、指定された既存のフィールド名の後に新しく追加されたフィールドを追加することです。
【例1】ALTER TABLEを使用してテーブルtb_emp1の構造を変更し、テーブルの1列目にint型フィールドcol1を追加する場合の入力SQL文と実行結果は以下のとおりです。
mysql> ALTER TABLE tb_emp1 -> ADD COLUMN col1 INT FIRST; Query OK, 0 rows affected (0.94 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(25) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 5 rows in set (0.00 sec)
ヒント: 「FIRST または AFTER 既存のフィールド名」は、テーブル内の新しいフィールドの位置を指定するために使用されます。SQL ステートメントにこれら 2 つのパラメーターがない場合、新しく追加されたフィールドが設定されます。デフォルトでは to データテーブルの最後の列。
[例2] ALTER TABLEを使用してテーブルtb_emp1の構造を変更し、name列の後にint型フィールドcol2を追加する場合の入力SQL文と実行結果は以下のとおりです。
mysql> ALTER TABLE tb_emp1 -> ADD COLUMN col2 INT AFTER name; Query OK, 0 rows affected (0.50 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(25) | YES | | NULL | | | col2 | int(11) | YES | | NULL | | | deptId | int(11) | YES | | NULL | | | salary | float | YES | | NULL | | +--------+-------------+------+-----+---------+-------+ 6 rows in set (0.00 sec)
ご覧のとおり、col2 という名前のフィールドがテーブル tb_emp1 に追加されました。その位置は、指定された名前フィールドの後ろにあります。フィールドは正常に追加されました。
フィールドのデータ型の変更
フィールドのデータ型の変更とは、フィールドのデータ型を別のデータ型に変換することです。 MySQL でフィールドのデータ型を変更するための構文規則は次のとおりです。
ALTER TABLE <表名> MODIFY <字段名> <数据类型>
このうち、テーブル名は、データ型を変更する必要があるフィールドが配置されているテーブルの名前を指します。は変更する必要があるフィールドを指し、データ型は変更されたフィールドを指します。新しいデータ型。
[例 3] 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 <字段名>;
このうち、フィールド名はテーブルから削除する必要があるフィールドの名前を指します。
[例 4] 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 でテーブルのフィールド名を変更するための構文規則は次のとおりです。
ALTER TABLE <表名> CHANGE <旧字段名> <新字段名> <新数据类型>;
Among古いフィールド名は変更前のフィールド名を指します。新しいフィールド名は変更されたフィールド名を指します。新しいデータ型は変更されたデータ型を指します。フィールドのデータ型を変更する必要がない場合は、では、新しいデータ型を元のデータ型と同じに設定できますが、データ型を空にすることはできません。
[例5] 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 ステートメントを使用してテーブル名を変更します。構文規則は次のとおりです:
ALTER TABLE <旧表名> RENAME [TO] <新表名>;
このうち、TO はオプションのパラメータであり、使用してもしなくても結果には影響しません。
[例6] ALTER TABLEを使用してデータテーブルの名前をtb_emp1からtb_emp2に変更する 入力したSQL文と実行結果は以下のとおりです。
mysql> ALTER TABLE tb_emp1 -> RENAME TO tb_emp2; mysql> SHOW TABLES; +--------------------+ | Tables_in_test_db | +--------------------+ | tb_emp2 | +--------------------+ 1 rows in set (0.00 sec)
提示:用户可以在修改表名称时使用 DESC 命令查看修改后两个表的结构,修改表名并不修改表的结构,因此修改名称后的表和修改名称前的表的结构是相同的。
【相关推荐:mysql视频教程】
以上がmysql がテーブル構造を変更するために使用するステートメントは何ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。