总述:MySQL中有一部分约束语句,是作用于表中字段的规则,用于限制储存在表中的数据。保证数据库中数据的准确性、有效性和完整性。
1.外键约束foreign key
两张表之间建立链接,保证数据的一致性和完整性。
有外键的表称作子表(副表),外键指向的表称作父表(主表)。
记忆技巧:儿子需要的东西可以从父亲这里拿,所以子(子表)可以指向父(父表),也就是有外键的表指向对应的父表。
创建外键语法:
(1)在创建表的时候创建:
CREATE TABLE 表名(
字段名1 数据类型,
字段名2 数据类型,
...
[CONSTRAINT] [外键名称] FOREIGN KEY (外键字段名) REFERENECS 主表(主表列名));
(2)在修改表的时候创建:
ALTER TABLE 表名 ADD CONSTRAINT 外键名称 FOREIGN KEY (外键字段名) REFERENCES 主表(主表列名);
2.检查约束check
保证字段值满足一个条件。
3.非空约束NOT NULL
保证数据不为空。
4.唯一约束UNIQUE
保证数据的唯一性。
5.主键约束primary key
主键是一行数据的唯一标识,要求唯一且非空。
6.默认约束default
保存数据时,如果没有指定该字段的值,采用默认值。
注:1.约束是作用于表中的字段上的,可以在创建或者修改表的时候添加。
2.表中需要有主键已经成为一种规范。
eg:创建一个表格
CREATE TABLE Stu(
id int primary key auto_increment comment '序号',
name varchar (20) not null comment '姓名',
number int unique comment '学号',
age int check(age > 0 && age < 120),
statement int default '1' comment '状态')comment '学生表';
--创建一个名叫Student的学生表,字段序号为系统自动管理的,序号自动增长(auot_increment)且是主键(primary key),字段姓名为非空(not null),年龄符合check条件中的大于0小于120,字段状态在插入数据时若没有指定就是1。
在Navicat中实现上述语句:
1.在Stu表中插入两条数据:
我们没有插入id,但是表格自动标记了id且是自动增长的,由系统自动管理。
2.在表中插入姓名为null的数据时,会发现系统提示姓名不能为空,因为我们已经限制了姓名not null:
3.当我们插入的数据中有重复学号时系统会提示学号重复,因为我们已经限定了学号为unique:
4.当我们插入的数据中学生年龄超过check限定的范围的时候,系统会提示年龄超出范围:
5.当我们插入的数据中没有指定学生的状态时,系统默认为1(default '1'):
总结:以上就是我们对于SQL中的约束的学习啦,本人能力有限写的还不够好,让大家见笑了嘿嘿!虽说不难,但是不用或者不练习的话真的很容易忘!(本人亲身体会呜呜呜)如果对本文章有什么疑问或不解,欢迎大家在评论区一起讨论哦!