非空约束
新建一个表
在表中定义一个列,让它非空

插入数据
正常的插入

只给name数据,不给id数据

只给id数据,不给name数据


删除表中某个列的非空约束

删除了非空约束后,再次尝试插入数据不给值

小结
非空约束定了列后
这个列在插入数据的时候一定给值
不给值的话,它也不会为空
根据数据类型的不同,系统会给他一个默认值
但一定不会让它为null
唯一约束演练
新建表
让电话唯一

插入数据

插入重复数据

弹出报错
删除唯一约束的索引
注:如果给一个列添加了唯一约束
mysql会自动的给他创建一个索引
索引是用于帮我们提高查询效率的一个好东西

追加唯一约束
给已经成功的创建了的表中的普通列,添加唯一约束
目标:
给名称添加唯一约束

相当于重新给列定义类型和约束
小结
唯一约束不同于非空约约
非空约束的定义和取消,都可以直接通过修改列的约束来实现
唯一约束不同
给一个列添加唯一约束
mysql会自动的给它创建一个索引(索引的用途是帮助我们提高查询效率的)
如果要定义的话,可以在建表时定义,也可以通过修改表中的列来定义
如果要取消,只能是通过丢弃索引的方式来取消
主键约束演练
删除ys表

新建表 添加主键约束

添加数据
正常的添加数据
两个列都给值

再插一条数据
让id重复,sname不重复

因为主键id不允许重复
插入数据 不给id赋值
验证主键是否可以为null

删除主键

主键删除后
原本的主键列它就不再受到非空和唯一的约束了
追加主键
主键添加前的表结构

主键添加后的表结构
添加主键实际就是在修改表的列,设置列为主键

查看表结构

小结 主键约束
非空
唯一
一个表中只有一个主键
主键也是索引,可以提高查询效率
自动增长演练
新建表

添加数据
让id自动增长
添加数据的时候不给id赋值,使用null来触发自动增长

继续添加数据

给自动增长的列 强制赋值


删除自动增长的列

效果,失去自动增长的效果
我们不能够再通过null给它值
因为主键是非空的

追加自动增长
给一个普通的主键列,追加自动增长的效果

小结 自动增长
普通列不可以自动增长
主键列可以设置自动增长
一般是整数类型可以自动增长
外键约束
外键相关的表
学生与老师
一个老师带多个学生
多个学生对应一个老师
学生与班级
一个班级对应多个学生
多个学生属于一个班级
老师与班级
一个老师带多个班级
一个级有一个老师带
为什么要使用外键
用于约束,防止数据出错
学生与老师为例
在学生表中登记的老师工号,一定是老师中存在的工号
为了实现这样的两个表的数据关联
需要使用外键约束
外键的设计规则
外键的列要放在多方
要放在从表的一方
创建老师表 主表

创建学生表 从表

定义外键 追加方式
让学生表与老师表产生关联

创建一个班级表 建表时定义外键

产生外键的预期效果
外键列的数据,必需是主键列中存在的
删除外键
删除班级表中tid这个外键
删除前

删除

查看删除外键后的效果
查看建表语句
fk_ct没有关联另一个表了
CREATE TABLE `classtab` (
`id` int(11) NOT NULL auto_increment,
`cname` varchar(4) default NULL,
`tid` int(11) default NULL,
PRIMARY KEY (`id`),
KEY `fk_ct` (`tid`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8

被折叠的 条评论
为什么被折叠?



