MySQLのデータテーブルの制御文

ボーエン概要:

  • まず、制約の関連書類
    • 主キー制約
    • 非空制約
    • のみの設定値
    • 列のデフォルト値を設定します
    • 付加価値から設定してください
  • 第二には、ALTERコマンドを使用して
    • データ値列の長さを変更します
    • 修正フィールド名
    • テーブルに新しいフィールドを挿入します
    • あなたは、制約を追加するためにフィールドを追加すると
    • 外部キーを追加します。
    • 外部キーを削除します
    • 列を削除
    • 列の順序を変更します。
    • 削除テーブル

まず、制約の関連書類

図1に示すように、主キー制約(主キー制約は、データのみ主キー列を必要とし、空にできません)

#创建库
mysql> create database test01; 
#切换至新库
mysql> use test01;
#创建一个带有主键约束的表
mysql> create table t1(
    -> id int(10),
    -> name varchar(10) primary key,
    -> sex varchar(5),
    -> info varchar(200)
    -> );

MySQLのデータテーブルの制御文

主キーを作成するかどうかを判断し(カラムはPRIの言葉を持っています):

MySQLのデータテーブルの制御文
この方法は、あなたがすべての列を定義した後、同時に主キー列の定義で定義され、指定された主キーについての書き込みを聞かせて上記:

mysql> create table t2(
    -> id int(10),
    -> name varchar(10),
    -> sex varchar(5),
    -> primary key(id)
    -> );

MySQLのデータテーブルの制御文

主キーがあるかどうかを確認するために:

MySQLのデータテーブルの制御文

2、非空制約(何列が空白ではありません)

mysql> create table t3(
    -> id int(6) not null,
    -> name varchar(10)
    -> );

確認するために、テーブル情報を表示します。

MySQLのデータテーブルの制御文

3、一意の値を設定(重複データを許可しない、それ以外の場合は重複として扱われ、空、一つだけ空の場合もあります)

mysql> create table t7(
    -> id int not null unique,
    -> name varchar(20)
    -> );

そのテーブル構造を参照してください。

MySQLのデータテーブルの制御文

あなたがそのようなユニークとして、主キーの基本的な要件を満たすために、主キーが、列のプロパティされて主キーを識別することですが、それが作成されたときに指定していない見ることができ、空にすることはできません。

4、(列が空の場合、デフォルトの書き込み)カラムのデフォルト値を設定します

mysql> create table t4(
    -> id int(2) not null,
    -> name varchar(20),
    -> project varchar(20) default 'mysql'
    -> );

確認を探します。

MySQLのデータテーブルの制御文

設定値ので、図5に示すように、(ID列は、一般的に使用される、自動インクリメントの主キーに設定する必要があります)

注:MySQLのような、5の値に設定し、連続的にインクリメントすることができるされている許容値から与えられるだけ初期値を、可能にする:5,6,7 .....が、設けられていません例えば、その増分番号2:5,7,9 ......

mysql> create table t5(
    -> id int not null primary key auto_increment,
    -> name varchar(20)
    -> );

確認するために、テーブルの構造を表示します。

MySQLのデータテーブルの制御文

セルフテストを増加させる効果:

mysql> insert into t5(name) values('zhangsan'),('lisi');
mysql> select * from t5;
+----+----------+
| id | name     |
+----+----------+
|  1 | zhangsan |
|  2 | lisi     |
+----+----------+

上記試験から分かるように、名前の2つだけの値が挿入されたID値に挿入されていないが、場合ビュー表データであり、IDが既に自己増力効果を示す値を有します。

設定された開始値増加

#定义初始值为5
mysql> create table t6(                                  
    -> id int primary key auto_increment,
    -> name varchar(20)
    -> ) auto_increment=5;
#插入数据进行测试
mysql> insert into t6(name) values('zhangsan'),('lisi'); 

独自の値を確認します。
MySQLのデータテーブルの制御文

第二には、ALTERコマンドを使用して

図1に示すように、変更されたデータ値の列の長さ

mysql> desc t1;            <!--查看t1表的结构-->
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(10)      | YES  |     | NULL    |       |
| name  | varchar(10)  | NO   | PRI | NULL    |       |
| sex   | varchar(5)   | YES  |     | NULL    |       |
| info  | varchar(200) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+
4 rows in set (0.00 sec)
mysql> alter table t1 modify name varchar(20);      <!--修改其name字段的长度为20-->

確認テーブル修正構造:

MySQLのデータテーブルの制御文

図2に示すように、フィールド名の変更(修正の列名は、新たなデータフィールド名とデータ長の種類を変更することも可能です)

mysql> desc t1;         <!--查看其info列-->
+-------+--------------+------+-----+---------+-------+
| Field | Type         | Null | Key | Default | Extra |
+-------+--------------+------+-----+---------+-------+
| id    | int(10)      | YES  |     | NULL    |       |
| name  | varchar(20)  | NO   | PRI | NULL    |       |
| sex   | varchar(5)   | YES  |     | NULL    |       |
| info  | varchar(200) | YES  |     | NULL    |       |
+-------+--------------+------+-----+---------+-------+

mysql> alter table t1 change info infofo char(20);    <!--修改其info列的名字及数据类型-->

検証結果を変更しました:

MySQLのデータテーブルの制御文

3、テーブルに新しいフィールドを挿入

1)最後の1に新しい列を挿入します。

mysql> desc t3;             <!--确认t3列当前的字段-->
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(6)      | NO   |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
mysql> alter table t3 add tel int(13);         <!--插入一个tel列-->

列の挿入を表示した後:

MySQLのデータテーブルの制御文
2)テーブルの先頭に新しい列を挿入します。

mysql> alter table t3 add sex char(1) first;

列は、指定した後、3)新しい列を挿入します。

mysql> alter table t3 add loc varchar(255) after name;

制約を追加する場合、図4に示すように、フィールドが追加され

mysql> alter table t3 add hobyy varchar(255) default 'work';

5、外部キーを追加します

この操作の前に、自分のプライマリキーテーブルを見つける必要が(T1、私の名前の列がテーブルの主キーである)があります。

次のようになりましたテーブルT1の構造は、
MySQLのデータテーブルの制御文
テーブルT3の構造を次のように
MySQLのデータテーブルの制御文

今、テーブル名の列を追加します(制約がカスタム名をt3_t1_name)外部キーt3の列名のテーブルt1であります:

mysql> alter table t3 add constraint t3_t1_name foreign key(name) references t1(name);

ビューは、T3テーブルが変更されます。

MySQLのデータテーブルの制御文

6、外部キーを削除します

外部キーを削除の上に追加され、t3_t1_nameは外部キーの名前です。

mysql> alter table t3 drop foreign key t3_t1_name;
mysql> alter table t3 drop  key t3_t1_name;

7、削除列

mysql> alter table t3 drop tel;                <!--删除t3表的tel列-->

注:あなたがテーブルに加盟列と他の列を削除したい場合は、その列を削除し、関係を削除する必要があります。後で同じ名前の列を作成したときにそれ以外の場合、それは自動的に関係を確立します。

8、列の順序を変更します

<!--将name字段移动到表的第一列-->
mysql> alter table t3 modify name varchar(10) first;

9、テーブルを削除

mysql> drop table t5;            <!--直接删除-->
Query OK, 0 rows affected (0.00 sec)

mysql> drop table t5;            <!--再次删除,由于已经删除了,所以表不存在,会报错-->
ERROR 1051 (42S02): Unknown table 'test01.t5'
mysql> drop table if exists t5;       <!--进行判断后删除,if exists表示如果存在就删除-->
Query OK, 0 rows affected, 1 warning (0.00 sec)
<!--可以看到上述返回的信息有1个warning事项,可以执行以下命令进行查看-->
mysql> show warnings;    <!--记录的信息时不知道test01库中的t5表-->
+-------+------+---------------------------+
| Level | Code | Message                   |
+-------+------+---------------------------+
| Note  | 1051 | Unknown table 'test01.t5' |
+-------+------+---------------------------+
1 row in set (0.00 sec)

関係がある場合は同様にして、削除操作テーブル、リレーションシップを削除する必要があり、その後、テーブルをドロップします。

--------この記事の最後に、これまで、読んでくれてありがとう--------

おすすめ

転載: blog.51cto.com/14154700/2455908