データベースデータテーブル制御ステートメント

1.制約に関連するステートメント

1.主キー制約(主キー制約では、主キー列のデータが一意であり、空であってはいけません)

#创建库
mysql> create database test1;
#进入到库中
mysql> use test1;
#创建一个带有主键约束的表
mysql> create table tab1(
    -> id int(10),
    -> name varchar(10) primary key,
    -> sex varchar(5),
    -> info varchar(200)
    -> );
Query OK, 0 rows affected (0.01 sec)

作成された主キーがあるかどうか(列にPRIという単語が含まれているかどうか)を確認します。
データベースデータテーブル制御ステートメント
上記は、列を定義するときに主キーを定義するためのものです。すべての列を定義した後、主キーを指定するように書きましょう。

mysql> create table tab2(
    -> id int(10),
    -> name varchar(10),
    -> sex varchar(10),
    -> primary key(id)                       # 括号里定义主键的列
    -> );

データベースデータテーブル制御ステートメント
2.非null制約(列の値を空にすることはできません)

mysql> create table tab3(
    -> id int(6) not null,                # not null :不允许为空
    -> name varchar(10)
    -> );

データベースデータテーブル制御ステートメント
3.設定値の一意性(データの重複は許可されません。空にすることもできますが、存在できるのは1つだけです。それ以外の場合、重複と見なされます)

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

データベースデータテーブル制御ステートメント
これは主キーとして識別されていますが、作成時に主キーとして指定されていませんが、この列の属性は基本的に、一意などの主キーの要件を満たしているため、空にすることはできません
4.列のデフォルト値を設定します(列が空の場合は、デフォルト値を書き込みます)

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

データベースデータテーブル制御ステートメント
5.自己増分値を設定します(通常はid列に使用され、自己増分列は主キーとして設定する必要があります)
注:mysqlは初期値のみを設定でき、自己増分値を設定できません。つまり、最初の値を5に設定できます。次に、5、6、7などの順番に増加します。ただし、5、7、9などのように、一度に2回ずつ増加するように設定することはできません。

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

データベースデータテーブル制御ステートメント
自己増加効果をテストします。

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

上記のテストからわかるように、nameの値は2つだけ挿入され、idの値は挿入されませんが、テーブルデータを表示すると、idにはすでに値があり、自己増分が有効になり
、自己増分の開始値が設定されます

mysql> create table tab7(
    -> id int primary key auto_increment,
    -> name varchar(20)
    -> )auto_increment=6;
#插入数据验证
mysql> insert into tab7(name) values('zyz'),('lisi'),('zhangsan');

mysql> select * from tab7;
+----+----------+
| id | name     |
+----+----------+
|  6 | zyz      |
|  7 | lisi     |
|  8 | zhangsan |
+----+----------+

第二に、ALTER命令の使用

1.列値のデータ長を変更します

mysql> desc tab1;
+-------+--------------+------+-----+---------+-------+
| 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    |       |
+-------+--------------+------+-----+---------+-------+
#修改name 字符长度为20
mysql> alter table tab1 modify name varchar(20);

データベースデータテーブル制御ステートメント
2.フィールド名を変更します(フィールド名を変更するときに、新しいフィールド名のデータ型とデータ長を変更することもできます)

mysql> desc tab1;
+-------+--------------+------+-----+---------+-------+
| 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 tab1 change info info2 char(20);

データベースデータテーブル制御ステートメント
3.テーブルに新しいフィールドを挿入します
1)最後の列に新しい列を挿入します。

mysql> desc tab3;
+-------+-------------+------+-----+---------+-------+
| Field | Type        | Null | Key | Default | Extra |
+-------+-------------+------+-----+---------+-------+
| id    | int(6)      | NO   |     | NULL    |       |
| name  | varchar(10) | YES  |     | NULL    |       |
+-------+-------------+------+-----+---------+-------+
2 rows in set (0.00 sec)
#插入一个  zuihou  列
mysql> alter table tab3 add zuihou int(10);

データベースデータテーブル制御ステートメント
2)テーブルの先頭に新しい列を挿入します。

mysql> alter table tab3 add sex char(10) first;

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

mysql> alter table tab3 add local varchar(255) after name;

4.フィールドを追加するときに制約を追加する

mysql> alter table tab3 add hello varchar(20) default 'work';

5、外部キーを追加し
、この操作の前に、自分自身のニーズを見つけるために、テーブルの主キー(私は、主キーを列TAB1テーブルをされている名前)
tab1のテーブル構造を:
データベースデータテーブル制御ステートメント
TAB3テーブル構造を:
データベースデータテーブル制御ステートメント
今、名前欄t3のテーブルをt1テーブルで追加します名前列の外部キー(t3_t1_nameはカスタム制約名です):

mysql> alter table tab3 add constraint tab3_tab1_name foreign key(name) references tab1(name);

tab3テーブルの変更を表示します。6
データベースデータテーブル制御ステートメント
.外部キーを削除します
上記で追加した外部キーを削除します。tab3_tab1_nameは外部キーの名前です。

mysql> alter table tab3 drop foreign key tab3_tab1_name;
mysql> alter table tab3 drop key tab3_tab1_name;

——————————

外部キーと言えば、ここでは外部キーとは何かについて説明します。
関連情報のクエリはすべて、いくつかの用語を話すことに関するものです。外部キーの主な機能は、データの一貫性と整合性維持することです。混乱していると聞き、理解できなかったとのこと。
ここでも、兄の言葉から説明します。下の小さな表を見ることができます
+ ------- + ref + ------- +
| sub | ------> | main |
+ ------- + + ------- +

テーブル(サブ)の列からメインテーブルの列の値を参照(ref)します。

たとえば、studentテーブルには学生番号(sid)があり、scoreテーブルの学生列(stu)は、studentテーブルの学生番号を参照しています。この時点では、scoreテーブルのstuについてです。学生テーブルのsidは外部キーです。

セカンダリテーブルは外部キーテーブルとも呼ばれ、プライマリテーブルは主キーテーブル、外部テーブルとも呼ばれ、列はフィールドとも呼ばれます。

だから設計するとき。表1に外部キーを追加します。この外部キーは、表2の学生番号フィールドです。次に、表1がメインテーブルで、表2が子テーブルです。

あなたの主従関係は逆さまです。ダイアグラムでは、表1は確かにメインテーブルです。表2は子テーブルですが、表1への外部キーの追加ではなく、表2への外部キーの追加と呼ばれます。表2の学生番号フィールドは、表1の学生番号フィールドの主キーである外部キーと呼ばれます。

あなたはこれを言うことができます:表1の学生番号フィールドは表2の外部キーです

————————外部キーの説明の終わり——————
7、列の削除

mysql> alter table tab3 drop zuihou;

注:削除する列が別のテーブルの列に関連している場合は、列を削除する前に関係を削除する必要があります。そうしないと、後で同じ名前の列が作成されるときに、自動的に関係が確立されます。
8.列の順序を変更します

mysql> alter table tab3 modify name varchar(10) first;

9.テーブルを削除します

#直接删除
mysql> drop table tab6;
Query OK, 0 rows affected (0.01 sec)
#再次删除这个表,可以看到已经提示说没有这个表了,说明已经删除
mysql> drop table tab6;
ERROR 1051 (42S02): Unknown table 'test1.tab6'
#进行判断后删除,if exists表示如果存在就删除
mysql> drop table if exists tab6;
Query OK, 0 rows affected, 1 warning (0.00 sec)
#可以看到上述返回的信息有1个warning事项,可以执行以下命令进行查看
mysql> show warnings;               # 返回的信息显示不知道test1库中的tab6表
+-------+------+----------------------------+
| Level | Code | Message                    |
+-------+------+----------------------------+
| Note  | 1051 | Unknown table 'test1.tab6' |
+-------+------+----------------------------+
1 row in set (0.00 sec)

同様に、テーブルの削除操作を実行するときに、関連付け関係がある場合は、最初に関連付け関係を削除してからテーブルを削除する必要があります。
同様に、テーブルの削除操作を実行する場合、関連付け関係がある場合は、関連付け関係を削除してからテーブルを削除する必要があります
。テーブルの削除操作を実行するときに、関連付け関係がある場合は、テーブルを削除する前に関連付け関係を削除する必要があります。

おすすめ

転載: blog.51cto.com/14227204/2489543