约束概述(重要)

7、约束(重要)

  7.1、什么是约束?

    约束对应的英语单词:constraint

    在创建表的时候,我们可以给表中的字段加上一些约束,保证表中数据完整有效。

  7.2、约束包括哪些?

    非空约束:not null

    唯一性约束:unique

    主键约束:primary key (简称PK)

    外键约束:foreign key (奖惩FK)

    检查约束:check(mysql不支持,oracle支持)

    重点学习四个约束:

      not null

      unique

      primary key

      foreign key

      约束添加在列的后面,叫列级约束

      约束没添加在列的后面,叫表级约束

  7.3、非空约束:not null

    非空约束not null约束的字段不能为NULL

    drop table if exists t_vip;

    create table t_vip(

      id int,

      name varchar(255) not null

    );

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

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

 

    insert into t_vip(id) values(3);//报错,name有非空约束

    

     附:xxxx.sql文件被称为sql脚本文件

      sql脚本文件编写大量的sql语句

      执行sql脚本文件,该文件中所有的sql语句会全部执行

      批量的执行sql语句,可以使用sql脚本文件

      在mysql但你高中怎么执行sql脚本?
      source  D:\............

      实际工作中项目经理给了个xxx.sql文件,执行这个脚本文件,电脑上数据库数据就有了,

      数据量大直接用记事本打开sql脚本文件可能会死机,所以用source

  

   7.4、唯一性约束:unique

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

      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(1,'zhangsan','zhangsan@123.com');//name有唯一性约束,报错

      name字段虽然被unique约束,但都可以为NULL

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

      

      drop table if exists t_vip

      create table t_vip(

        id int,

        name varchar(255) unique,

        email varchar(255)

      );

      这张表这样创建是不符合我以上“新需求”的

      这样创建表示: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');

 

    联合唯一方法:

      

      drop table if exists t_vip

      create table t_vip(

        id int,

        name varchar(255) ,

        email varchar(255)

        unique(name,email)     //约束没有添加在列的后面,叫表级约束

      );

 

        需要多个字段联合起来约束的时候用表级约束

      注意:not null 只有列级约束,没有表级约束,unique有表级约束

 

   7.5、unique和not null联合

      

     drop table if exists t_vip

      create table t_vip(

        id int,

        name varchar(255) not null unique

      ):

    

 

       在mysql中,如果一个字段同时被not null和unique约束的话,该字段自动变为主键字段。

    注意:oracle不一样

posted @ 2022-01-23 15:24  doremi429  阅读(82)  评论(0编辑  收藏  举报