MySQLノートの修正表の実現方法

4503 ワード

テーブルの作成中に不備を考慮することは避けられないため、後でテーブルを変更します.
テーブルの変更にはalter table文が必要です
テーブル名の変更
 
  
mysql> alter table student rename person;
Query OK, 0 rows affected (0.03 sec)

ここのstudentは原名で、personは修正された名前です
renameで名前を変更するか、rename toを使用することもできます
もう一つの方法はrename table old_name to new_name
フィールドのデータ型の変更
 
  
mysql> alter table person modify name varchar(20);
Query OK, 0 rows affected (0.18 sec)
Records: 0  Duplicates: 0  Warnings: 0

ここでmodifyの後ろのnameはフィールド名で、元のvarchar(25)をvarchar(20)に変更します.
フィールド名の変更
 
  
mysql> alter table person change stu_name name varchar(25);
Query OK, 0 rows affected (0.20 sec)
Records: 0  Duplicates: 0  Warnings: 0

ここでstu_nameは原名、nameは新名
データ型を変更するかどうかにかかわらず、後のデータ型は書くことに注意してください.
データ型を変更しなければ元のデータ型に書けばよい
tips:modifyの効果を達成するにはchangeを使用します.その後に同じフィールド名を書くだけです.
完全性のない制約を追加するフィールド
 
  
mysql> alter table person add sex boolean;
Query OK, 0 rows affected (0.21 sec)
Records: 0  Duplicates: 0  Warnings: 0

ここでsexの後ろにはデータ型のみが付いており、整合性制約はありません.
整合性制約のあるフィールドを追加
 
  
mysql> alter table person add age int not null;
Query OK, 0 rows affected (0.17 sec)
Records: 0  Duplicates: 0  Warnings: 0

ここにageフィールドを追加し、not null整合性制約を追加します.
追加の整合性制約の追加
 
  
mysql> ALTER TABLE person ADD PRIMARY KEY(id);
Query OK, 0 rows affected (0.18 sec)
Records: 0  Duplicates: 0  Warnings: 0

ここでもマルチフィールド設定に使用します
ヘッダーにフィールドを追加
 
  
mysql> alter table person add num int primary key first;
Query OK, 0 rows affected (0.20 sec)
Records: 0  Duplicates: 0  Warnings: 0

デフォルトではフィールドの追加は表の最後に追加され、追加文の後にfirstを付けるとヘッダーに追加されます.
指定した場所にフィールドを追加
 
  
mysql> alter table person add birth date after name;
Query OK, 0 rows affected (0.20 sec)
Records: 0  Duplicates: 0  Warnings: 0

ここに新しいフィールドを追加してnameフィールドの後ろに置きます
tips:テーブル内のフィールドのソートはテーブルにあまり影響しませんが、より合理的なソートはテーブルの理解に便利です.
フィールドの削除
 
  
mysql> alter table person drop sex;
Query OK, 0 rows affected (0.18 sec)
Records: 0  Duplicates: 0  Warnings: 0

前にテーブルやデータベースを削除したのと同じようにdropも必要です
異なる点は、フィールドを削除するにはalter tableでテーブル名を付けることです.
フィールドを最初の場所に変更
 
  
mysql> alter table person modify id int first;
Query OK, 0 rows affected (0.20 sec)
Records: 0  Duplicates: 0  Warnings: 0

firstは前述したように、フィールドの後ろにデータ型を書くことに注意してください.
フィールドを指定した場所に変更
 
  
mysql> alter table person modify name varchar(25) after id;
Query OK, 0 rows affected (0.18 sec)
Records: 0  Duplicates: 0  Warnings: 0

nameフィールドをidの後ろに置きました.ここのvarchar(25)は全部書きます.varcharはだめです.
以上の手順を行う前にdesc tableを推奨します.
テーブルのストレージエンジンの変更
 
  
mysql> alter table user rename person;
Query OK, 0 rows affected (0.05 sec)

ここでは、各ストレージエンジンの特徴を具体的に説明するのではなく、内容が多い
修正が終わったらshow create table文で確認するのを忘れないでください.第3節には書き方があります.
tips:テーブルに多くのデータが存在する場合は、ストレージエンジンを簡単に変更しないでください.
テーブルの外部キーを追加
 
  
mysql> alter table score add constraint fk foreign key(stu_id) references student(id);
Query OK, 10 rows affected (0.18 sec)
Records: 10  Duplicates: 0  Warnings: 0

ここではaddを使用して追加するだけで、後述の構文は第4節の外部キー設定を参照してください.
プライマリ・キーの削除
 
  
mysql> ALTER TABLE person DROP PRIMARY KEY;
Query OK, 0 rows affected (0.22 sec)
Records: 0  Duplicates: 0  Warnings: 0

プライマリ・キーに別名がないためdropを使用するとすべてのプライマリ・キーが削除されます
テーブルの外部キー制約の削除
 
  
mysql> alter table student3 drop foreign key fk;
Query OK, 0 rows affected (0.18 sec)
Records: 0  Duplicates: 0  Warnings: 0

基本的なテーブル構造の説明では外部キーを表示できないため、show create tableを使用してテーブルを表示することをお勧めします.
ここのfkは設定したばかりの外部キーです
関連するテーブルを削除するには、外部キーを削除する必要があります.
外部キーを削除すると、元のキーが通常キーになります
テーブルを削除する操作については、第3節に書き込みがあり、外部キーを第4節に設定しても書き込みがあります.
表を作成するときに外部キーが設定されていない場合は、上記の方法を使用します.