先创建一个数据表

约束以及修改数据表_第1张图片

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

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

约束以及修改数据表_第2张图片

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

约束以及修改数据表_第3张图片

约束以及修改数据表_第4张图片

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

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

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

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

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

    

    现在provinces表中插入几个元素

约束以及修改数据表_第5张图片

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

约束以及修改数据表_第6张图片

    往users1中插入几个元素

约束以及修改数据表_第7张图片

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

    

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

    

约束以及修改数据表_第8张图片

约束以及修改数据表_第9张图片

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


    接下来修改数据表

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

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

约束以及修改数据表_第10张图片

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

约束以及修改数据表_第11张图片

    查看结果,然后删除列truename

约束以及修改数据表_第12张图片

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

约束以及修改数据表_第13张图片

    再创建一张表users2

约束以及修改数据表_第14张图片

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

约束以及修改数据表_第15张图片

    将username改为唯一标识

约束以及修改数据表_第16张图片

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

约束以及修改数据表_第17张图片

    给users2增加age属性

约束以及修改数据表_第18张图片

    给age设置默认值

约束以及修改数据表_第19张图片

删除age的默认值

约束以及修改数据表_第20张图片

    查看结果

约束以及修改数据表_第21张图片

    取消pid的外键约束

约束以及修改数据表_第22张图片

    查看结果

约束以及修改数据表_第23张图片

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

约束以及修改数据表_第24张图片

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

约束以及修改数据表_第25张图片

    修改pid的名字和类型

约束以及修改数据表_第26张图片

    给数据表更名

约束以及修改数据表_第27张图片

约束

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

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

修改数据表

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

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

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