先创建一个数据表

wKiom1gmc5uh0bJYAACvWd-jPl0880.png-wh_50

    再创建一张数据表,让其属性pid参照上一个provinces数据表的id

主要代码为:FOREIGN KEY (pid) REFERENCES provinces(id)

wKiom1gmc8ew0I1PAACaB5z3-0o133.png-wh_50

    查看province以及users的表索引,就可以看到两个约束,一个是主键id另一个就是pid

wKioL1gmdaPgMEDsAAB1vd18M18986.png-wh_50

wKiom1gmdaTDFACXAABsFZxF8Wo711.png-wh_50

    接下来了解外键约束的参照操作

  1. CASCAD:从父表删除或更新且自动删除或更新子表中匹配的行

  2. SET NULL:从父表删除或更新行,并设置子表中的外键列为NULL。如果使用该选项,必须保证子表列没有指定NOT NULL

  3. RESTRICT:拒绝对父表的删除或更新操作

  4. NO ACTION:标准SQL的关键字,在MySQL中与RESTRICT相同

    

    现在provinces表中插入几个元素

wKioL1gmdz3SDbsoAACrzNJaI8I836.png-wh_50

    新建一个数据表users1,其pid参见provinces的id且受其CASCADE类型的外键约束

wKiom1gmd-HyDwZ8AADJ8JuH6tU817.png-wh_50

    往users1中插入几个元素

wKiom1gmeG3zRrV0AADJ8JuH6tU871.png-wh_50

    可见当创建('John',7)这个元素时,由于provinces中的id没有7,所以导致创建失败

    

    删除provinces中id=3的元素看对users1有没有影响

    

wKiom1gmes7SrYEeAACctPIta-w733.png

wKiom1gmetDS8gr-AACIs_Z0acQ578.png

    可见users1中pid为3的元素也跟着被删除了


    接下来修改数据表

    先查看users1的列,并给其添加一个age列

主要代码为:ALTER TABLE tablename ADD columnname;

wKioL1gme6eAxwcEAACt8Ot20yc964.png

    再添加一些列,并通过FIRST 和AFTER代码来指定其位置

wKioL1gmfEnAgg1OAAC31isSKrA301.png

    查看结果,然后删除列truename

wKioL1gmfG6TKfoeAAC3MYWhbKg734.png

    查看结果并同时删除password 和age列

wKiom1gmfMfDLFNGAAC5cG0yiuA030.png

    再创建一张表users2

wKiom1gmfRXSPye1AACla7yyTLY482.png

    查看users2的列,并将id设为主键,这个操作的名字为PK_users2_id(自己定的)

wKiom1gmfUmSAER5AAC55Y-GcUE132.png

    将username改为唯一标识

wKioL1gmfeOTnp7cAACSDQIGFns541.png

    查看结果,并将pid的属性参照provinces的id属性

wKiom1gmfhviY0ubAACtVwXpBhs380.png

    给users2增加age属性

wKioL1gmfuCwkFB8AACycKh0zSo157.png

    给age设置默认值

wKiom1gmfyTh954TAACwRxc6-j0738.png-wh_50

删除age的默认值

wKioL1gnMR_BUuSYAADDAGvJVm8863.png-wh_50

    查看结果

wKiom1gnMVXxqYcrAACLt9qPpr8049.png

    取消pid的外键约束

wKioL1gnNQ_hOTgYAADACuBAsEs388.png

    查看结果

wKiom1gnNXmjc1HjAACiFUnS46g507.png

    删除pid的唯一标识约束,注意只是删除约束,列还是存在的

wKioL1gnNxvjKvc3AACkpWV_SPs055.png

    将id的列设在第一位并查看结果

wKiom1gnNz_gHiBGAAC8SnZpqVU445.png

    修改pid的名字和类型

wKioL1gnP8iBEOohAAC44ytrqHw604.png

    给数据表更名

wKiom1gnP_rQpZDsAACaipozTXs710.png

约束

    按功能划为:NOT NULL,PRIMARY KEY,UNIQUE KEY,DEFAULT,FOREIGN KEY

按数据列的数目划为:表级约束,列级约束

修改数据表

    针对字段的操作:添加/删除字段、修改列定义,修改列名称等

    针对约束的操作:添加/删除各种约束

    针对数据表的操作:数据表更名(两种方式)