MySQL数据库常用命令(三)

1、约束

1.1、什么是约束?

在创建表的时候,可以给表的字段添加相应的约束,添加约束的目的是为了保证表中数据的合法性、有效性、完整性。

1.2、常见的约束有哪些?

  • 非空约束(not null):约束的字段不能为 null
  • 唯一约束(unique):约束的字段不能重复
  • 主键约束(primary key):约束的字段既不能为 null,也不能重复 (简称PK)
  • 外键约束(foreign key)
  • 检查约束(check):注意Oracle数据库有check约束,但是MySQL没有。

2、非空约束(not null)

约束的字段不能为null,如果为空会报语法错误。

例如:创建 表 t_user,name字段添加非空约束

create table t_user(
	id int,
	name varchar(255) not null,
	password varchar(255)
);

在这个表进行插入时,name字段不能为null,一定要进行赋值。

正确插入:

insert into t_user(id, name, password) values(1, 'zhangsan', '123');

错误插入:(报语法错误)

insert into t_user(id, password) values(1, '123');

3、唯一性约束(unique)

约束的字段不能重复,但可以为 null

3.1、指定某个字段唯一性约束
例如:创建 表 t_user,name字段添加唯一性约束

create table t_user(
	id int,
	name varchar(255) unique,
	password varchar(255)
);

在这个表进行插入时,name字段不能重复。

3.2、指定多个字段联合在一起的唯一性约束

create table t_user(
	id int,
	name varchar(255),
	password varchar(255) ,
	unique(name, password)
);

以上表示,name字段单独可以重复,password字段单独也可以重复,但他们两个联合起来不能重复。

4、主键约束

约束的字段既不能为 null,也不能重复

主键约束的相关术语:

  • 主键约束:primary key
  • 主键字段:添加主键约束的那个字段
  • 主键值:主键字段的值

注意:一张表的主键约束只能有一个!!

列级约束方式:在字段的数据类型后面直接加约束,如id int primarykey,
表级约束方式:在最后添加约束,如primary key(字段名)

4.1、创建表,并添加主键约束

例如:创建 表 t_user,id字段添加主键约束(列级约束方式)

create table t_user(
	id int primary key,
	name varchar(255),
	email varchar(255)
);

id字段既不能为空(null),也不能重复。

4.2、主键的作用

  • 表的设计三范式中有要求,第一范式就要求任何一张表都应该有主键;
  • 主键的作用:主键值是这行记录在这张表的唯一标识。(就像一个人的身份证一样)

4.3、主键的分类

  • 按主键的字段的字段数量划分:
    单一主键:(推荐,常用)
    复合主键:(多个字段联合起来添加一个主键约束)(不建议使用)
  • 根据主键性质来划分:
    自然主键:(主键和业务没有任何关系的自然数)(推荐使用)
    业务主键:(主键值和系统的业务挂钩)(不推荐使用)

4.4、主键自增 : auto_increment

自增默认是从1开始的

例如:

create table t_user(
	id int default 10 primary key auto_increment,
	name varchar(255),
	email varchar(255)
);

5、外键约束

关于外键约束的相关术语:

  • 外键约束:foreign key
  • 外键字段:添加外键约束的字段
  • 外键值:外键字段的值

为了防止所有信息在一张表中冗余,需要将一张表的数据分成两张表进行存储,但表1与表2之间存在引用关系,例如表2需要引用表1中的字段信息,这时候就需要添加外键约束。

  • 父表:如上面所说的表1。被其他表所引用的称为父表
  • 子表:如上面所说的表2。引用其他表的称为子表

5.1、使用外键约束创建表

  • 父表:
create table t_class(
	cno int,
	cname varchar(255),
	primary key(cno)
);
  • 子表
create table t_student(
	sno int, 
	sname varchar(255),
	classno int,
	foreign key(classno) references t_class(cno)
);

注意:创建的时候,先创建父表,再创建子表;删除的时候,先删除子表,再删除父表。

外键是可以为null的。被外键引用的字段不定义是主键,但至少具有unique约束

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值