基础数据库约束

1.约束类型

  • not null :指示某列不能存储null值
  • unique:某一列数据都不能重复
  • default:规定没有给列赋值时的默认值
  • primary key:not null 和 unique 的结合,确保其列有唯一标识
  • foreign key:保证一个表中的数据匹配到另一个表中的值的参照完整性

2.NULL约束

mysql> create table student(
    ->    id int not null,
    ->    sn int,
    ->    name varchar(20),
    ->    qq_mail varchar(20)
    -> );
Query OK, 0 rows affected (0.09 sec)

创建了student表时,指定了id列不为空。

3.unique:唯一约束

mysql> create table student(
    ->    id int not null,
    ->    sn int unique,
    ->    name varchar(20),
    ->    qq_mail varchar(20)
    -> );
Query OK, 0 rows affected (0.09 sec)

在student表中,对学生学号进行唯一约束,跟咱们日常生活中的学号是一样的,是不会有重复的。

4.default:默认值约束

mysql> drop table if exists student;
Query OK, 0 rows affected (0.03 sec)

mysql> create table student(
    ->    id int not null,
    ->    sn int unique,
    ->    name varchar(20) default 'unkown',
    ->    qq_mail varchar(20)
    -> );
Query OK, 0 rows affected (0.14 sec)

指定插入数据时,name列为空,默认值unkown.

5.primary key:主键约束

非空唯一
unique 和 not null 的合集,可以使用在多列上,表示复合主键。

mysql> drop table if exists student;
Query OK, 0 rows affected (0.05 sec)

mysql> create table student(
    ->    id int not null primary key,
    ->    sn int unique,
    ->    name varchar(20) default 'unkown',
    ->    qq_mail varchar(20)
    -> );
Query OK, 0 rows affected (0.08 sec)

一般情况下,对于整数类型的主键,常搭配自增长auto_increment来使用。插入数据对应字段不给值时,使用最大值+1,默认从1开始

id int primary key auto_increment,

6.foreign key:外键约束

外键用来关联其他表的主键或唯一值

语法:foreign key (字段名) references 主表(列)

mysql> drop table if exists classes;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> create table classes(
    ->    id int primary key auto_increment,
    ->    name varchar(20),
    ->    -- 使用MySQL关键字作为字段时,要用"``"来标识
    ->    `desc` varchar(100)
    -> );
Query OK, 0 rows affected (0.09 sec)

创建了班级表,一个学生对应一个班级,一个班级对应多个学生。使用id为主键,classes_id为外键,进行关联。

mysql> drop table if exists student;
Query OK, 0 rows affected (0.05 sec)

mysql> create table student(
    ->    id int primary key auto_increment,
    ->    sn int unique,
    ->    name varchar(20) default 'unkown',
    ->    qq_mail varchar(20),
    ->    classes_id int,
    ->    foreign key (classes_id) references classes(id)
    -> );
Query OK, 0 rows affected (0.08 sec)

表于表之间的联系如下图所示
在这里插入图片描述

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值