MySQL数据库约束

16 篇文章 1 订阅

目录

1. null 约束

2. unique :唯一约束

3. default :默认值约束

4. primary key :主键约束

5. foreign key :外键约束

6. check 约束

7.自增约束 auto_increment 

1. null 约束

创建表时,可以指定某列不为空

-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT NOT NULL ,
  sn INT ,
  name VARCHAR ( 20 ),
  qq_mail VARCHAR ( 20 )
);

2. unique :唯一约束

指定某列的每行必须与唯一的值。

注:一张表中可以有一个或者多个唯一约束。

-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT NOT NULL ,
  sn INT UNIQUE,
  name VARCHAR ( 20 ),
  qq_mail VARCHAR ( 20 )
);

问题:给某个字段只创建了唯一约束,没有指定非空约束,那么这个字段能不能插入NULL值?能不能插入空值(' ')?能否重复插入NULL值?

答: 可以,可以,可以

唯一约束字段可以插入NULL(“没有”)。

唯一约束字段的NULL(“没有”)可以插入多个。

3. default :默认值约束

规定没有给列赋值时的默认值。
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT NOT NULL ,
  sn INT UNIQUE,
  name VARCHAR ( 20 ) DEFAULT 'unkown' ,
  qq_mail VARCHAR ( 20 )
);

4. primary key :主键约束

NOT NULL UNIQUE 的结合。确保某列(或两个列多个列的结合)有唯一标
识,有助于更容易更快速地找到表中的一个特定的记录。
注:一张表里面只能有一个主键,但一个主键可以有一个或多个字段。
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
CREATE TABLE student (
  id INT NOT NULL PRIMARY KEY,
  sn INT UNIQUE,
  name VARCHAR ( 20 ) DEFAULT 'unkown' ,
  qq_mail VARCHAR ( 20 )
);
主键约束 VS唯一约束:

1. 一个表中主键约束只能有一个,而唯一约束可以有多个。

2. 唯一约束可以插入一个或多个NULL,而主键约束不允许插入NULL。 

5. foreign key :外键约束

外键用于关联其他表的 主键 唯一键,保证一个表中的数据匹配另一个表中的值的参照完整性。
语法:
foreign key (字段名) references 主表(列)

 创建班级表classes,id为主键:

DROP TABLE IF EXISTS classes;
CREATE TABLE classes (
id INT PRIMARY KEY auto_increment,
name VARCHAR ( 20 ),
`desc` VARCHAR ( 100 )
);
创建学生表 student ,一个学生对应一个班级,一个班级对应多个学生。使用 id 为主键,
classes_id 为外键,关联班级表 id
-- 重新设置学生表结构
DROP TABLE IF EXISTS student;
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)
);

6. check 约束

保证列中的值符合指定的条件。对于 MySQL 数据库,对 CHECK 子句进行分析,但是忽略
CHECK 子句。
drop table if exists test_user;
create table test_user (
  id int ,
  name varchar ( 20 ),
  sex varchar ( 1 ),
  check (sex = ' ' or sex= ' ' )
);

7.自增约束 auto_increment

对于整数类型的主键,常配搭自增长 auto_increment 来使用。插入数据对应字段不给值时,使用最大值+1
-- 主键是 NOT NULL UNIQUE 的结合,可以不用 NOT NULL
id INT PRIMARY KEY auto_increment,

 

 

 

注: 

1. auto_increment 必须配合key进行使用。

2. auto_increment 必须配合整数数值使用。

3. 一张表中只能有一个auto_increment自增约束。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值