当前位置:   article > 正文

唯一性约束

唯一性约束

目录

唯一性约束

vip.sql脚本文件中的sql语句:

 select * from t_vip;

insert into t_vip(id,name,email) values(4,'wangwu','wangwu@sina.com');

insert into t_vip(id) values(4);

insert into t_vip(id) values(5);

1. 新需求:name和email两个字段联合起来具有唯一性!!!!

1.1 怎么创建表才能符合新需求呢?

1.2 什么时候使用表级约束?

2. unique 和 not null 可以联合使用


唯一性约束

唯一性约束unique约束的字段不能重复,但是可以有多个NULL

vip.sql脚本文件中的sql语句:

drop table if exists t_vip;
create table t_vip(
    id int,
    name varchar(255) unique,
    email varchar(255)
);
insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');
insert into t_vip(id,name,email) values(2,'lisi','lisi@123.com');
insert into t_vip(id,name,email) values(3,'wangwu','wangwu@123.com');

 select * from t_vip;

insert into t_vip(id,name,email) values(4,'wangwu','wangwu@sina.com');

Duplicate:重复

约束的字段不能重复

insert into t_vip(id) values(4);

insert into t_vip(id) values(5);

name字段虽然被unique约束了,但是可以有多个NULL。

1. 新需求:name和email两个字段联合起来具有唯一性!!!!

drop table if exists t_vip;
create table t_vip(
       d int,
       name varchar(255) unique,
       email varchar(255) unique
);

约束直接添加到列后面的,叫做列级约束

这张表这样创建是不符合我以上“新需求”的。这样创建表示:name具有唯一性,email具有唯一性。各自唯一。

1.1 怎么创建表才能符合新需求呢?

drop table if exists t_vip;
create table t_vip(
        id int,
        name varchar(255),
        email varchar(255),
        unique(name,email) 
);

约束没有添加在列的后面,这种约束被称为表级约束

insert into t_vip(id,name,email) values(1,'zhangsan','zhangsan@123.com');
insert into t_vip(id,name,email) values(2,'zhangsan','zhangsan@sina.com');

name和email两个字段联合起来唯一!!!

insert into t_vip(id,name,email) values(3,'zhangsan','zhangsan@sina.com');

1.2 什么时候使用表级约束?

 需要给多个字段联合起来添加某一个约束的时候,需要使用表级约束。


2. unique 和 not null 可以联合使用

drop table if exists t_vip;
create table t_vip(
        id int,
        name varchar(255) not null unique
);

desc t_vip;

在mysql当中,如果一个字段同时被not null和unique约束的话,该字段自动变成主键字段。(注意:oracle中不一样!) 

insert into t_vip(id,name) values(1,'zhangsan');

insert into t_vip(id,name) values(2,'zhangsan');

错误了:name不能重复

insert into t_vip(id) values(2);

错误了:name不能为NULL。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家小花儿/article/detail/297141
推荐阅读
相关标签
  

闽ICP备14008679号