Day09-mysql基础篇之约束

写在前面,建议学习的时候不要使用navicat等可视化工具来书写sql语句,而是通过纯粹的dos命令框进行操作。

约束(constraint):约束是用来保证数据的完整性和有效性,约束的对象是表中的字段。

常见约束有

非空约束:     not null,被约束的字段不能为空,加载字段的后面。只允许列级约束

唯一性约束: unique,被约束的字段不能重复,但是可以为空null,

  1. 放在列后面称为列级约束
  2. 没有放在列后面称为表级约束,使用场景:需要给多个字段添加某一个约束
-- name,email两个数据联合起来具有唯一性 --
create table t_vip(
	id int,
	name varchar(255) UNIQUE,
	email varchar(255) unique
);
-- 上面的方式创建表格的话,能实现效果嘛?--
drop table t_vip;

create table t_vip(
 id BIGINT,
 name VARCHAR(255),
 email varchar(255),
 UNIQUE (name,email)
);
-- 使用两条数据来保证唯一性 --
insert into t_vip (name,email) values ('张三','[email protected]');
insert into t_vip (name,email) values ('李四','[email protected]');

-- 插入重复的数据报什么错误呢 ---
insert into t_vip (name,email) values ('张三','[email protected]');

-- 1062 - Duplicate entry '张三[email protected]' for key 't_vip.name'--

主键约束:primary key(简称pk),既不能为空,也不能重复。

  1. 主键值是每一行记录的唯一标识,类似于身份证号用来标识一个唯一的值。
  2. 没有主键的表默认为无效的表。
  3. 表级约束做复合主键。复合主键不建议使用。
  4. 主键值建议使用int bigint char等类型,一般都是定长的。
  5. 不建议使用业务主键,如果业务发生变动,可能会影响到业务主键。
  6. 主键值可以采用auto_increment自增,从1开始。

在mysql中如果一个字段被unique和not null同时约束的话,那么这个字段就变成主键字段了。

Day09-mysql基础篇之约束_第1张图片

外键约束:foreign key(简称fk)

子表:添加外键约束的表,students学生表

父表:被约束的表。classes课程表

 外键约束只能添加父表中的内容,不能添加不存在的元素。删除的时候先删除子表再删除父表。

外键值可以为空吗?可以。被引用的字段必须是主键吗?不一定是主键,但是必须具有唯一性的约束

检查约束:check(msyql不支持,oracle支持)

xxx.sql文件就是sql脚本文件,其中蕴含了大量的sql语句,当我们运行这个sql文件的时候,其中所有的sql语句都会执行。在mysql中执行sql脚本文件,我们使用source命令后面跟上sql脚本文件的绝对路径

source c:\\xxx.sql

你可能感兴趣的:(mysql,mysql,数据库)